diff --git a/MANIFEST.in b/MANIFEST.in index 6be1908..739ad74 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,6 +1,6 @@ include setup.py README.rst MANIFEST.in LICENSE AUTHORS -recursive-include bananas/templates * -recursive-include bananas/static * +recursive-include src/bananas/templates * +recursive-include src/bananas/static * global-exclude *~ diff --git a/Makefile b/Makefile index d68c7c6..e15f975 100644 --- a/Makefile +++ b/Makefile @@ -15,7 +15,10 @@ test_all: .PHONY: test-types # runs pytest-mypy-plugins to test exported types test-types: + # Hack to make type-tests work until we add py.typed to the published package. + touch $$(python -c 'import bananas; print(bananas.__path__[0] + "/py.typed")') pytest --mypy-ini-file=setup.cfg tests/*.yaml + rm $$(python -c 'import bananas; print(bananas.__path__[0] + "/py.typed")') .PHONY: coverage # combines coverage and reports it coverage: @@ -28,9 +31,9 @@ coverage-xml: .PHONY: lint # runs flake8, black and isort checks lint: - @flake8 bananas tests && echo "flake8 OK" - black --check bananas tests - isort --check bananas tests + @flake8 src tests && echo "flake8 OK" + black --check src tests + isort --check src tests .PHONY: type-check type-check: diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..9d28d84 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["setuptools>=57.0.0", "wheel"] +build-backend = "setuptools.build_meta" diff --git a/setup.cfg b/setup.cfg index d8aa3fa..e9a1c2d 100644 --- a/setup.cfg +++ b/setup.cfg @@ -23,6 +23,8 @@ license_file = LICENSE [options] packages = find: +package_dir = + =src python_requires = >=3.6 include_package_data = True exclude = @@ -35,6 +37,9 @@ install_requires = typing-extensions>=3.7.4.3 drf-yasg>=1.20.0 +[options.packages.find] +where = src + [options.extras_require] drf = djangorestframework>=3.10 @@ -65,7 +70,7 @@ show-source = true max-complexity = 10 [coverage:run] -source = bananas +source = src branch = True parallel = True @@ -90,12 +95,13 @@ combine_as_imports = true include_trailing_comma = true force_grid_wrap = 0 skip = migrations +src_paths = src, tests [mypy] python_version = 3.6 show_error_codes = True pretty = True -files = bananas,tests,runtests.py,setup.py +files = src,tests,runtests.py,setup.py no_implicit_reexport = True no_implicit_optional = True diff --git a/bananas/__init__.py b/src/bananas/__init__.py similarity index 100% rename from bananas/__init__.py rename to src/bananas/__init__.py diff --git a/bananas/admin/__init__.py b/src/bananas/admin/__init__.py similarity index 100% rename from bananas/admin/__init__.py rename to src/bananas/admin/__init__.py diff --git a/bananas/admin/api/__init__.py b/src/bananas/admin/api/__init__.py similarity index 100% rename from bananas/admin/api/__init__.py rename to src/bananas/admin/api/__init__.py diff --git a/bananas/admin/api/i18n.py b/src/bananas/admin/api/i18n.py similarity index 100% rename from bananas/admin/api/i18n.py rename to src/bananas/admin/api/i18n.py diff --git a/bananas/admin/api/mixins.py b/src/bananas/admin/api/mixins.py similarity index 100% rename from bananas/admin/api/mixins.py rename to src/bananas/admin/api/mixins.py diff --git a/bananas/admin/api/permissions.py b/src/bananas/admin/api/permissions.py similarity index 100% rename from bananas/admin/api/permissions.py rename to src/bananas/admin/api/permissions.py diff --git a/bananas/admin/api/router.py b/src/bananas/admin/api/router.py similarity index 100% rename from bananas/admin/api/router.py rename to src/bananas/admin/api/router.py diff --git a/bananas/admin/api/schemas/__init__.py b/src/bananas/admin/api/schemas/__init__.py similarity index 100% rename from bananas/admin/api/schemas/__init__.py rename to src/bananas/admin/api/schemas/__init__.py diff --git a/bananas/admin/api/schemas/base.py b/src/bananas/admin/api/schemas/base.py similarity index 100% rename from bananas/admin/api/schemas/base.py rename to src/bananas/admin/api/schemas/base.py diff --git a/bananas/admin/api/schemas/decorators.py b/src/bananas/admin/api/schemas/decorators.py similarity index 100% rename from bananas/admin/api/schemas/decorators.py rename to src/bananas/admin/api/schemas/decorators.py diff --git a/bananas/admin/api/schemas/yasg.py b/src/bananas/admin/api/schemas/yasg.py similarity index 100% rename from bananas/admin/api/schemas/yasg.py rename to src/bananas/admin/api/schemas/yasg.py diff --git a/bananas/admin/api/serializers.py b/src/bananas/admin/api/serializers.py similarity index 100% rename from bananas/admin/api/serializers.py rename to src/bananas/admin/api/serializers.py diff --git a/bananas/admin/api/urls.py b/src/bananas/admin/api/urls.py similarity index 100% rename from bananas/admin/api/urls.py rename to src/bananas/admin/api/urls.py diff --git a/bananas/admin/api/v1_0/__init__.py b/src/bananas/admin/api/v1_0/__init__.py similarity index 100% rename from bananas/admin/api/v1_0/__init__.py rename to src/bananas/admin/api/v1_0/__init__.py diff --git a/bananas/admin/api/v1_0/urls.py b/src/bananas/admin/api/v1_0/urls.py similarity index 100% rename from bananas/admin/api/v1_0/urls.py rename to src/bananas/admin/api/v1_0/urls.py diff --git a/bananas/admin/api/versioning.py b/src/bananas/admin/api/versioning.py similarity index 100% rename from bananas/admin/api/versioning.py rename to src/bananas/admin/api/versioning.py diff --git a/bananas/admin/api/views.py b/src/bananas/admin/api/views.py similarity index 100% rename from bananas/admin/api/views.py rename to src/bananas/admin/api/views.py diff --git a/bananas/admin/extension.py b/src/bananas/admin/extension.py similarity index 100% rename from bananas/admin/extension.py rename to src/bananas/admin/extension.py diff --git a/bananas/drf/__init__.py b/src/bananas/drf/__init__.py similarity index 100% rename from bananas/drf/__init__.py rename to src/bananas/drf/__init__.py diff --git a/bananas/drf/errors.py b/src/bananas/drf/errors.py similarity index 100% rename from bananas/drf/errors.py rename to src/bananas/drf/errors.py diff --git a/bananas/drf/fencing.py b/src/bananas/drf/fencing.py similarity index 100% rename from bananas/drf/fencing.py rename to src/bananas/drf/fencing.py diff --git a/bananas/drf/utils.py b/src/bananas/drf/utils.py similarity index 100% rename from bananas/drf/utils.py rename to src/bananas/drf/utils.py diff --git a/bananas/environment.py b/src/bananas/environment.py similarity index 100% rename from bananas/environment.py rename to src/bananas/environment.py diff --git a/bananas/lazy.py b/src/bananas/lazy.py similarity index 100% rename from bananas/lazy.py rename to src/bananas/lazy.py diff --git a/bananas/management/__init__.py b/src/bananas/management/__init__.py similarity index 100% rename from bananas/management/__init__.py rename to src/bananas/management/__init__.py diff --git a/bananas/management/commands/__init__.py b/src/bananas/management/commands/__init__.py similarity index 100% rename from bananas/management/commands/__init__.py rename to src/bananas/management/commands/__init__.py diff --git a/bananas/management/commands/show_urls.py b/src/bananas/management/commands/show_urls.py similarity index 100% rename from bananas/management/commands/show_urls.py rename to src/bananas/management/commands/show_urls.py diff --git a/bananas/management/commands/syncpermissions.py b/src/bananas/management/commands/syncpermissions.py similarity index 100% rename from bananas/management/commands/syncpermissions.py rename to src/bananas/management/commands/syncpermissions.py diff --git a/bananas/models.py b/src/bananas/models.py similarity index 100% rename from bananas/models.py rename to src/bananas/models.py diff --git a/bananas/query.py b/src/bananas/query.py similarity index 100% rename from bananas/query.py rename to src/bananas/query.py diff --git a/bananas/secrets.py b/src/bananas/secrets.py similarity index 100% rename from bananas/secrets.py rename to src/bananas/secrets.py diff --git a/bananas/settings.py b/src/bananas/settings.py similarity index 100% rename from bananas/settings.py rename to src/bananas/settings.py diff --git a/bananas/static/admin/bananas/css/bananas.css b/src/bananas/static/admin/bananas/css/bananas.css similarity index 100% rename from bananas/static/admin/bananas/css/bananas.css rename to src/bananas/static/admin/bananas/css/bananas.css diff --git a/bananas/static/admin/bananas/css/banansive.css b/src/bananas/static/admin/bananas/css/banansive.css similarity index 100% rename from bananas/static/admin/bananas/css/banansive.css rename to src/bananas/static/admin/bananas/css/banansive.css diff --git a/bananas/static/admin/bananas/img/django.svg b/src/bananas/static/admin/bananas/img/django.svg similarity index 100% rename from bananas/static/admin/bananas/img/django.svg rename to src/bananas/static/admin/bananas/img/django.svg diff --git a/bananas/static/admin/bananas/img/search.svg b/src/bananas/static/admin/bananas/img/search.svg similarity index 100% rename from bananas/static/admin/bananas/img/search.svg rename to src/bananas/static/admin/bananas/img/search.svg diff --git a/bananas/static/admin/bananas/js/bananas.js b/src/bananas/static/admin/bananas/js/bananas.js similarity index 100% rename from bananas/static/admin/bananas/js/bananas.js rename to src/bananas/static/admin/bananas/js/bananas.js diff --git a/bananas/static/admin/css/responsive.css b/src/bananas/static/admin/css/responsive.css similarity index 100% rename from bananas/static/admin/css/responsive.css rename to src/bananas/static/admin/css/responsive.css diff --git a/bananas/templates/admin/base_site.html b/src/bananas/templates/admin/base_site.html similarity index 100% rename from bananas/templates/admin/base_site.html rename to src/bananas/templates/admin/base_site.html diff --git a/bananas/templates/admin/view.html b/src/bananas/templates/admin/view.html similarity index 100% rename from bananas/templates/admin/view.html rename to src/bananas/templates/admin/view.html diff --git a/bananas/url.py b/src/bananas/url.py similarity index 100% rename from bananas/url.py rename to src/bananas/url.py diff --git a/tox.ini b/tox.ini index 489a9ed..5b91306 100644 --- a/tox.ini +++ b/tox.ini @@ -12,13 +12,15 @@ envlist = py36-django{ 22, 30, 32 }, py38-django{ 22, 30, 31, 32, 40 }, py39-django{ 22, 30, 31, 32, 40 } py310-django{ 32, 40 } +isolated_build = true [testenv] passenv = COVERAGE_FILE whitelist_externals = make +usedevelop = true commands = - make test + make test {posargs} install_command = pip install {opts} {packages} extras =