Commit 98c077b9 by Sébastien Eustace

Improve classifiers management

parent a22683a8
...@@ -7,12 +7,14 @@ ...@@ -7,12 +7,14 @@
- Added compatibility with Python 3.4 and 3.5. - Added compatibility with Python 3.4 and 3.5.
- Added the `version` command to automatically bump the package's version. - Added the `version` command to automatically bump the package's version.
- Added a standalone installer to install `poetry` isolated. - Added a standalone installer to install `poetry` isolated.
- Added support for classifiers in `pyproject.toml`.
### Changed ### Changed
- Improved dependency resolution to avoid unnecessary operations. - Improved dependency resolution to avoid unnecessary operations.
- Improved dependency resolution speed. - Improved dependency resolution speed.
- Improved CLI reactivity by deferring imports. - Improved CLI reactivity by deferring imports.
- License classifer is not automatically added to classifers.
### Fixed ### Fixed
......
...@@ -10,6 +10,6 @@ class CheckCommand(Command): ...@@ -10,6 +10,6 @@ class CheckCommand(Command):
def handle(self): def handle(self):
# Load poetry and display errors, if any # Load poetry and display errors, if any
_ = self.poetry self.poetry.check(self.poetry.config, strict=True)
self.info('All set!') self.info('All set!')
...@@ -50,6 +50,10 @@ ...@@ -50,6 +50,10 @@
"type": "string", "type": "string",
"description": "The path to the README file" "description": "The path to the README file"
}, },
"classifiers": {
"type": "array",
"description": "A list of trove classifers."
},
"dependencies": { "dependencies": {
"type": "object", "type": "object",
"description": "This is a hash of package name (keys) and version constraints (values) that are required to run this package.", "description": "This is a hash of package name (keys) and version constraints (values) that are required to run this package.",
......
...@@ -52,8 +52,8 @@ class Metadata: ...@@ -52,8 +52,8 @@ class Metadata:
meta.home_page = package.homepage or package.repository_url meta.home_page = package.homepage or package.repository_url
meta.author = package.author_name meta.author = package.author_name
meta.author_email = package.author_email meta.author_email = package.author_email
meta.license = package.license meta.license = package.license.id
meta.classifiers = package.classifiers meta.classifiers = package.all_classifiers
# Version 1.2 # Version 1.2
meta.maintainer = meta.author meta.maintainer = meta.author
......
...@@ -5,6 +5,8 @@ from poetry.semver.constraints import Constraint ...@@ -5,6 +5,8 @@ from poetry.semver.constraints import Constraint
from poetry.semver.constraints import EmptyConstraint from poetry.semver.constraints import EmptyConstraint
from poetry.semver.helpers import parse_stability from poetry.semver.helpers import parse_stability
from poetry.semver.version_parser import VersionParser from poetry.semver.version_parser import VersionParser
from poetry.spdx import license_by_id
from poetry.spdx import License
from poetry.version import parse as parse_version from poetry.version import parse as parse_version
from .constraints.generic_constraint import GenericConstraint from .constraints.generic_constraint import GenericConstraint
...@@ -68,7 +70,7 @@ class Package: ...@@ -68,7 +70,7 @@ class Package:
self.homepage = None self.homepage = None
self.repository_url = None self.repository_url = None
self.keywords = [] self.keywords = []
self.license = None self._license = None
self.readme = None self.readme = None
self.source_type = '' self.source_type = ''
...@@ -92,6 +94,8 @@ class Package: ...@@ -92,6 +94,8 @@ class Package:
self.include = [] self.include = []
self.exclude = [] self.exclude = []
self.classifiers = []
self._python_versions = '*' self._python_versions = '*'
self._python_constraint = self._parser.parse_constraints('*') self._python_constraint = self._parser.parse_constraints('*')
self._platform = '*' self._platform = '*'
...@@ -189,8 +193,21 @@ class Package: ...@@ -189,8 +193,21 @@ class Package:
return self._platform_constraint return self._platform_constraint
@property @property
def classifiers(self): def license(self):
classifiers = [] return self._license
@license.setter
def license(self, value):
if value is None:
self._license = license
elif isinstance(value, License):
self._license = license
else:
self._license = license_by_id(value)
@property
def all_classifiers(self):
classifiers = self.classifiers.copy()
# Automatically set python classifiers # Automatically set python classifiers
parser = VersionParser() parser = VersionParser()
...@@ -210,7 +227,12 @@ class Package: ...@@ -210,7 +227,12 @@ class Package:
'Programming Language :: Python :: {}'.format(version) 'Programming Language :: Python :: {}'.format(version)
) )
return classifiers # Automatically set license classifers
classifiers.append(self.license.classifier)
classifiers = set(classifiers)
return sorted(classifiers)
def is_dev(self): def is_dev(self):
return self._dev return self._dev
......
...@@ -11,6 +11,7 @@ from .packages import Locker ...@@ -11,6 +11,7 @@ from .packages import Locker
from .packages import Package from .packages import Package
from .repositories import Pool from .repositories import Pool
from .repositories.pypi_repository import PyPiRepository from .repositories.pypi_repository import PyPiRepository
from .spdx import license_by_id
from .utils.toml_file import TomlFile from .utils.toml_file import TomlFile
...@@ -88,6 +89,7 @@ class Poetry: ...@@ -88,6 +89,7 @@ class Poetry:
package.repository_url = local_config.get('repository') package.repository_url = local_config.get('repository')
package.license = local_config.get('license') package.license = local_config.get('license')
package.keywords = local_config.get('keywords', []) package.keywords = local_config.get('keywords', [])
package.classifiers = local_config.get('classifiers', [])
if 'readme' in local_config: if 'readme' in local_config:
package.readme = Path(cwd) / local_config['readme'] package.readme = Path(cwd) / local_config['readme']
...@@ -163,4 +165,15 @@ class Poetry: ...@@ -163,4 +165,15 @@ class Poetry:
raise InvalidProjectFile(message) raise InvalidProjectFile(message)
if strict:
# If strict, check the file more thoroughly
# Checking license
license = config.get('license')
if license:
try:
license_by_id(license)
except ValueError:
raise InvalidProjectFile('Invalid license')
return True return True
import json
import os
from .license import License
from .updater import Updater
_licenses = None
def license_by_id(identifier):
if _licenses is None:
load_licenses()
id = identifier.lower()
if id not in _licenses:
raise ValueError('Invalid license id: {}'.format(identifier))
return _licenses[id]
def load_licenses():
global _licenses
_licenses = {}
licenses_file = os.path.join(
os.path.dirname(__file__),
'data',
'licenses.json'
)
with open(licenses_file) as f:
data = json.loads(f.read())
for name, license in data.items():
_licenses[name.lower()] = License(
name, license[0], license[1], license[2]
)
if __name__ == '__main__':
updater = Updater()
updater.dump()
{
"0BSD": [
"BSD Zero Clause License",
false,
false
],
"AAL": [
"Attribution Assurance License",
true,
false
],
"ADSL": [
"Amazon Digital Services License",
false,
false
],
"AFL-1.1": [
"Academic Free License v1.1",
true,
false
],
"AFL-1.2": [
"Academic Free License v1.2",
true,
false
],
"AFL-2.0": [
"Academic Free License v2.0",
true,
false
],
"AFL-2.1": [
"Academic Free License v2.1",
true,
false
],
"AFL-3.0": [
"Academic Free License v3.0",
true,
false
],
"AGPL-1.0": [
"Affero General Public License v1.0",
false,
false
],
"AGPL-3.0": [
"GNU Affero General Public License v3.0",
true,
true
],
"AGPL-3.0-only": [
"GNU Affero General Public License v3.0 only",
true,
false
],
"AGPL-3.0-or-later": [
"GNU Affero General Public License v3.0 or later",
true,
false
],
"AMDPLPA": [
"AMD's plpa_map.c License",
false,
false
],
"AML": [
"Apple MIT License",
false,
false
],
"AMPAS": [
"Academy of Motion Picture Arts and Sciences BSD",
false,
false
],
"ANTLR-PD": [
"ANTLR Software Rights Notice",
false,
false
],
"APAFML": [
"Adobe Postscript AFM License",
false,
false
],
"APL-1.0": [
"Adaptive Public License 1.0",
true,
false
],
"APSL-1.0": [
"Apple Public Source License 1.0",
true,
false
],
"APSL-1.1": [
"Apple Public Source License 1.1",
true,
false
],
"APSL-1.2": [
"Apple Public Source License 1.2",
true,
false
],
"APSL-2.0": [
"Apple Public Source License 2.0",
true,
false
],
"Abstyles": [
"Abstyles License",
false,
false
],
"Adobe-2006": [
"Adobe Systems Incorporated Source Code License Agreement",
false,
false
],
"Adobe-Glyph": [
"Adobe Glyph List License",
false,
false
],
"Afmparse": [
"Afmparse License",
false,
false
],
"Aladdin": [
"Aladdin Free Public License",
false,
false
],
"Apache-1.0": [
"Apache License 1.0",
false,
false
],
"Apache-1.1": [
"Apache License 1.1",
true,
false
],
"Apache-2.0": [
"Apache License 2.0",
true,
false
],
"Artistic-1.0": [
"Artistic License 1.0",
true,
false
],
"Artistic-1.0-Perl": [
"Artistic License 1.0 (Perl)",
true,
false
],
"Artistic-1.0-cl8": [
"Artistic License 1.0 w/clause 8",
true,
false
],
"Artistic-2.0": [
"Artistic License 2.0",
true,
false
],
"BSD-1-Clause": [
"BSD 1-Clause License",
false,
false
],
"BSD-2-Clause": [
"BSD 2-Clause \"Simplified\" License",
true,
false
],
"BSD-2-Clause-FreeBSD": [
"BSD 2-Clause FreeBSD License",
false,
false
],
"BSD-2-Clause-NetBSD": [
"BSD 2-Clause NetBSD License",
false,
false
],
"BSD-2-Clause-Patent": [
"BSD-2-Clause Plus Patent License",
true,
false
],
"BSD-3-Clause": [
"BSD 3-Clause \"New\" or \"Revised\" License",
true,
false
],
"BSD-3-Clause-Attribution": [
"BSD with attribution",
false,
false
],
"BSD-3-Clause-Clear": [
"BSD 3-Clause Clear License",
false,
false
],
"BSD-3-Clause-LBNL": [
"Lawrence Berkeley National Labs BSD variant license",
false,
false
],
"BSD-3-Clause-No-Nuclear-License": [
"BSD 3-Clause No Nuclear License",
false,
false
],
"BSD-3-Clause-No-Nuclear-License-2014": [
"BSD 3-Clause No Nuclear License 2014",
false,
false
],
"BSD-3-Clause-No-Nuclear-Warranty": [
"BSD 3-Clause No Nuclear Warranty",
false,
false
],
"BSD-4-Clause": [
"BSD 4-Clause \"Original\" or \"Old\" License",
false,
false
],
"BSD-4-Clause-UC": [
"BSD-4-Clause (University of California-Specific)",
false,
false
],
"BSD-Protection": [
"BSD Protection License",
false,
false
],
"BSD-Source-Code": [
"BSD Source Code Attribution",
false,
false
],
"BSL-1.0": [
"Boost Software License 1.0",
true,
false
],
"Bahyph": [
"Bahyph License",
false,
false
],
"Barr": [
"Barr License",
false,
false
],
"Beerware": [
"Beerware License",
false,
false
],
"BitTorrent-1.0": [
"BitTorrent Open Source License v1.0",
false,
false
],
"BitTorrent-1.1": [
"BitTorrent Open Source License v1.1",
false,
false
],
"Borceux": [
"Borceux license",
false,
false
],
"CATOSL-1.1": [
"Computer Associates Trusted Open Source License 1.1",
true,
false
],
"CC-BY-1.0": [
"Creative Commons Attribution 1.0",
false,
false
],
"CC-BY-2.0": [
"Creative Commons Attribution 2.0",
false,
false
],
"CC-BY-2.5": [
"Creative Commons Attribution 2.5",
false,
false
],
"CC-BY-3.0": [
"Creative Commons Attribution 3.0",
false,
false
],
"CC-BY-4.0": [
"Creative Commons Attribution 4.0",
false,
false
],
"CC-BY-NC-1.0": [
"Creative Commons Attribution Non Commercial 1.0",
false,
false
],
"CC-BY-NC-2.0": [
"Creative Commons Attribution Non Commercial 2.0",
false,
false
],
"CC-BY-NC-2.5": [
"Creative Commons Attribution Non Commercial 2.5",
false,
false
],
"CC-BY-NC-3.0": [
"Creative Commons Attribution Non Commercial 3.0",
false,
false
],
"CC-BY-NC-4.0": [
"Creative Commons Attribution Non Commercial 4.0",
false,
false
],
"CC-BY-NC-ND-1.0": [
"Creative Commons Attribution Non Commercial No Derivatives 1.0",
false,
false
],
"CC-BY-NC-ND-2.0": [
"Creative Commons Attribution Non Commercial No Derivatives 2.0",
false,
false
],
"CC-BY-NC-ND-2.5": [
"Creative Commons Attribution Non Commercial No Derivatives 2.5",
false,
false
],
"CC-BY-NC-ND-3.0": [
"Creative Commons Attribution Non Commercial No Derivatives 3.0",
false,
false
],
"CC-BY-NC-ND-4.0": [
"Creative Commons Attribution Non Commercial No Derivatives 4.0",
false,
false
],
"CC-BY-NC-SA-1.0": [
"Creative Commons Attribution Non Commercial Share Alike 1.0",
false,
false
],
"CC-BY-NC-SA-2.0": [
"Creative Commons Attribution Non Commercial Share Alike 2.0",
false,
false
],
"CC-BY-NC-SA-2.5": [
"Creative Commons Attribution Non Commercial Share Alike 2.5",
false,
false
],
"CC-BY-NC-SA-3.0": [
"Creative Commons Attribution Non Commercial Share Alike 3.0",
false,
false
],
"CC-BY-NC-SA-4.0": [
"Creative Commons Attribution Non Commercial Share Alike 4.0",
false,
false
],
"CC-BY-ND-1.0": [
"Creative Commons Attribution No Derivatives 1.0",
false,
false
],
"CC-BY-ND-2.0": [
"Creative Commons Attribution No Derivatives 2.0",
false,
false
],
"CC-BY-ND-2.5": [
"Creative Commons Attribution No Derivatives 2.5",
false,
false
],
"CC-BY-ND-3.0": [
"Creative Commons Attribution No Derivatives 3.0",
false,
false
],
"CC-BY-ND-4.0": [
"Creative Commons Attribution No Derivatives 4.0",
false,
false
],
"CC-BY-SA-1.0": [
"Creative Commons Attribution Share Alike 1.0",
false,
false
],
"CC-BY-SA-2.0": [
"Creative Commons Attribution Share Alike 2.0",
false,
false
],
"CC-BY-SA-2.5": [
"Creative Commons Attribution Share Alike 2.5",
false,
false
],
"CC-BY-SA-3.0": [
"Creative Commons Attribution Share Alike 3.0",
false,
false
],
"CC-BY-SA-4.0": [
"Creative Commons Attribution Share Alike 4.0",
false,
false
],
"CC0-1.0": [
"Creative Commons Zero v1.0 Universal",
false,
false
],
"CDDL-1.0": [
"Common Development and Distribution License 1.0",
true,
false
],
"CDDL-1.1": [
"Common Development and Distribution License 1.1",
false,
false
],
"CDLA-Permissive-1.0": [
"Community Data License Agreement Permissive 1.0",
false,
false
],
"CDLA-Sharing-1.0": [
"Community Data License Agreement Sharing 1.0",
false,
false
],
"CECILL-1.0": [
"CeCILL Free Software License Agreement v1.0",
false,
false
],
"CECILL-1.1": [
"CeCILL Free Software License Agreement v1.1",
false,
false
],
"CECILL-2.0": [
"CeCILL Free Software License Agreement v2.0",
false,
false
],
"CECILL-2.1": [
"CeCILL Free Software License Agreement v2.1",
true,
false
],
"CECILL-B": [
"CeCILL-B Free Software License Agreement",
false,
false
],
"CECILL-C": [
"CeCILL-C Free Software License Agreement",
false,
false
],
"CNRI-Jython": [
"CNRI Jython License",
false,
false
],
"CNRI-Python": [
"CNRI Python License",
true,
false
],
"CNRI-Python-GPL-Compatible": [
"CNRI Python Open Source GPL Compatible License Agreement",
false,
false
],
"CPAL-1.0": [
"Common Public Attribution License 1.0",
true,
false
],
"CPL-1.0": [
"Common Public License 1.0",
true,
false
],
"CPOL-1.02": [
"Code Project Open License 1.02",
false,
false
],
"CUA-OPL-1.0": [
"CUA Office Public License v1.0",
true,
false
],
"Caldera": [
"Caldera License",
false,
false
],
"ClArtistic": [
"Clarified Artistic License",
false,
false
],
"Condor-1.1": [
"Condor Public License v1.1",
false,
false
],
"Crossword": [
"Crossword License",
false,
false
],
"CrystalStacker": [
"CrystalStacker License",
false,
false
],
"Cube": [
"Cube License",
false,
false
],
"D-FSL-1.0": [
"Deutsche Freie Software Lizenz",
false,
false
],
"DOC": [
"DOC License",
false,
false
],
"DSDP": [
"DSDP License",
false,
false
],
"Dotseqn": [
"Dotseqn License",
false,
false
],
"ECL-1.0": [
"Educational Community License v1.0",
true,
false
],
"ECL-2.0": [
"Educational Community License v2.0",
true,
false
],
"EFL-1.0": [
"Eiffel Forum License v1.0",
true,
false
],
"EFL-2.0": [
"Eiffel Forum License v2.0",
true,
false
],
"EPL-1.0": [
"Eclipse Public License 1.0",
true,
false
],
"EPL-2.0": [
"Eclipse Public License 2.0",
true,
false
],
"EUDatagrid": [
"EU DataGrid Software License",
true,
false
],
"EUPL-1.0": [
"European Union Public License 1.0",
false,
false
],
"EUPL-1.1": [
"European Union Public License 1.1",
true,
false
],
"EUPL-1.2": [
"European Union Public License 1.2",
true,
false
],
"Entessa": [
"Entessa Public License v1.0",
true,
false
],
"ErlPL-1.1": [
"Erlang Public License v1.1",
false,
false
],
"Eurosym": [
"Eurosym License",
false,
false
],
"FSFAP": [
"FSF All Permissive License",
false,
false
],
"FSFUL": [
"FSF Unlimited License",
false,
false
],
"FSFULLR": [
"FSF Unlimited License (with License Retention)",
false,
false
],
"FTL": [
"Freetype Project License",
false,
false
],
"Fair": [
"Fair License",
true,
false
],
"Frameworx-1.0": [
"Frameworx Open License 1.0",
true,
false
],
"FreeImage": [
"FreeImage Public License v1.0",
false,
false
],
"GFDL-1.1": [
"GNU Free Documentation License v1.1",
false,
true
],
"GFDL-1.1-only": [
"GNU Free Documentation License v1.1 only",
false,
false
],
"GFDL-1.1-or-later": [
"GNU Free Documentation License v1.1 or later",
false,
false
],
"GFDL-1.2": [
"GNU Free Documentation License v1.2",
false,
true
],
"GFDL-1.2-only": [
"GNU Free Documentation License v1.2 only",
false,
false
],
"GFDL-1.2-or-later": [
"GNU Free Documentation License v1.2 or later",
false,
false
],
"GFDL-1.3": [
"GNU Free Documentation License v1.3",
false,
true
],
"GFDL-1.3-only": [
"GNU Free Documentation License v1.3 only",
false,
false
],
"GFDL-1.3-or-later": [
"GNU Free Documentation License v1.3 or later",
false,
false
],
"GL2PS": [
"GL2PS License",
false,
false
],
"GPL-1.0": [
"GNU General Public License v1.0 only",
false,
true
],
"GPL-1.0+": [
"GNU General Public License v1.0 or later",
false,
true
],
"GPL-1.0-only": [
"GNU General Public License v1.0 only",
false,
false
],
"GPL-1.0-or-later": [
"GNU General Public License v1.0 or later",
false,
false
],
"GPL-2.0": [
"GNU General Public License v2.0 only",
true,
true
],
"GPL-2.0+": [
"GNU General Public License v2.0 or later",
true,
true
],
"GPL-2.0-only": [
"GNU General Public License v2.0 only",
true,
false
],
"GPL-2.0-or-later": [
"GNU General Public License v2.0 or later",
true,
false
],
"GPL-2.0-with-GCC-exception": [
"GNU General Public License v2.0 w/GCC Runtime Library exception",
false,
true
],
"GPL-2.0-with-autoconf-exception": [
"GNU General Public License v2.0 w/Autoconf exception",
false,
true
],
"GPL-2.0-with-bison-exception": [
"GNU General Public License v2.0 w/Bison exception",
false,
true
],
"GPL-2.0-with-classpath-exception": [
"GNU General Public License v2.0 w/Classpath exception",
false,
true
],
"GPL-2.0-with-font-exception": [
"GNU General Public License v2.0 w/Font exception",
false,
true
],
"GPL-3.0": [
"GNU General Public License v3.0 only",
true,
true
],
"GPL-3.0+": [
"GNU General Public License v3.0 or later",
true,
true
],
"GPL-3.0-only": [
"GNU General Public License v3.0 only",
true,
false
],
"GPL-3.0-or-later": [
"GNU General Public License v3.0 or later",
true,
false
],
"GPL-3.0-with-GCC-exception": [
"GNU General Public License v3.0 w/GCC Runtime Library exception",
true,
true
],
"GPL-3.0-with-autoconf-exception": [
"GNU General Public License v3.0 w/Autoconf exception",
false,
true
],
"Giftware": [
"Giftware License",
false,
false
],
"Glide": [
"3dfx Glide License",
false,
false
],
"Glulxe": [
"Glulxe License",
false,
false
],
"HPND": [
"Historical Permission Notice and Disclaimer",
true,
false
],
"HaskellReport": [
"Haskell Language Report License",
false,
false
],
"IBM-pibs": [
"IBM PowerPC Initialization and Boot Software",
false,
false
],
"ICU": [
"ICU License",
false,
false
],
"IJG": [
"Independent JPEG Group License",
false,
false
],
"IPA": [
"IPA Font License",
true,
false
],
"IPL-1.0": [
"IBM Public License v1.0",
true,
false
],
"ISC": [
"ISC License",
true,
false
],
"ImageMagick": [
"ImageMagick License",
false,
false
],
"Imlib2": [
"Imlib2 License",
false,
false
],
"Info-ZIP": [
"Info-ZIP License",
false,
false
],
"Intel": [
"Intel Open Source License",
true,
false
],
"Intel-ACPI": [
"Intel ACPI Software License Agreement",
false,
false
],
"Interbase-1.0": [
"Interbase Public License v1.0",
false,
false
],
"JSON": [
"JSON License",
false,
false
],
"JasPer-2.0": [
"JasPer License",
false,
false
],
"LAL-1.2": [
"Licence Art Libre 1.2",
false,
false
],
"LAL-1.3": [
"Licence Art Libre 1.3",
false,
false
],
"LGPL-2.0": [
"GNU Library General Public License v2 only",
true,
true
],
"LGPL-2.0+": [
"GNU Library General Public License v2 or later",
true,
true
],
"LGPL-2.0-only": [
"GNU Library General Public License v2 only",
true,
false
],
"LGPL-2.0-or-later": [
"GNU Library General Public License v2 or later",
true,
false
],
"LGPL-2.1": [
"GNU Lesser General Public License v2.1 only",
true,
true
],
"LGPL-2.1+": [
"GNU Library General Public License v2 or later",
true,
true
],
"LGPL-2.1-only": [
"GNU Lesser General Public License v2.1 only",
true,
false
],
"LGPL-2.1-or-later": [
"GNU Lesser General Public License v2.1 or later",
true,
false
],
"LGPL-3.0": [
"GNU Lesser General Public License v3.0 only",
true,
true
],
"LGPL-3.0+": [
"GNU Lesser General Public License v3.0 or later",
true,
true
],
"LGPL-3.0-only": [
"GNU Lesser General Public License v3.0 only",
true,
false
],
"LGPL-3.0-or-later": [
"GNU Lesser General Public License v3.0 or later",
true,
false
],
"LGPLLR": [
"Lesser General Public License For Linguistic Resources",
false,
false
],
"LPL-1.0": [
"Lucent Public License Version 1.0",
true,
false
],
"LPL-1.02": [
"Lucent Public License v1.02",
true,
false
],
"LPPL-1.0": [
"LaTeX Project Public License v1.0",
false,
false
],
"LPPL-1.1": [
"LaTeX Project Public License v1.1",
false,
false
],
"LPPL-1.2": [
"LaTeX Project Public License v1.2",
false,
false
],
"LPPL-1.3a": [
"LaTeX Project Public License v1.3a",
false,
false
],
"LPPL-1.3c": [
"LaTeX Project Public License v1.3c",
true,
false
],
"Latex2e": [
"Latex2e License",
false,
false
],
"Leptonica": [
"Leptonica License",
false,
false
],
"LiLiQ-P-1.1": [
"Licence Libre du Qu\u00e9bec \u2013 Permissive version 1.1",
true,
false
],
"LiLiQ-R-1.1": [
"Licence Libre du Qu\u00e9bec \u2013 R\u00e9ciprocit\u00e9 version 1.1",
true,
false
],
"LiLiQ-Rplus-1.1": [
"Licence Libre du Qu\u00e9bec \u2013 R\u00e9ciprocit\u00e9 forte version 1.1",
true,
false
],
"Libpng": [
"libpng License",
false,
false
],
"MIT": [
"MIT License",
true,
false
],
"MIT-CMU": [
"CMU License",
false,
false
],
"MIT-advertising": [
"Enlightenment License (e16)",
false,
false
],
"MIT-enna": [
"enna License",
false,
false
],
"MIT-feh": [
"feh License",
false,
false
],
"MITNFA": [
"MIT +no-false-attribs license",
false,
false
],
"MPL-1.0": [
"Mozilla Public License 1.0",
true,
false
],
"MPL-1.1": [
"Mozilla Public License 1.1",
true,
false
],
"MPL-2.0": [
"Mozilla Public License 2.0",
true,
false
],
"MPL-2.0-no-copyleft-exception": [
"Mozilla Public License 2.0 (no copyleft exception)",
true,
false
],
"MS-PL": [
"Microsoft Public License",
true,
false
],
"MS-RL": [
"Microsoft Reciprocal License",
true,
false
],
"MTLL": [
"Matrix Template Library License",
false,
false
],
"MakeIndex": [
"MakeIndex License",
false,
false
],
"MirOS": [
"MirOS License",
true,
false
],
"Motosoto": [
"Motosoto License",
true,
false
],
"Multics": [
"Multics License",
true,
false
],
"Mup": [
"Mup License",
false,
false
],
"NASA-1.3": [
"NASA Open Source Agreement 1.3",
true,
false
],
"NBPL-1.0": [
"Net Boolean Public License v1",
false,
false
],
"NCSA": [
"University of Illinois/NCSA Open Source License",
true,
false
],
"NGPL": [
"Nethack General Public License",
true,
false
],
"NLOD-1.0": [
"Norwegian Licence for Open Government Data",
false,
false
],
"NLPL": [
"No Limit Public License",
false,
false
],
"NOSL": [
"Netizen Open Source License",
false,
false
],
"NPL-1.0": [
"Netscape Public License v1.0",
false,
false
],
"NPL-1.1": [
"Netscape Public License v1.1",
false,
false
],
"NPOSL-3.0": [
"Non-Profit Open Software License 3.0",
true,
false
],
"NRL": [
"NRL License",
false,
false
],
"NTP": [
"NTP License",
true,
false
],
"Naumen": [
"Naumen Public License",
true,
false
],
"Net-SNMP": [
"Net-SNMP License",
false,
false
],
"NetCDF": [
"NetCDF license",
false,
false
],
"Newsletr": [
"Newsletr License",
false,
false
],
"Nokia": [
"Nokia Open Source License",
true,
false
],
"Noweb": [
"Noweb License",
false,
false
],
"Nunit": [
"Nunit License",
false,
true
],
"OCCT-PL": [
"Open CASCADE Technology Public License",
false,
false
],
"OCLC-2.0": [
"OCLC Research Public License 2.0",
true,
false
],
"ODbL-1.0": [
"ODC Open Database License v1.0",
false,
false
],
"OFL-1.0": [
"SIL Open Font License 1.0",
false,
false
],
"OFL-1.1": [
"SIL Open Font License 1.1",
true,
false
],
"OGTSL": [
"Open Group Test Suite License",
true,
false
],
"OLDAP-1.1": [
"Open LDAP Public License v1.1",
false,
false
],
"OLDAP-1.2": [
"Open LDAP Public License v1.2",
false,
false
],
"OLDAP-1.3": [
"Open LDAP Public License v1.3",
false,
false
],
"OLDAP-1.4": [
"Open LDAP Public License v1.4",
false,
false
],
"OLDAP-2.0": [
"Open LDAP Public License v2.0 (or possibly 2.0A and 2.0B)",
false,
false
],
"OLDAP-2.0.1": [
"Open LDAP Public License v2.0.1",
false,
false
],
"OLDAP-2.1": [
"Open LDAP Public License v2.1",
false,
false
],
"OLDAP-2.2": [
"Open LDAP Public License v2.2",
false,
false
],
"OLDAP-2.2.1": [
"Open LDAP Public License v2.2.1",
false,
false
],
"OLDAP-2.2.2": [
"Open LDAP Public License 2.2.2",
false,
false
],
"OLDAP-2.3": [
"Open LDAP Public License v2.3",
false,
false
],
"OLDAP-2.4": [
"Open LDAP Public License v2.4",
false,
false
],
"OLDAP-2.5": [
"Open LDAP Public License v2.5",
false,
false
],
"OLDAP-2.6": [
"Open LDAP Public License v2.6",
false,
false
],
"OLDAP-2.7": [
"Open LDAP Public License v2.7",
false,
false
],
"OLDAP-2.8": [
"Open LDAP Public License v2.8",
false,
false
],
"OML": [
"Open Market License",
false,
false
],
"OPL-1.0": [
"Open Public License v1.0",
false,
false
],
"OSET-PL-2.1": [
"OSET Public License version 2.1",
true,
false
],
"OSL-1.0": [
"Open Software License 1.0",
true,
false
],
"OSL-1.1": [
"Open Software License 1.1",
false,
false
],
"OSL-2.0": [
"Open Software License 2.0",
true,
false
],
"OSL-2.1": [
"Open Software License 2.1",
true,
false
],
"OSL-3.0": [
"Open Software License 3.0",
true,
false
],
"OpenSSL": [
"OpenSSL License",
false,
false
],
"PDDL-1.0": [
"ODC Public Domain Dedication & License 1.0",
false,
false
],
"PHP-3.0": [
"PHP License v3.0",
true,
false
],
"PHP-3.01": [
"PHP License v3.01",
false,
false
],
"Plexus": [
"Plexus Classworlds License",
false,
false
],
"PostgreSQL": [
"PostgreSQL License",
true,
false
],
"Python-2.0": [
"Python License 2.0",
true,
false
],
"QPL-1.0": [
"Q Public License 1.0",
true,
false
],
"Qhull": [
"Qhull License",
false,
false
],
"RHeCos-1.1": [
"Red Hat eCos Public License v1.1",
false,
false
],
"RPL-1.1": [
"Reciprocal Public License 1.1",
true,
false
],
"RPL-1.5": [
"Reciprocal Public License 1.5",
true,
false
],
"RPSL-1.0": [
"RealNetworks Public Source License v1.0",
true,
false
],
"RSA-MD": [
"RSA Message-Digest License ",
false,
false
],
"RSCPL": [
"Ricoh Source Code Public License",
true,
false
],
"Rdisc": [
"Rdisc License",
false,
false
],
"Ruby": [
"Ruby License",
false,
false
],
"SAX-PD": [
"Sax Public Domain Notice",
false,
false
],
"SCEA": [
"SCEA Shared Source License",
false,
false
],
"SGI-B-1.0": [
"SGI Free Software License B v1.0",
false,
false
],
"SGI-B-1.1": [
"SGI Free Software License B v1.1",
false,
false
],
"SGI-B-2.0": [
"SGI Free Software License B v2.0",
false,
false
],
"SISSL": [
"Sun Industry Standards Source License v1.1",
true,
false
],
"SISSL-1.2": [
"Sun Industry Standards Source License v1.2",
false,
false
],
"SMLNJ": [
"Standard ML of New Jersey License",
false,
false
],
"SMPPL": [
"Secure Messaging Protocol Public License",
false,
false
],
"SNIA": [
"SNIA Public License 1.1",
false,
false
],
"SPL-1.0": [
"Sun Public License v1.0",
true,
false
],
"SWL": [
"Scheme Widget Library (SWL) Software License Agreement",
false,
false
],
"Saxpath": [
"Saxpath License",
false,
false
],
"Sendmail": [
"Sendmail License",
false,
false
],
"SimPL-2.0": [
"Simple Public License 2.0",
true,
false
],
"Sleepycat": [
"Sleepycat License",
true,
false
],
"Spencer-86": [
"Spencer License 86",
false,
false
],
"Spencer-94": [
"Spencer License 94",
false,
false
],
"Spencer-99": [
"Spencer License 99",
false,
false
],
"StandardML-NJ": [
"Standard ML of New Jersey License",
false,
true
],
"SugarCRM-1.1.3": [
"SugarCRM Public License v1.1.3",
false,
false
],
"TCL": [
"TCL/TK License",
false,
false
],
"TCP-wrappers": [
"TCP Wrappers License",
false,
false
],
"TMate": [
"TMate Open Source License",
false,
false
],
"TORQUE-1.1": [
"TORQUE v2.5+ Software License v1.1",
false,
false
],
"TOSL": [
"Trusster Open Source License",
false,
false
],
"UPL-1.0": [
"Universal Permissive License v1.0",
true,
false
],
"Unicode-DFS-2015": [
"Unicode License Agreement - Data Files and Software (2015)",
false,
false
],
"Unicode-DFS-2016": [
"Unicode License Agreement - Data Files and Software (2016)",
false,
false
],
"Unicode-TOU": [
"Unicode Terms of Use",
false,
false
],
"Unlicense": [
"The Unlicense",
false,
false
],
"VOSTROM": [
"VOSTROM Public License for Open Source",
false,
false
],
"VSL-1.0": [
"Vovida Software License v1.0",
true,
false
],
"Vim": [
"Vim License",
false,
false
],
"W3C": [
"W3C Software Notice and License (2002-12-31)",
true,
false
],
"W3C-19980720": [
"W3C Software Notice and License (1998-07-20)",
false,
false
],
"W3C-20150513": [
"W3C Software Notice and Document License (2015-05-13)",
false,
false
],
"WTFPL": [
"Do What The F*ck You Want To Public License",
false,
false
],
"Watcom-1.0": [
"Sybase Open Watcom Public License 1.0",
true,
false
],
"Wsuipa": [
"Wsuipa License",
false,
false
],
"X11": [
"X11 License",
false,
false
],
"XFree86-1.1": [
"XFree86 License 1.1",
false,
false
],
"XSkat": [
"XSkat License",
false,
false
],
"Xerox": [
"Xerox License",
false,
false
],
"Xnet": [
"X.Net License",
true,
false
],
"YPL-1.0": [
"Yahoo! Public License v1.0",
false,
false
],
"YPL-1.1": [
"Yahoo! Public License v1.1",
false,
false
],
"ZPL-1.1": [
"Zope Public License 1.1",
false,
false
],
"ZPL-2.0": [
"Zope Public License 2.0",
true,
false
],
"ZPL-2.1": [
"Zope Public License 2.1",
false,
false
],
"Zed": [
"Zed License",
false,
false
],
"Zend-2.0": [
"Zend License v2.0",
false,
false
],
"Zimbra-1.3": [
"Zimbra Public License v1.3",
false,
false
],
"Zimbra-1.4": [
"Zimbra Public License v1.4",
false,
false
],
"Zlib": [
"zlib License",
true,
false
],
"bzip2-1.0.5": [
"bzip2 and libbzip2 License v1.0.5",
false,
false
],
"bzip2-1.0.6": [
"bzip2 and libbzip2 License v1.0.6",
false,
false
],
"curl": [
"curl License",
false,
false
],
"diffmark": [
"diffmark license",
false,
false
],
"dvipdfm": [
"dvipdfm License",
false,
false
],
"eCos-2.0": [
"eCos license version 2.0",
false,
true
],
"eGenix": [
"eGenix.com Public License 1.1.0",
false,
false
],
"gSOAP-1.3b": [
"gSOAP Public License v1.3b",
false,
false
],
"gnuplot": [
"gnuplot License",
false,
false
],
"iMatix": [
"iMatix Standard Function Library Agreement",
false,
false
],
"libtiff": [
"libtiff License",
false,
false
],
"mpich2": [
"mpich2 License",
false,
false
],
"psfrag": [
"psfrag License",
false,
false
],
"psutils": [
"psutils License",
false,
false
],
"wxWindows": [
"wxWindows Library License",
false,
true
],
"xinetd": [
"xinetd License",
false,
false
],
"xpp": [
"XPP License",
false,
false
],
"zlib-acknowledgement": [
"zlib/libpng License with Acknowledgement",
false,
false
]
}
\ No newline at end of file
from collections import namedtuple
class License(namedtuple('License', 'id name is_osi_approved is_deprecated')):
CLASSIFIER_SUPPORTED = {
# Not OSI Approved
'Aladdin',
'CC0-1.0',
'CECILL-B', 'CECILL-C',
'NPL-1.0', 'NPL-1.1',
# OSI Approved
'AFPL',
'AFL-1.1', 'AFL-1.2', 'AFL-2.0', 'AFL-2.1', 'AFL-3.0',
'Apache-1.1', 'Apache-2.0',
'APSL-1.1', 'APSL-1.2', 'APSL-2.0',
'Artistic-1.0', 'Artistic-2.0',
'AAL',
'AGPL-3.0', 'AGPL-3.0-only', 'AGPL-3.0-or-later',
'BSL-1.0',
'BSD-2-Clause', 'BSD-3-Clause',
'CDDL-1.0',
'CECILL-2.1',
'CPL-1.0',
'EFL-1.0', 'EFL-2.0',
'EPL-1.0', 'EPL-2.0',
'EUPL-1.1', 'EUPL-1.2',
'GPL-2.0', 'GPL-2.0+', 'GPL-2.0-only', 'GPL-2.0-or-later',
'GPL-3.0', 'GPL-3.0+', 'GPL-3.0-only', 'GPL-3.0-or-later',
'LGPL-2.0', 'LGPL-2.0+', 'LGPL-2.0-only', 'LGPL-2.0-or-later',
'LGPL-3.0', 'LGPL-3.0+', 'LGPL-3.0-only', 'LGPL-3.0-or-later',
'MIT',
'MPL-1.0', 'MPL-1.1', 'MPL-1.2',
'Nokia',
'W3C',
'ZPL-1.0', 'ZPL-2.0', 'ZPL-2.1',
}
CLASSIFIER_NAMES = {
# Not OSI Approved
'AFPL': 'Aladdin Free Public License (AFPL)',
'CC0-1.0': 'CC0 1.0 Universal (CC0 1.0) Public Domain Dedication',
'CECILL-B': 'CeCILL-B Free Software License Agreement (CECILL-B)',
'CECILL-C': 'CeCILL-C Free Software License Agreement (CECILL-C)',
'NPL-1.0': 'Netscape Public License (NPL)',
'NPL-1.1': 'Netscape Public License (NPL)',
# OSI Approved
'AFL-1.1': 'Academic Free License (AFL)',
'AFL-1.2': 'Academic Free License (AFL)',
'AFL-2.0': 'Academic Free License (AFL)',
'AFL-2.1': 'Academic Free License (AFL)',
'AFL-3.0': 'Academic Free License (AFL)',
'Apache-1.1': 'Apache Software License',
'Apache-2.0': 'Apache Software License',
'APSL-1.1': 'Apple Public Source License',
'APSL-1.2': 'Apple Public Source License',
'APSL-2.0': 'Apple Public Source License',
'Artistic-1.0': 'Artistic License',
'Artistic-2.0': 'Artistic License',
'AAL': 'Attribution Assurance License',
'AGPL-3.0': 'GNU Affero General Public License v3',
'AGPL-3.0-only': 'GNU Affero General Public License v3',
'AGPL-3.0-or-later': 'GNU Affero General Public License v3 or later (AGPLv3+)',
'BSL-1.0': 'Boost Software License 1.0 (BSL-1.0)',
'BSD-2-Clause': 'BSD License',
'BSD-3-Clause': 'BSD License',
'CDDL-1.0': 'Common Development and Distribution License 1.0 (CDDL-1.0)',
'CECILL-2.1': 'CEA CNRS Inria Logiciel Libre License, version 2.1 (CeCILL-2.1)',
'CPL-1.0': 'Common Public License',
'EPL-1.0': 'Eclipse Public License 1.0 (EPL-1.0)',
'EFL-1.0': 'Eiffel Forum License',
'EFL-2.0': 'Eiffel Forum License',
'EUPL-1.1': 'European Union Public Licence 1.1 (EUPL 1.1)',
'EUPL-1.2': 'European Union Public Licence 1.2 (EUPL 1.2)',
'GPL-2.0': 'GNU General Public License v2 (GPLv2)',
'GPL-2.0-only': 'GNU General Public License v2 (GPLv2)',
'GPL-2.0+': 'GNU General Public License v2 or later (GPLv2+)',
'GPL-2.0-or-later': 'GNU General Public License v2 or later (GPLv2+)',
'GPL-3.0': 'GNU General Public License v3 (GPLv3)',
'GPL-3.0-only': 'GNU General Public License v3 (GPLv3)',
'GPL-3.0+': 'GNU General Public License v3 or later (GPLv3+)',
'GPL-3.0-or-later': 'GNU General Public License v3 or later (GPLv3+)',
'LGPL-2.0': 'GNU Lesser General Public License v2 (LGPLv2)',
'LGPL-2.0-only': 'GNU Lesser General Public License v2 (LGPLv2)',
'LGPL-2.0+': 'GNU Lesser General Public License v2 or later (LGPLv2+)',
'LGPL-2.0-or-later': 'GNU Lesser General Public License v2 or later (LGPLv2+)',
'LGPL-3.0': 'GNU Lesser General Public License v3 (LGPLv3)',
'LGPL-3.0-only': 'GNU Lesser General Public License v3 (LGPLv3)',
'LGPL-3.0+': 'GNU Lesser General Public License v3 or later (LGPLv3+)',
'LGPL-3.0-or-later': 'GNU Lesser General Public License v3 or later (LGPLv3+)',
'MPL-1.0': 'Mozilla Public License 1.0 (MPL)',
'MPL-1.1': 'Mozilla Public License 1.1 (MPL 1.1)',
'MPL-2.0': 'Mozilla Public License 2.0 (MPL 2.0)',
'W3C': 'W3C License',
'ZPL-1.1': 'Zope Public License',
'ZPL-2.0': 'Zope Public License',
'ZPL-2.1': 'Zope Public License',
}
@property
def classifier(self):
parts = ['License']
if self.is_osi_approved:
parts.append('OSI Approved')
name = self.classifier_name
if name is not None:
parts.append(name)
return ' :: '.join(parts)
@property
def classifier_name(self):
if self.id not in self.CLASSIFIER_SUPPORTED:
if self.is_osi_approved:
return None
return 'Other/Proprietary License'
if self.id in self.CLASSIFIER_NAMES:
return self.CLASSIFIER_NAMES[self.id]
return self.name
import json
import os
from urllib.request import urlopen
class Updater:
BASE_URL = 'https://raw.githubusercontent.com/spdx/license-list-data/master/json/'
def __init__(self, base_url=BASE_URL):
self._base_url = base_url
def dump(self, file=None):
if file is None:
file = os.path.join(
os.path.dirname(__file__),
'data',
'licenses.json'
)
licenses_url = self._base_url + 'licenses.json'
with open(file, 'w') as f:
f.write(
json.dumps(
self.get_licenses(licenses_url),
indent=2,
sort_keys=True
)
)
def get_licenses(self, url):
licenses = {}
with urlopen(url) as r:
data = json.loads(r.read().decode())
for info in data['licenses']:
licenses[info['licenseId']] = [
info['name'],
info['isOsiApproved'],
info['isDeprecatedLicenseId']
]
return licenses
...@@ -15,6 +15,11 @@ documentation = "https://poetry.eustace.io/docs" ...@@ -15,6 +15,11 @@ documentation = "https://poetry.eustace.io/docs"
keywords = ["packaging", "dependency", "poetry"] keywords = ["packaging", "dependency", "poetry"]
classifiers = [
"Topic :: Software Development :: Build Tools",
"Topic :: Software Development :: Libraries :: Python Modules"
]
# Requirements # Requirements
[tool.poetry.dependencies] [tool.poetry.dependencies]
python = "^3.4" python = "^3.4"
......
...@@ -15,6 +15,10 @@ documentation = "https://poetry.eustace.io/docs" ...@@ -15,6 +15,10 @@ documentation = "https://poetry.eustace.io/docs"
keywords = ["packaging", "dependency", "poetry"] keywords = ["packaging", "dependency", "poetry"]
classifiers = [
"Topic :: Software Development :: Build Tools",
"Topic :: Software Development :: Libraries :: Python Modules"
]
# Requirements # Requirements
[tool.poetry.dependencies] [tool.poetry.dependencies]
......
...@@ -15,6 +15,10 @@ documentation = "https://poetry.eustace.io/docs" ...@@ -15,6 +15,10 @@ documentation = "https://poetry.eustace.io/docs"
keywords = ["packaging", "dependency", "poetry"] keywords = ["packaging", "dependency", "poetry"]
classifiers = [
"Topic :: Software Development :: Build Tools",
"Topic :: Software Development :: Libraries :: Python Modules"
]
# Requirements # Requirements
[tool.poetry.dependencies] [tool.poetry.dependencies]
......
...@@ -112,9 +112,12 @@ Keywords: packaging,dependency,poetry ...@@ -112,9 +112,12 @@ Keywords: packaging,dependency,poetry
Author: Sébastien Eustace Author: Sébastien Eustace
Author-email: sebastien@eustace.io Author-email: sebastien@eustace.io
Requires-Python: >= 3.6.0.0, < 4.0.0.0 Requires-Python: >= 3.6.0.0, < 4.0.0.0
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6 Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7 Classifier: Programming Language :: Python :: 3.7
Classifier: Topic :: Software Development :: Build Tools
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Provides-Extra: time Provides-Extra: time
Requires-Dist: cleo (>=0.6.0.0,<0.7.0.0) Requires-Dist: cleo (>=0.6.0.0,<0.7.0.0)
Requires-Dist: pendulum (>=1.4.0.0,<2.0.0.0); extra == "time" Requires-Dist: pendulum (>=1.4.0.0,<2.0.0.0); extra == "time"
......
from poetry.spdx import license_by_id
def test_classifier_name():
license = license_by_id('lgpl-3.0-or-later')
assert license.classifier_name == 'GNU Lesser General Public License v3 or later (LGPLv3+)'
def test_classifier_name_no_classifer_osi_approved():
license = license_by_id('LiLiQ-R-1.1')
assert license.classifier_name is None
def test_classifier_name_no_classifer():
license = license_by_id('Leptonica')
assert license.classifier_name == 'Other/Proprietary License'
def test_classifier():
license = license_by_id('lgpl-3.0-or-later')
assert license.classifier == (
'License :: '
'OSI Approved :: '
'GNU Lesser General Public License v3 or later (LGPLv3+)'
)
def test_classifier_no_classifer_osi_approved():
license = license_by_id('LiLiQ-R-1.1')
assert license.classifier == 'License :: OSI Approved'
def test_classifier_no_classifer():
license = license_by_id('Leptonica')
assert license.classifier == 'License :: Other/Proprietary License'
import pytest
from poetry.spdx import license_by_id
def test_license_by_id():
license = license_by_id('MIT')
assert license.id == 'MIT'
assert license.name == 'MIT License'
assert license.is_osi_approved
assert not license.is_deprecated
license = license_by_id('LGPL-3.0-or-later')
assert license.id == 'LGPL-3.0-or-later'
assert license.name == 'GNU Lesser General Public License v3.0 or later'
assert license.is_osi_approved
assert not license.is_deprecated
def test_license_by_id_is_case_insensitive():
license = license_by_id('mit')
assert license.id == 'MIT'
license = license_by_id('miT')
assert license.id == 'MIT'
def test_license_by_id_invalid():
with pytest.raises(ValueError):
license_by_id('invalid')
...@@ -17,7 +17,7 @@ def test_poetry(): ...@@ -17,7 +17,7 @@ def test_poetry():
assert package.version == '1.2.3' assert package.version == '1.2.3'
assert package.description == 'Some description.' assert package.description == 'Some description.'
assert package.authors == ['Sébastien Eustace <sebastien@eustace.io>'] assert package.authors == ['Sébastien Eustace <sebastien@eustace.io>']
assert package.license == 'MIT' assert package.license.id == 'MIT'
assert str(package.readme.relative_to(fixtures_dir)) == "sample_project/README.rst" assert str(package.readme.relative_to(fixtures_dir)) == "sample_project/README.rst"
assert package.homepage == 'https://poetry.eustace.io' assert package.homepage == 'https://poetry.eustace.io'
assert package.repository_url == 'https://github.com/sdispater/poetry' assert package.repository_url == 'https://github.com/sdispater/poetry'
...@@ -56,6 +56,24 @@ def test_poetry(): ...@@ -56,6 +56,24 @@ def test_poetry():
assert 'db' in package.extras assert 'db' in package.extras
classifiers = package.classifiers
assert classifiers == [
"Topic :: Software Development :: Build Tools",
"Topic :: Software Development :: Libraries :: Python Modules"
]
assert package.all_classifiers == [
"License :: OSI Approved :: MIT License",
"Programming Language :: Python :: 2",
"Programming Language :: Python :: 2.7",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
"Topic :: Software Development :: Build Tools",
"Topic :: Software Development :: Libraries :: Python Modules"
]
def test_check(): def test_check():
complete = fixtures_dir / 'complete.toml' complete = fixtures_dir / 'complete.toml'
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment