def create_poetry( self, cwd: Optional[Path] = None, io: Optional[IO] = None, disable_plugins: bool = False, ) -> Poetry: if io is None: io = NullIO() base_poetry = super(Factory, self).create_poetry(cwd) locker = Locker( base_poetry.file.parent / "poetry.lock", base_poetry.local_config ) # Loading global configuration config = self.create_config(io) # Loading local configuration local_config_file = TOMLFile(base_poetry.file.parent / "poetry.toml") if local_config_file.exists(): if io.is_debug(): io.write_line( "Loading configuration file {}".format(local_config_file.path) ) config.merge(local_config_file.read()) # Load local sources repositories = {} existing_repositories = config.get("repositories", {}) for source in base_poetry.pyproject.poetry_config.get("source", []): name = source.get("name") url = source.get("url") if name and url: if name not in existing_repositories: repositories[name] = {"url": url} config.merge({"repositories": repositories}) poetry = Poetry( base_poetry.file.path, base_poetry.local_config, base_poetry.package, locker, config, ) # Configuring sources self.configure_sources( poetry, poetry.local_config.get("source", []), config, io ) plugin_manager = PluginManager("plugin", disable_plugins=disable_plugins) plugin_manager.load_plugins() poetry.set_plugin_manager(plugin_manager) plugin_manager.activate(poetry, io) return poetry
def test_load_plugins_with_plugins_disabled( no_plugin_manager: PluginManager, poetry: Poetry, io: BufferedIO, with_my_plugin: None, ): no_plugin_manager.load_plugins() assert poetry.package.version.text == "1.2.3" assert io.fetch_output() == ""
def _load_plugins(self, io: "IO") -> None: if self._plugins_loaded: return self._disable_plugins = io.input.has_parameter_option("--no-plugins") if not self._disable_plugins: from poetry.plugins.plugin_manager import PluginManager manager = PluginManager("application.plugin") manager.load_plugins() manager.activate(self) self._plugins_loaded = True
def test_load_plugins_with_plugins_disabled( no_plugin_manager: PluginManager, poetry: Poetry, io: BufferedIO, mocker: MockerFixture, ): mocker.patch( "entrypoints.get_group_all", return_value=[ EntryPoint("my-plugin", "tests.plugins.test_plugin_manager", "MyPlugin") ], ) no_plugin_manager.load_plugins() assert poetry.package.version.text == "1.2.3" assert io.fetch_output() == ""
def _load_plugins(self, io: IO = None) -> None: if self._plugins_loaded: return if io is None: io = NullIO() self._disable_plugins = io.input.has_parameter_option("--no-plugins") if not self._disable_plugins: from poetry.plugins.application_plugin import ApplicationPlugin from poetry.plugins.plugin_manager import PluginManager manager = PluginManager(ApplicationPlugin.group) manager.load_plugins() manager.activate(self) self._plugins_loaded = True
def create_poetry( self, cwd: Path | None = None, io: IO | None = None, disable_plugins: bool = False, disable_cache: bool = False, ) -> Poetry: if io is None: io = NullIO() base_poetry = super().create_poetry(cwd) locker = Locker(base_poetry.file.parent / "poetry.lock", base_poetry.local_config) # Loading global configuration with warnings.catch_warnings(): # this is preserved to ensure export plugin tests pass in ci, # once poetry-plugin-export version is updated to use one that do not # use Factory.create_config(), this can be safely removed. warnings.filterwarnings("ignore", category=DeprecationWarning) config = self.create_config() # Loading local configuration local_config_file = TOMLFile(base_poetry.file.parent / "poetry.toml") if local_config_file.exists(): if io.is_debug(): io.write_line( f"Loading configuration file {local_config_file.path}") config.merge(local_config_file.read()) # Load local sources repositories = {} existing_repositories = config.get("repositories", {}) for source in base_poetry.pyproject.poetry_config.get("source", []): name = source.get("name") url = source.get("url") if name and url and name not in existing_repositories: repositories[name] = {"url": url} config.merge({"repositories": repositories}) poetry = Poetry( base_poetry.file.path, base_poetry.local_config, base_poetry.package, locker, config, ) # Configuring sources self.configure_sources( poetry, poetry.local_config.get("source", []), config, io, disable_cache=disable_cache, ) plugin_manager = PluginManager(Plugin.group, disable_plugins=disable_plugins) plugin_manager.load_plugins() poetry.set_plugin_manager(plugin_manager) plugin_manager.activate(poetry, io) return poetry