Skip to content

Use static meta data in setup.cfg #84

@sverhoeven

Description

@sverhoeven

At https://packaging.python.org/tutorials/packaging-projects/ it says Static metadata should be preferred and dynamic metadata should be used only as an escape hatch when absolutely necessary. Currently the template is using a dynamic metadata, see

setup(
name='{{ cookiecutter.project_slug.lower().replace(' ', '_').replace('-', '_')}}',
version=version,
description="{{ cookiecutter.project_short_description.replace('\"', '\\\"') }}",
long_description=readme + '\n\n',
author="{{ cookiecutter.full_name.replace('\"', '\\\"') }}",
author_email='{{ cookiecutter.email }}',
url='https://github.com/{{ cookiecutter.github_organization }}/{{ cookiecutter.project_slug.lower().replace(' ', '_').replace('-', '_')}}',
packages=[
'{{ cookiecutter.project_slug.lower().replace(' ', '_').replace('-', '_')}}',
],
include_package_data=True,
{%- if cookiecutter.open_source_license in license_classifiers %}
license="{{ cookiecutter.open_source_license }}",
{%- endif %}
zip_safe=False,
keywords='{{ cookiecutter.project_slug }}',
classifiers=[
'Development Status :: 2 - Pre-Alpha',
'Intended Audience :: Developers',
{%- if cookiecutter.open_source_license in license_classifiers %}
'{{ license_classifiers[cookiecutter.open_source_license] }}',
{%- endif %}
'Natural Language :: English',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
'Programming Language :: Python :: 3.7',
],
test_suite='tests',
install_requires=[], # FIXME: add your package's dependencies to this list
setup_requires=[
# dependency for `python setup.py test`
'pytest-runner',
# dependencies for `python setup.py build_sphinx`
'sphinx',
'sphinx_rtd_theme',
'recommonmark'
],
tests_require=[
'pytest',
'pytest-cov',
'pycodestyle',
],
extras_require={
'dev': ['prospector[with_pyroma]', 'yapf', 'isort'],
},
data_files=[('citation/{{ cookiecutter.project_slug.lower().replace(' ', '_').replace('-', '_')}}', ['CITATION.cff'])]
)

To follow best practices we should move those metadata from setup.py to setup.cfg.

The setup.py is still needed for non-pure Python packages (aka packages with C++/C code), but should be very short by default.

Metadata

Metadata

Assignees

Labels

enhancementgenerated-packageRelated to the generated package, i.e. after running cookiecutter

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions