6 Commits
Author SHA1 Message Date
Adrien Vergé 16727ac184 build: Restore documentation and test files in sdist
This commit fixes a problem reported by Nicholas Bollweg at
https://github.com/adrienverge/yamllint/pull/725. Recent commit a3e1325
"CI: Publish PyPI releases using GitHub Actions workflows" and automatic
publication of version 1.36.1 revealed a problem that had probably been
there for some time: most documentation and test files weren't included
in the source distribution when running `python -m build` (unless an
`yamllint.egg-info` from a previous run listed them).

I see two solutions:
1. Add plugin `setuptools-scm` in `pyproject.toml`:
       requires = ["setuptools >= 61", "setuptools-scm >= 8"]
   This would add all files tracked by Git in the sdist, including a few
   that aren't really needed: `.flake8`, `.github`, `.readthedocs.yaml`…
2. Declare extra files to embed in `MANIFEST.in`. This is what this
   commit does.

I checked that:
- All files packages before 1.36.0 are correctly included now:
      tar -tvf dist/yamllint-1.36.0.tar.gz | cut -b65- \
        > /tmp/sdist-files-before
      rm -rf yamllint.egg-info && python -m build && \
        tar -tvf dist/yamllint-1.36.1.tar.gz | cut -b65- \
        > /tmp/sdist-files-after
      git diff --no-index /tmp/sdist-files-before /tmp/sdist-files-after
- These extra files are still not installed by `pip install` (they are
  not needed):
      pip install yamllint==1.36.0 && \
        tree ~/.local/lib/python3.13/site-packages/yamllint \
        > /tmp/pip-install-before
      pip install dist/yamllint-1.36.1.tar.gz && \
        tree ~/.local/lib/python3.13/site-packages/yamllint \
        > /tmp/pip-install-after
      git diff --no-index /tmp/pip-install-before /tmp/pip-install-after
2025-03-17 08:59:44 +01:00
Adrien Vergé 15eafeb80a build: Migrate from setup.py to pyproject.toml
Using `setup.py` is deprecated and the new recommanded way is to declare
a `pyproject.toml` file (see PEP 517 [^1]).

This commit proposes to use setuptools to achieve that, because
setuptools is already used by yamllint, is standard and referenced by
the official Python packaging documentation [^2], and seems to be the
most lightweight solution. An alternative could have been to use Poetry,
see the dedicated pull request and discussion [^3].

For some period, the `setup.py` file will be kept (although almost
empty), to allow old tools versions to keep working.

Closes https://github.com/adrienverge/yamllint/issues/509.

[^1]: https://peps.python.org/pep-0517/
[^2]: https://packaging.python.org/en/latest/tutorials/installing-packages/
[^3]: https://github.com/adrienverge/yamllint/pull/557
2023-04-21 14:15:53 +02:00
Adrien Vergé 6ec1e7b54a Distribution: Include tests in dist file
Since commit e948509 ("setup.py - don't distribute tests"), tests files
are not included in the `.tar.gz` bundle on a fresh repo clone. (On old
repos they were still included, because listed in
`yamllint.egg-info/SOURCES.txt`.)

Let's explicitly include them.
2017-11-05 09:50:46 +01:00
Adrien Vergé 7e11082353 Distribution: Restore spec examples in package_data
Put `tests/yaml-1.2-spec-examples/*` back in `setup.py`'s `package_data`
because they need to be installed when running `python setup.py build`,
so Debian packaging script `dh_auto_test -O--buildsystem=pybuild`
doesn't fail.

See also commit e6dc67f.
2016-03-04 12:33:56 +01:00
Adrien Vergé b879e9a98f Distribution: Add LICENSE and README to manifest 2016-02-26 09:57:06 +01:00
Adrien Vergé e6dc67fd0a Distribution: Add MANIFEST.in
`yamllint/conf/*.yml` remains in `setup.py`'s `package_data` because it
needs to be installed when running `pip install .`.

`docs/*` and `tests/yaml-1.2-spec-examples/*` just need to be packaged,
they can go in the manifest.
2016-02-24 21:18:48 +01:00