diff --git a/src/monas/commands/bump.py b/src/monas/commands/bump.py index 6d12b36..d4a357e 100644 --- a/src/monas/commands/bump.py +++ b/src/monas/commands/bump.py @@ -133,7 +133,7 @@ def bump( info(f"Will bump version for [primary]{len(packages)}[/] package(s)") for pkg in packages: console.print( - f" [primary]{pkg.path.name}[/] [succ]{pkg.version}[/] -> " + f" [primary]{pkg.name}[/] [succ]{pkg.version}[/] -> " f"[succ]{version}[/]" ) if not Confirm.ask("Continue?", console=console, default=True): diff --git a/src/monas/commands/common.py b/src/monas/commands/common.py index 57f83e9..dd9551e 100644 --- a/src/monas/commands/common.py +++ b/src/monas/commands/common.py @@ -66,7 +66,7 @@ def list_packages( """List the packages.""" if json: data = [ - {"name": pkg.path.name, "version": pkg.version, "path": pkg.path.as_posix()} + {"name": pkg.name, "version": pkg.version, "path": pkg.path.as_posix()} for pkg in packages ] console.print_json(data=data) @@ -76,7 +76,7 @@ def list_packages( table.add_column("Version") table.add_column("Path", overflow="fold") for pkg in packages: - row = [f"[primary]{pkg.path.name}[/]"] + row = [f"[primary]{pkg.name}[/]"] if long: row.append(f"[succ]{pkg.version}[/]") row.append(f"[info]{pkg.path.relative_to(pkg.config.path).as_posix()}[/]") diff --git a/src/monas/commands/install.py b/src/monas/commands/install.py index 4db336b..00cbd22 100644 --- a/src/monas/commands/install.py +++ b/src/monas/commands/install.py @@ -46,11 +46,11 @@ def install(config: Config, *, concurrency: int, root: bool, **kwargs: Any) -> N def _on_complete(project: PyPackage, future: Future) -> None: if future.exception(): console.print( - f" [red bold]FAIL[/] {project.path.name} {future.exception()}" + f" [red bold]FAIL[/] {project.name} {future.exception()}" ) errors.append(future.exception()) else: - console.print(f" [succ]SUCC[/] {project.path.name}") + console.print(f" [succ]SUCC[/] {project.name}") with console.status( f"Installing [primary]{package_count}[/] package(s)", spinner="point" diff --git a/src/monas/commands/new.py b/src/monas/commands/new.py index 9d8dc40..f7131fc 100644 --- a/src/monas/commands/new.py +++ b/src/monas/commands/new.py @@ -28,7 +28,7 @@ def new( """ if location is None: location = config.package_paths[0] - if any(package == pkg.path.name for pkg in config.iter_packages()): + if any(package == pkg.name for pkg in config.iter_packages()): raise click.BadParameter(f"{package} already exists") package_path = Path(location, package).absolute() repo = config.get_repo() diff --git a/src/monas/commands/publish.py b/src/monas/commands/publish.py index 118a199..47d8aef 100644 --- a/src/monas/commands/publish.py +++ b/src/monas/commands/publish.py @@ -70,7 +70,7 @@ def publish( index = f"[succ]{repository}[/]" info(f"The following packages are to be built and published to {index}:") for pkg in packages_to_publish: - console.print(f" [primary]{pkg.path.name}[/] [succ]{pkg.version}[/]") + console.print(f" [primary]{pkg.name}[/] [succ]{pkg.version}[/]") if not Confirm.ask("Continue?", console=console, default=True): ctx.abort() dist = config.path / "dist" diff --git a/src/monas/metadata/base.py b/src/monas/metadata/base.py index 4c925d0..8ae6806 100644 --- a/src/monas/metadata/base.py +++ b/src/monas/metadata/base.py @@ -27,6 +27,11 @@ def version(self) -> str: """Get the project version""" pass + @abc.abstractproperty + def package_name(self) -> str: + """Get the project version""" + pass + @version.setter def version(self, value: str) -> None: """Set the project version""" diff --git a/src/monas/metadata/pep621.py b/src/monas/metadata/pep621.py index 8160beb..0710e27 100644 --- a/src/monas/metadata/pep621.py +++ b/src/monas/metadata/pep621.py @@ -34,6 +34,10 @@ def _write(self) -> None: def version(self) -> str: return self._data["project"]["version"] + @property + def package_name(self) -> str: + return self._data["project"]["name"] + @version.setter def version(self, value: str) -> None: self._data["project"]["version"] = value diff --git a/src/monas/metadata/setupcfg.py b/src/monas/metadata/setupcfg.py index a555a7b..e6ad3e7 100644 --- a/src/monas/metadata/setupcfg.py +++ b/src/monas/metadata/setupcfg.py @@ -41,6 +41,10 @@ def _write(self) -> None: def version(self) -> str: return self._parser.get("metadata", "version") + @property + def package_name(self) -> str: + return self._parser.get("metadata", "name") + @version.setter def version(self, value: str) -> None: self._parser["metadata"]["version"] = value diff --git a/src/monas/project.py b/src/monas/project.py index 33c4160..8f37e5d 100644 --- a/src/monas/project.py +++ b/src/monas/project.py @@ -91,10 +91,15 @@ def _get_metadata(self) -> Metadata: raise ValueError("Can't determine a metadata type from the pyproject.toml") return cast(Type[Metadata], result)(self.path) + @property + def name(self) -> str: + """Get the project name""" + return self.metadata.package_name + @property def canonical_name(self) -> str: """Get the project name""" - return canonicalize_name(self.path.name) + return canonicalize_name(self.name) @property def version(self) -> str: diff --git a/tests/conftest.py b/tests/conftest.py index 5e0d974..5bebf74 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -46,26 +46,29 @@ def python_version(): @pytest.fixture() def test_project(cli_run, project): run_command(["git", "init"], cwd=str(project)) - with mock.patch( - "monas.commands.new.ask_for", - side_effect=[ - { - "name": "foo", - "version": "0.0.0", - "author": "John", - "author_email": "john@doe.me", - "description": "Test Project", - "license_expr": "MIT", - "homepage": "https://example.org", - "requires_python": ">=3.7", - "build_backend": backend, - } - for backend in ["setuptools(setup.cfg)", "pdm", "flit"] - ], - ): - cli_run(["new", "foo"], cwd=project, input="\n") - cli_run(["new", "bar"], cwd=project, input="\n") - cli_run(["new", "foo-more", "extras"], cwd=project, input="\n") + projects = ( + (("new", "foo"), "setuptools(setup.cfg)"), + (("new", "bar"), "pdm"), + (("new", "foo-more", "extras"), "flit"), + ) + for cli_args, backend in projects: + with mock.patch( + "monas.commands.new.ask_for", + side_effect=[ + { + "name": cli_args[1], + "version": "0.0.0", + "author": "John", + "author_email": "john@doe.me", + "description": "Test Project", + "license_expr": "MIT", + "homepage": "https://example.org", + "requires_python": ">=3.7", + "build_backend": backend, + } + ], + ): + cli_run(cli_args, cwd=project, input="\n") run_command(["git", "add", "."], cwd=str(project)) run_command(["git", "commit", "-m", "Initial commit"], cwd=str(project)) return project