Skip to content

Commit

Permalink
Move the version info into the source code instead of static VERSION
Browse files Browse the repository at this point in the history
file

This fixes juju#1025 by removing the dependency to the external static
VERSION file from within the project, allowing it to work in
environments where pylibjuju is installed as a dependency library.

Note that this changes the release process. In particular where we
need to manually change the version information is moved into
version.py (the release process document will be updated) This also
removes the VERSION file.
  • Loading branch information
cderici committed Feb 14, 2024
1 parent 8132055 commit fe84880
Show file tree
Hide file tree
Showing 5 changed files with 6 additions and 17 deletions.
2 changes: 1 addition & 1 deletion MANIFEST.in
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
include *.py CONTRIBUTORS LICENSE README.rst VERSION
include *.py CONTRIBUTORS LICENSE README.rst
recursive-include juju *.py
recursive-include examples *.py
recursive-include docs *.rst
Expand Down
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
BIN := .tox/py3/bin
PY := $(BIN)/python3
PIP := $(BIN)/pip3
VERSION=$(shell cat VERSION)
VERSION := $(shell $(PY) -c "from version import CLIENT_VERSION; print(CLIENT_VERSION)")

.PHONY: clean
clean:
Expand Down
1 change: 0 additions & 1 deletion VERSION

This file was deleted.

13 changes: 1 addition & 12 deletions juju/version.py
Original file line number Diff line number Diff line change
@@ -1,19 +1,8 @@
# Copyright 2023 Canonical Ltd.
# Licensed under the Apache V2, see LICENCE file for details.

import pathlib
import re

LTS_RELEASES = ["jammy", "focal", "bionic", "xenial", "trusty", "precise"]

DEFAULT_ARCHITECTURE = 'amd64'

# CLIENT_VERSION (that's read from the VERSION file) is the highest Juju server
# version that this client supports.
# Note that this is a ceiling. CLIENT_VERSION <= juju-controller-version works.
# For CLIENT_VERSION < juju-controller-version (strictly smaller), we emit a warning
# to update the client to the latest.
# However, for any CLIENT_VERSION > juju-controller-version, a "client incompatible
# with server" will be returned by the juju controller.
VERSION_FILE_PATH = pathlib.Path(__file__).parent.parent / 'VERSION'
CLIENT_VERSION = re.search(r'\d+\.\d+\.\d+', open(VERSION_FILE_PATH).read().strip()).group()
CLIENT_VERSION = "3.3.1.0"
5 changes: 3 additions & 2 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@

from setuptools import find_packages, setup

from juju.version import CLIENT_VERSION

here = Path(__file__).absolute().parent
readme = here / 'docs' / 'readme.rst'
changelog = here / 'docs' / 'changelog.rst'
Expand All @@ -13,11 +15,10 @@
changelog.read_text()
)
long_description_content_type = 'text/x-rst'
version = here / 'VERSION'

setup(
name='juju',
version=version.read_text().strip(),
version=CLIENT_VERSION.strip(),
packages=find_packages(
exclude=["*.tests", "*.tests.*", "tests.*", "tests"]),
package_data={'juju': ['py.typed']},
Expand Down

0 comments on commit fe84880

Please sign in to comment.