Thanks for the tools and the example. 

I just searching for something like check_manifest, because as was pointed, my configuration is "faaaar" to be generic or configurable.

My dream tool was something like (just imagine a toxenv)

[testenv:check-package]
skip_install = True
usedevelop = False
deps = pkgcheck
commands =
python setup.py sdist
pkgcheck --manifest MANIFEST.in --requirements requirements.txt --src src/ --setup setup.py dist/my_package.tar.gz


And this magically checks the package vs all the configuration files. Maybe a pylint extension can make some of these functionalities.



El jue., 14 may. 2020 a las 6:33, Alexander Todorov (<atodorov@mrsenko.com>) escribió:
На 14.05.20 г. в 9:25 ч., Juan BC написа:
> Hi guys, I have a question here (sorry if my lack of practice in English).
> I currently working in one of the many projects about covid-19, and I
> just deployed a new version for a group of epidemiologists.
> To be fair I deployed not once but three times because of two
> miss-configuration of setuptools.
>
> - First, I forget to add the internal package arcoviv19.web to include
> the web app of the project
> (https://github.com/ivco19/libs/blob/master/setup.py#L89)


Why are you not using `find_packages()` with possible excludes for the test dirs?

> - Second, forget to add a line into my MANIFEST.in, so the project
> WebClient doesn't work properly.
> (https://github.com/ivco19/libs/blob/master/MANIFEST.in)
>
> So, after the fixes, I starting to mock tests to check this kind of
> mistake. The idea was quick and dirty but works: I give a path to my
> entire source-tree and the
> the file generated with "setup.py sdist" must contain the exact same files.
>

"exact same files" doesn't quite work for the majority of the cases. Your Python
package includes a subset of all the files which are in the git repository and
you can indeed try to verify that this is the case. A simple extract & diff will
do the trick.

However your package doesn't seem to include the databases/ directory for
example. You see how this starts having exceptions very quickly hence a generic
tool is very tricky and impractical to build.


FTR in one of my projects we have find_packages() in setup.py (which relies on
__init__.py being present) so we made a custom pylint plugin to warn about .py
files which are inside directories missing __init__.py:
https://github.com/kiwitcms/Kiwi/blob/master/kiwi_lint/empty.py#L30

An added nice bonus is that Django's test runner also relies of the presence of
__init__.py and this helped us discover directories where we had had automated
tests (test_...py) but they were not automatically picked up by the test runner.

--
Alex



--
Juan B Cabral