Skip to content

Commit

Permalink
Migrate to bump-my-version (#174)
Browse files Browse the repository at this point in the history
  • Loading branch information
protoroto authored Sep 25, 2023
1 parent 65c3d5b commit 818453f
Show file tree
Hide file tree
Showing 5 changed files with 42 additions and 194 deletions.
25 changes: 0 additions & 25 deletions .bumpversion.cfg

This file was deleted.

165 changes: 1 addition & 164 deletions CONTRIBUTING.rst
Original file line number Diff line number Diff line change
Expand Up @@ -5,167 +5,4 @@ Contributing
Contributions are welcome, and they are greatly appreciated! Every
little bit helps, and credit will always be given.

You can contribute in many ways:

Types of Contributions
**********************

Report Bugs
===========

Report bugs at https://github.com/nephila/django-meta/issues.

If you are reporting a bug, please include:

* Your operating system name and version.
* Any details about your local setup that might be helpful in troubleshooting.
* Detailed steps to reproduce the bug.

Fix Bugs
========

Look through the GitHub issues for bugs. Anything tagged with "bug"
is open to whoever wants to implement it.

Implement Features
==================

Look through the GitHub issues for features. Anything tagged with "feature"
is open to whoever wants to implement it.

Write Documentation
===================

django-meta could always use more documentation, whether as part of the
official django-meta docs, in docstrings, or even on the web in blog posts,
articles, and such.

Submit Feedback
===============

The best way to send feedback is to file an issue at https://github.com/nephila/django-meta/issues.

If you are proposing a feature:

* Explain in detail how it would work.
* Keep the scope as narrow as possible, to make it easier to implement.
* Remember that this is a volunteer-driven project, and that contributions
are welcome :)

************
Get Started!
************

Ready to contribute? Here's how to set up ``django-meta`` for local development.

1. Fork the ``django-meta`` repo on GitHub.
2. Clone your fork locally::

$ git clone [email protected]:your_name_here/django-meta.git

3. Install your local copy into a virtualenv. Assuming you have virtualenvwrapper
installed, this is how you set up your fork for local development::

$ mkvirtualenv django-meta
$ cd django-meta/
$ pip install -r requirements-test.txt
$ pip install -e .

4. Create a branch for local development::

$ git checkout -b name-of-your-bugfix-or-feature

Now you can make your changes locally.

5. When you're done making changes, check that your changes pass flake8 and the
tests, including testing other Python versions with tox::

$ tox

To get tox, pip install it into your virtualenv.

6. Commit your changes and push your branch to GitHub::

$ git add .
$ git commit -m "Your detailed description of your changes."
$ git push origin name-of-your-bugfix-or-feature

7. Submit a pull request through the GitHub website.

Development tips
----------------

This project allows you to use `pre-commit <https://pre-commit.com/>`_ to ensure an easy compliance
to the project code styles.

If you want to use it, install it globally (for example with ``pip3 install --user precommit``,
but check `installation instruction <https://pre-commit.com/#install>`.
When first cloning the project ensure you install the git hooks by running ``pre-commit install``.

From now on every commit will be checked against our code style.

Check also the available tox environments with ``tox -l``: the ones not marked with a python version number are tools
to help you work on the project buy checking / formatting code style, running docs etc.

Testing tips
----------------
You can test your project using any specific combination of python, django and django cms.

For example ``tox -py37-django30-cms37`` runs the tests on python 3.7, Django 3.0 and django CMS 3.7.

As the project uses `pytest <https://pytest.org/>`_ as test runner, you can pass any pytest option by setting the
``PYTEST_ARGS`` environment variable, usually by prepending to the ``tox`` command. Example::

PYTEST_ARGS=" -s tests/test_plugins.py::PluginTest -p no:warnings" tox -py37-django30-cms37


Pull Request Guidelines
=======================

Before you submit a pull request, check that it meets these guidelines:

#. Pull request must be named with the following naming scheme:

``<type>/(<optional-task-type>-)<number>-description``

See below for available types.

#. The pull request should include tests.
#. If the pull request adds functionality, the docs should be updated.
Documentation must be added in ``docs`` directory, and must include usage
information for the end user.
In case of public API method, add extended docstrings with full parameters
description and usage example.
#. Add a changes file in ``changes`` directory describing the contribution in
one line. It will be added automatically to the history file upon release.
File must be named as ``<issue-number>.<type>`` with type being:

* ``.feature``: For new features.
* ``.bugfix``: For bug fixes.
* ``.doc``: For documentation improvement.
* ``.removal``: For deprecation or removal of public API.
* ``.misc``: For general issues.

Check `towncrier`_ documentation for more details.

#. The pull request should work for all python / django / django CMS versions
declared in tox.ini.
Check the CI and make sure that the tests pass for all supported versions.

Release a version
=================

#. Update authors file
#. Merge ``develop`` on ``master`` branch
#. Bump release via task: ``inv tag-release (major|minor|patch)``
#. Update changelog via towncrier: ``towncrier --yes``
#. Commit changelog with ``git commit --amend`` to merge with bumpversion commit
#. Create tag ``git tag <version>``
#. Push tag to github
#. Publish the release from the tags page
#. If pipeline succeeds, push ``master``
#. Merge ``master`` back on ``develop``
#. Bump development version via task: ``inv tag-dev -l (major|minor|patch)``
#. Push ``develop``

.. _towncrier: https://pypi.org/project/towncrier/#news-fragments
Please read the instructions `here <https://nephila.github.io/contributing/contributing>`_ to start contributing to `django-meta`.
1 change: 1 addition & 0 deletions changes/173.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Migrate to bump-my-version
32 changes: 32 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -47,3 +47,35 @@ verbose = 0
quiet = false
whitelist-regex = []
color = true

[tool.bumpversion]
allow_dirty = false
commit = true
message = "Release {new_version}"
commit_args = "--no-verify"
tag = false
current_version = "2.3.1.dev1"
parse = """(?x)
(?P<major>[0-9]+)
\\.(?P<minor>[0-9]+)
\\.(?P<patch>[0-9]+)
(?:
.(?P<release>dev)
(?:(?P<relver>[0-9]+))?
)?
"""
serialize = [
"{major}.{minor}.{patch}.{release}{relver}",
"{major}.{minor}.{patch}"
]

[tool.bumpversion.parts.release]
values = [
"dev",
""
]
optional_value = "dev"

[[tool.bumpversion.files]]
filename = "meta/__init__.py"
search = "{current_version}"
13 changes: 8 additions & 5 deletions tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,8 @@ def format(c): # NOQA
def towncrier_check(c): # NOQA
"""Check towncrier files."""
output = io.StringIO()
c.run("git branch --contains HEAD", out_stream=output)
skipped_branch_prefix = ["pull/", "develop", "master", "HEAD"]
c.run("git branch -a --contains HEAD", out_stream=output)
skipped_branch_prefix = ["pull/", "release/", "develop", "master", "HEAD"]
# cleanup branch names by removing PR-only names in local, remote and disconnected branches to ensure the current
# (i.e. user defined) branch name is used
branches = list(
Expand Down Expand Up @@ -113,15 +113,18 @@ def tag_release(c, level, new_version=""):
"""Tag release version."""
if new_version:
new_version = f" --new-version {new_version}"
c.run(f"bumpversion --list {level} --no-tag{new_version}")
c.run(f"bump-my-version bump {level}{new_version}")


@task
def tag_dev(c, level="patch", new_version=""):
def tag_dev(c, level, new_version=""):
"""Tag development version."""
if new_version:
new_version = f" --new-version {new_version}"
c.run(f"bumpversion --list {level} --message='Bump develop version [ci skip]' --no-tag{new_version}")
elif level == "release":
c.run("bump-my-version bump patch --no-commit")
level = "relver"
c.run(f"bump-my-version bump {level} --message='Bump develop version [ci skip]' {new_version} --allow-dirty")


@task(pre=[clean])
Expand Down

0 comments on commit 818453f

Please sign in to comment.