From 9d25293af5e3c8bdcd5d2a28b62f979cef082cd0 Mon Sep 17 00:00:00 2001 From: Arun Babu Neelicattu Date: Mon, 15 Nov 2021 09:59:48 +0100 Subject: [PATCH] Revert "Add support for multiple README files (#118)" This reverts commit f101162f573b929d79f4014b9fe5007e64e6cef8. --- poetry/core/factory.py | 25 +------------------ poetry/core/json/schemas/poetry-schema.json | 15 ++--------- poetry/core/masonry/metadata.py | 18 +++++++------ poetry/core/packages/package.py | 3 +-- tests/fixtures/with_readme_files/README-1.rst | 2 -- tests/fixtures/with_readme_files/README-2.rst | 2 -- .../fixtures/with_readme_files/pyproject.toml | 19 -------------- .../with_readme_files/single_python.py | 3 --- tests/masonry/builders/test_builder.py | 13 ---------- tests/test_factory.py | 22 +--------------- 10 files changed, 15 insertions(+), 107 deletions(-) delete mode 100644 tests/fixtures/with_readme_files/README-1.rst delete mode 100644 tests/fixtures/with_readme_files/README-2.rst delete mode 100644 tests/fixtures/with_readme_files/pyproject.toml delete mode 100644 tests/fixtures/with_readme_files/single_python.py diff --git a/poetry/core/factory.py b/poetry/core/factory.py index 2c7224f87..003a197ba 100644 --- a/poetry/core/factory.py +++ b/poetry/core/factory.py @@ -94,12 +94,7 @@ def configure_package( package.classifiers = config.get("classifiers", []) if "readme" in config: - if isinstance(config["readme"], str): - package.readmes = (root / config["readme"],) - else: - package.readmes = tuple(root / readme for readme in config["readme"]) - - package.description_type = cls._readme_content_type(package.readmes[0]) + package.readme = root / config["readme"] if "platform" in config: package.platform = config["platform"] @@ -424,14 +419,6 @@ def validate(cls, config: dict, strict: bool = False) -> Dict[str, List[str]]: ) ) - # Checking types of all readme files (must match) - if "readme" in config and not isinstance(config["readme"], str): - readme_types = [cls._readme_content_type(r) for r in config["readme"]] - if len(set(readme_types)) > 1: - result["errors"].append( - f"Declared README files must be of same type: found {', '.join(readme_types)}" - ) - return result @classmethod @@ -451,13 +438,3 @@ def locate(cls, cwd: Path) -> Path: cwd ) ) - - @staticmethod - def _readme_content_type(path: Union[str, Path]) -> str: - suffix = Path(path).suffix - if suffix == ".rst": - return "text/x-rst" - elif suffix in [".md", ".markdown"]: - return "text/markdown" - else: - return "text/plain" diff --git a/poetry/core/json/schemas/poetry-schema.json b/poetry/core/json/schemas/poetry-schema.json index 1a9484431..519f7b9be 100644 --- a/poetry/core/json/schemas/poetry-schema.json +++ b/poetry/core/json/schemas/poetry-schema.json @@ -55,19 +55,8 @@ "$ref": "#/definitions/maintainers" }, "readme": { - "anyOf": [ - { - "type": "string", - "description": "The path to the README file." - }, - { - "type": "array", - "description": "A list of paths to the readme files.", - "items": { - "type": "string" - } - } - ] + "type": "string", + "description": "The path to the README file" }, "classifiers": { "type": "array", diff --git a/poetry/core/masonry/metadata.py b/poetry/core/masonry/metadata.py index e7a643218..ebdf93f43 100644 --- a/poetry/core/masonry/metadata.py +++ b/poetry/core/masonry/metadata.py @@ -51,12 +51,9 @@ def from_package(cls, package: "Package") -> "Metadata": meta.name = canonicalize_name(package.name) meta.version = normalize_version(package.version.text) meta.summary = package.description - if package.readmes: - descriptions = [] - for readme in package.readmes: - with readme.open(encoding="utf-8") as f: - descriptions.append(f.read()) - meta.description = "\n".join(descriptions) + if package.readme: + with package.readme.open(encoding="utf-8") as f: + meta.description = f.read() meta.keywords = ",".join(package.keywords) meta.home_page = package.homepage or package.repository_url @@ -79,8 +76,13 @@ def from_package(cls, package: "Package") -> "Metadata": meta.requires_dist = [d.to_pep_508() for d in package.requires] # Version 2.1 - if package.description_type: - meta.description_content_type = package.description_type + if package.readme: + if package.readme.suffix == ".rst": + meta.description_content_type = "text/x-rst" + elif package.readme.suffix in [".md", ".markdown"]: + meta.description_content_type = "text/markdown" + else: + meta.description_content_type = "text/plain" meta.provides_extra = [e for e in package.extras] diff --git a/poetry/core/packages/package.py b/poetry/core/packages/package.py index 0c008f2e4..2c8e8a031 100644 --- a/poetry/core/packages/package.py +++ b/poetry/core/packages/package.py @@ -88,8 +88,7 @@ def __init__( self.documentation_url = None self.keywords = [] self._license = None - self.readmes = () - self.description_type = None + self.readme = None self.extras = {} self.requires_extras = [] diff --git a/tests/fixtures/with_readme_files/README-1.rst b/tests/fixtures/with_readme_files/README-1.rst deleted file mode 100644 index 265d70d6a..000000000 --- a/tests/fixtures/with_readme_files/README-1.rst +++ /dev/null @@ -1,2 +0,0 @@ -Single Python -============= diff --git a/tests/fixtures/with_readme_files/README-2.rst b/tests/fixtures/with_readme_files/README-2.rst deleted file mode 100644 index a5693d973..000000000 --- a/tests/fixtures/with_readme_files/README-2.rst +++ /dev/null @@ -1,2 +0,0 @@ -Changelog -========= diff --git a/tests/fixtures/with_readme_files/pyproject.toml b/tests/fixtures/with_readme_files/pyproject.toml deleted file mode 100644 index 850e51174..000000000 --- a/tests/fixtures/with_readme_files/pyproject.toml +++ /dev/null @@ -1,19 +0,0 @@ -[tool.poetry] -name = "single-python" -version = "0.1" -description = "Some description." -authors = [ - "Wagner Macedo " -] -license = "MIT" - -readme = [ - "README-1.rst", - "README-2.rst" -] - -homepage = "https://python-poetry.org/" - - -[tool.poetry.dependencies] -python = "2.7.15" diff --git a/tests/fixtures/with_readme_files/single_python.py b/tests/fixtures/with_readme_files/single_python.py deleted file mode 100644 index 7ef41c5d4..000000000 --- a/tests/fixtures/with_readme_files/single_python.py +++ /dev/null @@ -1,3 +0,0 @@ -"""Example module""" - -__version__ = "0.1" diff --git a/tests/masonry/builders/test_builder.py b/tests/masonry/builders/test_builder.py index bee8e8980..590266421 100644 --- a/tests/masonry/builders/test_builder.py +++ b/tests/masonry/builders/test_builder.py @@ -260,16 +260,3 @@ def test_builder_convert_script_files(fixture, result): project_root = Path(__file__).parent / "fixtures" / fixture script_files = Builder(Factory().create_poetry(project_root)).convert_script_files() assert [p.relative_to(project_root) for p in script_files] == result - - -def test_metadata_with_readme_files(): - test_path = Path(__file__).parent.parent.parent / "fixtures" / "with_readme_files" - builder = Builder(Factory().create_poetry(test_path)) - - metadata = Parser().parsestr(builder.get_metadata_content()) - - readme1 = test_path / "README-1.rst" - readme2 = test_path / "README-2.rst" - description = "\n".join([readme1.read_text(), readme2.read_text(), ""]) - - assert metadata.get_payload() == description diff --git a/tests/test_factory.py b/tests/test_factory.py index 5f7211b0e..76836b60f 100644 --- a/tests/test_factory.py +++ b/tests/test_factory.py @@ -23,7 +23,7 @@ def test_create_poetry(): assert package.authors == ["Sébastien Eustace "] assert package.license.id == "MIT" assert ( - package.readmes[0].relative_to(fixtures_dir).as_posix() + package.readme.relative_to(fixtures_dir).as_posix() == "sample_project/README.rst" ) assert package.homepage == "https://python-poetry.org" @@ -185,26 +185,6 @@ def test_validate_fails(): assert Factory.validate(content) == {"errors": [expected], "warnings": []} -def test_validate_multiple_readme_files(): - with_readme_files = TOMLFile(fixtures_dir / "with_readme_files" / "pyproject.toml") - content = with_readme_files.read()["tool"]["poetry"] - - assert Factory.validate(content, strict=True) == {"errors": [], "warnings": []} - - -def test_validate_fails_on_readme_files_with_unmatching_types(): - with_readme_files = TOMLFile(fixtures_dir / "with_readme_files" / "pyproject.toml") - content = with_readme_files.read()["tool"]["poetry"] - content["readme"][0] = "README.md" - - assert Factory.validate(content, strict=True) == { - "errors": [ - "Declared README files must be of same type: found text/markdown, text/x-rst" - ], - "warnings": [], - } - - def test_create_poetry_fails_on_invalid_configuration(): with pytest.raises(RuntimeError) as e: Factory().create_poetry(