Skip to content

Commit

Permalink
data_files is now a section in setup.cfg
Browse files Browse the repository at this point in the history
  • Loading branch information
Florian Wilhelm authored and Florian Wilhelm committed Mar 23, 2015
1 parent ffbf76a commit 2dfebc2
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 23 deletions.
14 changes: 10 additions & 4 deletions pyscaffold/data/setup_cfg.template
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,16 @@ classifiers = ${classifiers}

[console_scripts]
# Add here console scripts like:
# script = ${package}.module:function
# for example:
# hello_world = ${package}.skeleton:run
${console_scripts}
# hello_world = pyscaffold.module:function
putup = pyscaffold.runner:run

[data_files]
# Add here data to include which lies OUTSIDE your package, e.g.
# path/to/destination = files/to/include, others/to/include
# This is equivalent to adding files to MANIFEST.in which is not needed.
# The destination is relative to the root of your virtual environment, e.g.
share/${package} = *.rst, *.txt

[extras_require]
# Add here additional requirements for extra features, like:
# PDF = ReportLab>=1.2, RXP
Expand Down
18 changes: 10 additions & 8 deletions pyscaffold/data/setup_py.template
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,11 @@ def prepare_extras_require(dct):
return {k: [r.strip() for r in v.split(',')] for k, v in dct.items()}


def prepare_data_files(dct):
return [(k, [f for p in v.split(',') for f in glob(p.strip())])
for k, v in dct.items()]


def read_setup_cfg():
config = configparser.SafeConfigParser(allow_no_value=True)
config_file = StringIO(read(os.path.join(__location__, 'setup.cfg')))
Expand All @@ -143,14 +148,12 @@ def read_setup_cfg():
console_scripts = prepare_console_scripts(console_scripts)
extras_require = dict(get_items(config, 'extras_require'))
extras_require = prepare_extras_require(extras_require)
data_files = dict(get_items(config, 'data_files'))
data_files = prepare_data_files(data_files)
package_data = metadata.get('package_data', '')
package_data = [item.strip() for item in package_data.split(',') if item]
metadata['package_data'] = package_data
data_files = metadata.get('data_files', '')
data_files = [item.strip() for item in data_files.split(',')]
data_files = [item for pattern in data_files for item in glob(pattern)]
metadata['data_files'] = data_files
return metadata, console_scripts, extras_require
return metadata, console_scripts, extras_require, data_files


###########################################
Expand Down Expand Up @@ -507,10 +510,9 @@ def setup_package():
# Some helper variables
version = get_versions()["version"]
docs_path = os.path.join(__location__, "docs")
data_file_path = os.path.join("share", package)
docs_build_path = os.path.join(docs_path, "_build")
install_reqs = get_install_requirements("requirements.txt")
metadata, console_scripts, extras_require = read_setup_cfg()
metadata, console_scripts, extras_require, data_files = read_setup_cfg()

command_options = {
'docs': {'project': ('setup.py', package),
Expand Down Expand Up @@ -547,7 +549,7 @@ def setup_package():
cmdclass=cmdclass,
tests_require=['pytest-cov', 'pytest'],
package_data={package: metadata['package_data']},
data_files=[(data_file_path, metadata['data_files'])],
data_files=data_files,
command_options=command_options,
entry_points={'console_scripts': console_scripts},
zip_safe=False) # do not zip egg file after setup.py install
Expand Down
12 changes: 9 additions & 3 deletions setup.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,8 @@ url = http://pyscaffold.readthedocs.org/
# Comma separated list of data INSIDE your package to include.
# DO NOT prepend the package name when specifying files and folders.
package_data = data/*
# Comma separated list of data OUTSIDE your package to include.
# Equivalent to adding files to MANIFEST.in which is not needed.
data_files = *.rst, *.txt


# Add here all kinds of additional classifiers as defined under
# https://pypi.python.org/pypi?%3Aaction=list_classifiers
classifiers = Development Status :: 5 - Production/Stable,
Expand All @@ -33,6 +32,13 @@ classifiers = Development Status :: 5 - Production/Stable,
# hello_world = pyscaffold.module:function
putup = pyscaffold.runner:run

[data_files]
# Add here data to include which lies OUTSIDE your package, e.g.
# path/to/destination = files/to/include, others/to/include
# This is equivalent to adding files to MANIFEST.in which is not needed.
# The destination is relative to the root of your virtual environment, e.g.
share/pyscaffold = *.rst, *.txt

[extras_require]
# Add here additional requirements for extra features, like:
# PDF = ReportLab>=1.2, RXP
Expand Down
18 changes: 10 additions & 8 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,11 @@ def prepare_extras_require(dct):
return {k: [r.strip() for r in v.split(',')] for k, v in dct.items()}


def prepare_data_files(dct):
return [(k, [f for p in v.split(',') for f in glob(p.strip())])
for k, v in dct.items()]


def read_setup_cfg():
config = configparser.SafeConfigParser(allow_no_value=True)
config_file = StringIO(read(os.path.join(__location__, 'setup.cfg')))
Expand All @@ -142,14 +147,12 @@ def read_setup_cfg():
console_scripts = prepare_console_scripts(console_scripts)
extras_require = dict(get_items(config, 'extras_require'))
extras_require = prepare_extras_require(extras_require)
data_files = dict(get_items(config, 'data_files'))
data_files = prepare_data_files(data_files)
package_data = metadata.get('package_data', '')
package_data = [item.strip() for item in package_data.split(',') if item]
metadata['package_data'] = package_data
data_files = metadata.get('data_files', '')
data_files = [item.strip() for item in data_files.split(',')]
data_files = [item for pattern in data_files for item in glob(pattern)]
metadata['data_files'] = data_files
return metadata, console_scripts, extras_require
return metadata, console_scripts, extras_require, data_files


###########################################
Expand Down Expand Up @@ -506,10 +509,9 @@ def setup_package():
# Some helper variables
version = get_versions()["version"]
docs_path = os.path.join(__location__, "docs")
data_file_path = os.path.join("share", package)
docs_build_path = os.path.join(docs_path, "_build")
install_reqs = get_install_requirements("requirements.txt")
metadata, console_scripts, extras_require = read_setup_cfg()
metadata, console_scripts, extras_require, data_files = read_setup_cfg()

command_options = {
'docs': {'project': ('setup.py', package),
Expand Down Expand Up @@ -546,7 +548,7 @@ def setup_package():
cmdclass=cmdclass,
tests_require=['pytest-cov', 'pytest'],
package_data={package: metadata['package_data']},
data_files=[(data_file_path, metadata['data_files'])],
data_files=data_files,
command_options=command_options,
entry_points={'console_scripts': console_scripts},
zip_safe=False) # do not zip egg file after setup.py install
Expand Down

0 comments on commit 2dfebc2

Please sign in to comment.