70 lines
2.6 KiB
ReStructuredText
70 lines
2.6 KiB
ReStructuredText
|
Contributor's guide
|
||
|
===================
|
||
|
|
||
|
Coding style
|
||
|
------------
|
||
|
|
||
|
- Follow `PEP 8`_. flake8_ would help.
|
||
|
- Order imports by lexicographical order.
|
||
|
- Prefer relative imports.
|
||
|
- All functions, classes, methods, attributes, and modules should have
|
||
|
the docstring.
|
||
|
- Functions and methods should contain ``:param:``, ``:type:``
|
||
|
(``:return:``, ``:rtype`` if it returns something),
|
||
|
(``:raise:`` if it may raise an error) in their docstring.
|
||
|
|
||
|
.. _flake8: https://gitlab.com/pycqa/flake8
|
||
|
.. _PEP 8: https://www.python.org/dev/peps/pep-0008
|
||
|
|
||
|
|
||
|
Tests
|
||
|
-----
|
||
|
|
||
|
- All code patches should contain one or more unit tests or regression tests.
|
||
|
- All code patches have to successfully run tests on every Python version
|
||
|
we aim to support. tox_ would help.
|
||
|
- All commits will be tested by `Azure Pipelines`_ (Linux and Windows).
|
||
|
|
||
|
.. _tox: https://tox.readthedocs.io/
|
||
|
.. _`Azure Pipelines`: https://dev.azure.com/asottile/asottile/_build/latest?definitionId=22&branchName=master
|
||
|
|
||
|
|
||
|
Maintainer's guide
|
||
|
==================
|
||
|
|
||
|
Releasing
|
||
|
---------
|
||
|
|
||
|
Here's a brief check list for releasing a new version:
|
||
|
|
||
|
- Double check if the version is correctly bumped.
|
||
|
You can bump the version by changing ``__version__`` in sass.py file.
|
||
|
Note that it might be already bumped by other maintainers,
|
||
|
so check what's the latest release version from PyPI_.
|
||
|
- The changelog has to be complete, and frozen.
|
||
|
"To be released" sentence has to be replaced by the actual release date.
|
||
|
- If the code freeze for the release is done (including version bump),
|
||
|
tag the commit using ``git tag`` command. The tag name has to simply be
|
||
|
the version name e.g. ``1.2.3``. Of course, the tag also has to be pushed
|
||
|
to the upstream repository.
|
||
|
- Make a source distribution and upload it to PyPI
|
||
|
(``python3 setup.py sdist upload``).
|
||
|
If it's successful the new version must appear on PyPI_.
|
||
|
- `Azure Pipelines`_ automatically makes binary wheels for Windows, but each
|
||
|
CI build takes a while. These wheels are not automatically uploaded,
|
||
|
but there's ``./bin/download-windows-wheels`` script that downloads built
|
||
|
wheels. Then upload them with ``twine``.
|
||
|
- Run ``./bin/build-manylinux-wheels`` to build linux wheels and upload them to
|
||
|
PyPI (takes ~5 minutes).
|
||
|
- The `docs website`__ also has to be updated.
|
||
|
It's currently a static website deployed on GitHub Pages.
|
||
|
Use ``python setup.py upload_doc`` command.
|
||
|
Although it seems possible to be automated using Github Actions.
|
||
|
- Manually create a release through https://github.com/sass/libsass-python/releases/
|
||
|
|
||
|
Ping Hong Minhee (hongminhee@member.fsf.org, @dahlia on GitHub) if you need
|
||
|
any help!
|
||
|
|
||
|
.. _PyPI: https://pypi.org/pypi/libsass/
|
||
|
__ https://sass.github.io/libsass-python/
|