На 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