Skip to content

Commit

Permalink
Move package directory to src/
Browse files Browse the repository at this point in the history
This goes against the currently officially recommended package layout, but
there are quite a few reasons for doing it this way. In particular, having
the package directory *not* directly importable ensures that the tests
actually run against the packaged version of the code, not against what
happens to be in the working copy.

Blog articles:

* https://hynek.me/articles/testing-packaging/
* https://blog.ionelmc.ro/2014/05/25/python-packaging/#the-structure

Recommendation in the pytest documentation:

* https://docs.pytest.org/en/latest/goodpractices.html#tests-outside-application-code
  • Loading branch information
marcelm committed Nov 11, 2017
1 parent 0585c4c commit 7d51f16
Show file tree
Hide file tree
Showing 20 changed files with 12 additions and 17 deletions.
14 changes: 4 additions & 10 deletions MANIFEST.in
@@ -1,19 +1,13 @@
# documentation
include README.rst
include CHANGES.rst
include CITATION
include LICENSE
include doc/*.rst
include doc/conf.py
include doc/Makefile
include cutadapt/*.pyx
include cutadapt/_align.c
include cutadapt/_qualtrim.c
include cutadapt/_seqio.c
include bin/_preamble.py
include tests/test*.py
include versioneer.py
include src/cutadapt/*.c
include src/cutadapt/*.pyx
include tests/utils.py
include tests/test_*.py
graft tests/data
graft tests/cut
include versioneer.py
include cutadapt/_version.py
2 changes: 1 addition & 1 deletion setup.cfg
@@ -1,7 +1,7 @@
[versioneer]
VCS = git
style = pep440
versionfile_source = cutadapt/_version.py
versionfile_source = src/cutadapt/_version.py
versionfile_build = cutadapt/_version.py
tag_prefix = v
parentdir_prefix = cutadapt-
11 changes: 6 additions & 5 deletions setup.py
Expand Up @@ -4,7 +4,7 @@
import sys
import os.path

from setuptools import setup, Extension
from setuptools import setup, Extension, find_packages
from distutils.version import LooseVersion
from distutils.command.sdist import sdist as _sdist
from distutils.command.build_ext import build_ext as _build_ext
Expand Down Expand Up @@ -54,9 +54,9 @@ def check_cython_version():


extensions = [
Extension('cutadapt._align', sources=['cutadapt/_align.pyx']),
Extension('cutadapt._qualtrim', sources=['cutadapt/_qualtrim.pyx']),
Extension('cutadapt._seqio', sources=['cutadapt/_seqio.pyx']),
Extension('cutadapt._align', sources=['src/cutadapt/_align.pyx']),
Extension('cutadapt._qualtrim', sources=['src/cutadapt/_qualtrim.pyx']),
Extension('cutadapt._seqio', sources=['src/cutadapt/_seqio.pyx']),
]

cmdclass = versioneer.get_cmdclass()
Expand Down Expand Up @@ -108,7 +108,8 @@ def run(self):
license = 'MIT',
cmdclass = cmdclass,
ext_modules = extensions,
packages = ['cutadapt', 'cutadapt.scripts'],
package_dir = {'': 'src'},
packages = find_packages('src'),
install_requires = ['xopen>=0.1.1'],
entry_points = {'console_scripts': ['cutadapt = cutadapt.scripts.cutadapt:main']},
classifiers = [
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
2 changes: 1 addition & 1 deletion cutadapt/_version.py → src/cutadapt/_version.py
Expand Up @@ -42,7 +42,7 @@ def get_config():
cfg.style = "pep440"
cfg.tag_prefix = "v"
cfg.parentdir_prefix = "cutadapt-"
cfg.versionfile_source = "cutadapt/_version.py"
cfg.versionfile_source = "src/cutadapt/_version.py"
cfg.verbose = False
return cfg

Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

0 comments on commit 7d51f16

Please sign in to comment.