-
-
Notifications
You must be signed in to change notification settings - Fork 597
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Switch to hatch-vcs for versioning #4802
base: develop
Are you sure you want to change the base?
Switch to hatch-vcs for versioning #4802
Conversation
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## develop #4802 +/- ##
========================================
Coverage 98.69% 98.69%
========================================
Files 303 303
Lines 23258 23258
========================================
Hits 22955 22955
Misses 303 303 ☔ View full report in Codecov by Sentry. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Look at the "update_version.py" script in PyBaMM. A bunch of files are updated. For this to work you also need to get the other updated files working for releases.
Files like the change log will still need to be update for each release
Thanks for the heads-up, @kratman! I'll look into the |
pyproject.toml
Outdated
[tool.hatch.version] | ||
source = "vcs" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we move this down to the already existing tool.hatch
section?
[tool.hatch.version] | |
source = "vcs" | |
[tool.hatch] | |
version.source = "vcs" | |
build.hooks.vcs.version-file = "src/pybamm/_version.py" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sure, I'll move it to the tool.hatch
section.
- Move hatch-vcs config to `tool.hatch` in `pyproject.toml` - Switch to `_version.py` for versioning with hatch-vcs - Remove manual `version.py` updates, using git tags instead
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@vidipsingh let us know when this is ready to review (by marking it as ready to review/un-draft).
scripts/update_version.py
Outdated
version_file_path = os.path.join(pybamm.root_dir(), "src", "pybamm", "_version.py") | ||
with open(version_file_path, "w") as f: | ||
f.write(f'__version__ = "{release_version}"\n') | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think writing to this file is the right idea, as the file is supposed to be ignored in version control – hatch-vcs infers the version from the Git tag.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Was about to write that but I am guessing it is not ready for a review yet (the PR will require revamping the release workflow too)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yup, just a bit of pre-emptive feedback so that @vidipsingh's work can proceed in the right direction :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Was about to write that but I am guessing it is not ready for a review yet (the PR will require revamping the release workflow too)
@Saransh-cpp Could you please guide me on how to proceed with revamping the release workflow? Specifically, which files should I focus on to make the necessary changes?
Sure, will do that. |
- Removed manual version writing in `update_version.py`. - Added `src/pybamm/_version.py` to `.gitignore`.
scripts/update_version.py
Outdated
@@ -10,33 +10,11 @@ | |||
|
|||
def update_version(): | |||
""" | |||
Opens file and updates the version number | |||
Updates version numbers and release information across project files | |||
""" | |||
release_version = os.getenv("VERSION")[1:] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
To make this work, you need to get the VCS version to set this environment variable
build.targets.sdist.include = [ | ||
"src/pybamm", | ||
"CITATION.cff", | ||
] | ||
build.hooks.vcs.version-file = "src/pybamm/_version.py" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would still make this src/pybamm/version.py
so it is consistent with the previous file
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok, then I will make it like this.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
version.py
and _version.py
would be two different things. _version.py
is generated by setuptools scm and should not be tracked in version control. version.py
will simply import __version__
from _version.py
to ensure backward compatibility. TLDR; this should be _version.py
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Got it, thanks for the clarification! I'll keep it as _version.py
then.
@kratman @Saransh-cpp @agriyakhetarpal Could you please advise on the next steps for this PR? |
The release workflow is described here: release_workflow.md Since the version is now taken from VCS, you would need to make sure the |
Description
This PR implements
hatch-vcs
for versioning, enabling automatic versioning based on Git tags.Related to: #4742
Type of change
Key checklist:
$ pre-commit run
(or$ nox -s pre-commit
) (see CONTRIBUTING.md for how to set this up to run automatically when committing locally, in just two lines of code)$ python -m pytest
(or$ nox -s tests
)$ python -m pytest --doctest-plus src
(or$ nox -s doctests
)You can run integration tests, unit tests, and doctests together at once, using
$ nox -s quick
.Further checks: