Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 172d986

Browse filesBrowse files
committed
Create semver package
Split up changelog to make more sense. Incorporate suggestions and increase coverage to 100% in non-deprecated parts. Bump the dev part Co-authored-by: Tom Schraitle <tomschr@users.noreply.github.com> Run docformatter Fix path for docformatter Add stubby setup.py file for compatibility with python 3.6 Run black Deprecate cli functions imported from root Revert to `pysemver` as console script. Refactor __main__.py * add type hints for correctness * run black Refactor and integrate suggestion from @tomschr * Create :file:`src/semver/cli.py` for all CLI methods * Create :file:`src/semver/_deprecated.py` for the ``deprecated`` decorator and other deprecated functions * Create :file:`src/semver/__main__.py` to allow calling the CLI using :command:`python -m semver` * Create :file:`src/semver/_types.py` to hold type aliases * Create :file:`src/semver/version.py` to hold the :class:`VersionInfo` class and its utility functions * Create :file:`src/semver/__about__.py` for all the metadata variables Adapted infrastructure code to the new project layout. * Replace :file:`setup.py` with :file:`setup.cfg` because the :file:`setup.cfg` is easier to use * Adapt documentation code snippets where needed * Adapt tests * Changed the ``deprecated`` to hardcode the ``semver`` package name in the warning. Change path for docformatter and run it. Remove pyi inclusion from black sine we aren't using them Clean up after messy rebase Run black
1 parent b204f3d commit 172d986
Copy full SHA for 172d986

23 files changed

+808
-753
lines changed

‎changelog.d/169.deprecation.rst

Copy file name to clipboard
+1Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Deprecate CLI functions not imported from ``semver.cli``.

‎changelog.d/169.feature.rst

Copy file name to clipboard
+11Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
Create semver package and split code among different modules in the packages.
2+
3+
* Remove :file:`semver.py`
4+
* Create :file:`src/semver/__init__.py`
5+
* Create :file:`src/semver/cli.py` for all CLI methods
6+
* Create :file:`src/semver/_deprecated.py` for the ``deprecated`` decorator and other deprecated functions
7+
* Create :file:`src/semver/__main__.py` to allow calling the CLI using :command:`python -m semver`
8+
* Create :file:`src/semver/_types.py` to hold type aliases
9+
* Create :file:`src/semver/version.py` to hold the :class:`VersionInfo` class and its utility functions
10+
* Create :file:`src/semver/__about__.py` for all the metadata variables
11+

‎changelog.d/169.trivial.rst

Copy file name to clipboard
+8Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
Adapted infrastructure code to the new project layout.
2+
3+
* Replace :file:`setup.py` with :file:`setup.cfg` because the :file:`setup.cfg` is easier to use
4+
* Adapt documentation code snippets where needed
5+
* Adapt tests
6+
* Changed the ``deprecated`` to hardcode the ``semver`` package name in the warning.
7+
8+
Increase coverage to 100% for all non-deprecated APIs

‎changelog.d/290.deprecation.rst

Copy file name to clipboardExpand all lines: changelog.d/290.deprecation.rst
-10Lines changed: 0 additions & 10 deletions
This file was deleted.

‎changelog.d/290.feature.rst

Copy file name to clipboardExpand all lines: changelog.d/290.feature.rst
-11Lines changed: 0 additions & 11 deletions
This file was deleted.

‎docs/conf.py

Copy file name to clipboardExpand all lines: docs/conf.py
+1-1Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
import os
2020
import sys
2121

22-
sys.path.insert(0, os.path.abspath(".."))
22+
sys.path.insert(0, os.path.abspath("../src/"))
2323

2424
from semver import __version__ # noqa: E402
2525

‎docs/usage.rst

Copy file name to clipboardExpand all lines: docs/usage.rst
+1-1Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ Getting the Version of semver
2626
To know the version of semver itself, use the following construct::
2727

2828
>>> semver.__version__
29-
'3.0.0-dev.1'
29+
'3.0.0-dev.2'
3030

3131

3232
Creating a Version

‎pyproject.toml

Copy file name to clipboardExpand all lines: pyproject.toml
-1Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ build-backend = "setuptools.build_meta"
1010
[tool.black]
1111
line-length = 88
1212
target-version = ['py36', 'py37', 'py38']
13-
include = '\.pyi?$'
1413
# diff = true
1514
exclude = '''
1615
(

‎setup.cfg

Copy file name to clipboardExpand all lines: setup.cfg
+52-7Lines changed: 52 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,46 @@
1+
[metadata]
2+
name = semver
3+
version = attr: semver.__about__.__version__
4+
description = attr: semver.__about__.__description__
5+
long_description = file: README.rst
6+
author = attr: semver.__about__.__author__
7+
author_email = attr: semver.__about__.__author_email__
8+
maintainer = attr: semver.__about__.__maintainer__
9+
maintainer_email = attr: semver.__about__.__maintainer_email__
10+
url = https://github.com/python-semver/python-semver
11+
download_url = https://github.com/python-semver/python-semver/downloads
12+
project_urls =
13+
Documentation = https://python-semver.rtfd.io
14+
Releases = https://github.com/python-semver/python-semver/releases
15+
Bug Tracker = https://github.com/python-semver/python-semver/issues
16+
classifiers =
17+
Environment :: Web Environment
18+
Intended Audience :: Developers
19+
License :: OSI Approved :: BSD License
20+
Operating System :: OS Independent
21+
Programming Language :: Python
22+
Programming Language :: Python :: 3
23+
Programming Language :: Python :: 3.6
24+
Programming Language :: Python :: 3.7
25+
Programming Language :: Python :: 3.8
26+
Programming Language :: Python :: 3.9
27+
Topic :: Software Development :: Libraries :: Python Modules
28+
license = BSD
29+
30+
[options]
31+
package_dir =
32+
=src
33+
packages = find:
34+
python_requires = >=3.6.*
35+
include_package_data = True
36+
37+
[options.entry_points]
38+
console_scripts =
39+
pysemver = semver.cli:main
40+
41+
[options.packages.find]
42+
where = src
43+
144
[tool:pytest]
245
norecursedirs = .git build .env/ env/ .pyenv/ .tmp/ .eggs/ venv/
346
testpaths = tests docs
@@ -15,13 +58,14 @@ addopts =
1558
max-line-length = 88
1659
ignore = F821,W503
1760
exclude =
18-
.env,
19-
venv,
20-
.eggs,
21-
.tox,
22-
.git,
23-
__pycache__,
24-
build,
61+
src/semver/__init__.py
62+
.env
63+
venv
64+
.eggs
65+
.tox
66+
.git
67+
__pycache__
68+
build
2569
dist
2670
docs
2771
conftest.py
@@ -32,6 +76,7 @@ count = False
3276
max-line-length = 88
3377
statistics = True
3478
exclude =
79+
src/semver/__init__.py
3580
.env,
3681
.eggs,
3782
.tox,

‎setup.py

Copy file name to clipboard
100755100644
+2-73Lines changed: 2 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -1,75 +1,4 @@
11
#!/usr/bin/env python3
2-
# import semver as package
3-
from os.path import dirname, join
4-
from setuptools import setup
5-
import re
2+
import setuptools
63

7-
8-
VERSION_MATCH = re.compile(r"__version__ = ['\"]([^'\"]*)['\"]", re.M)
9-
10-
11-
def read_file(filename):
12-
"""
13-
Read RST file and return content
14-
15-
:param filename: the RST file
16-
:return: content of the RST file
17-
"""
18-
with open(join(dirname(__file__), filename)) as f:
19-
return f.read()
20-
21-
22-
def find_meta(meta):
23-
"""
24-
Extract __*meta*__ from META_FILE.
25-
"""
26-
meta_match = re.search(
27-
r"^__{meta}__ = ['\"]([^'\"]*)['\"]".format(meta=meta), META_FILE, re.M
28-
)
29-
if meta_match:
30-
return meta_match.group(1)
31-
raise RuntimeError("Unable to find __{meta}__ string.".format(meta=meta))
32-
33-
34-
NAME = "semver"
35-
META_FILE = read_file("semver.py")
36-
37-
38-
# -----------------------------------------------------------------------------
39-
setup(
40-
name=NAME,
41-
version=find_meta("version"),
42-
description=find_meta("description").strip(),
43-
long_description=read_file("README.rst"),
44-
long_description_content_type="text/x-rst",
45-
author=find_meta("author"),
46-
author_email=find_meta("author_email"),
47-
url="https://github.com/python-semver/python-semver",
48-
download_url="https://github.com/python-semver/python-semver/downloads",
49-
project_urls={
50-
"Documentation": "https://python-semver.rtfd.io",
51-
"Releases": "https://github.com/python-semver/python-semver/releases",
52-
"Bug Tracker": "https://github.com/python-semver/python-semver/issues",
53-
},
54-
py_modules=[NAME],
55-
include_package_data=True,
56-
license="BSD",
57-
classifiers=[
58-
# See https://pypi.org/pypi?%3Aaction=list_classifiers
59-
"Environment :: Web Environment",
60-
"Intended Audience :: Developers",
61-
"License :: OSI Approved :: BSD License",
62-
"Operating System :: OS Independent",
63-
"Programming Language :: Python",
64-
"Programming Language :: Python :: 3",
65-
"Programming Language :: Python :: 3.6",
66-
"Programming Language :: Python :: 3.7",
67-
"Programming Language :: Python :: 3.8",
68-
"Programming Language :: Python :: 3.9",
69-
# "Programming Language :: Python :: Implementation :: PyPy",
70-
"Topic :: Software Development :: Libraries :: Python Modules",
71-
],
72-
python_requires=">=3.6.*",
73-
tests_require=["tox", "virtualenv", "wheel"],
74-
entry_points={"console_scripts": ["pysemver = semver:main"]},
75-
)
4+
setuptools.setup() # For compatibility with python 3.6

‎src/semver/__about__.py

Copy file name to clipboard
+8Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
__version__ = "3.0.0-dev.2"
2+
__author__ = "Kostiantyn Rybnikov"
3+
__author_email__ = "k-bx@k-bx.com"
4+
__maintainer__ = ["Sebastien Celles", "Tom Schraitle"]
5+
__maintainer_email__ = "s.celles@gmail.com"
6+
__description__ = "Python helper for Semantic Versioning (http://semver.org)"
7+
8+
SEMVER_SPEC_VERSION = "2.0.0"

‎src/semver/__init__.py

Copy file name to clipboard
+33Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
from ._deprecated import (
2+
bump_build,
3+
bump_major,
4+
bump_minor,
5+
bump_patch,
6+
bump_prerelease,
7+
compare,
8+
finalize_version,
9+
format_version,
10+
match,
11+
max_ver,
12+
min_ver,
13+
parse,
14+
parse_version_info,
15+
replace,
16+
cmd_bump,
17+
cmd_compare,
18+
cmd_nextver,
19+
cmd_check,
20+
createparser,
21+
process,
22+
main,
23+
)
24+
from .version import VersionInfo
25+
from .__about__ import (
26+
__version__,
27+
__author__,
28+
__maintainer__,
29+
__author_email__,
30+
__description__,
31+
__maintainer_email__,
32+
SEMVER_SPEC_VERSION,
33+
)

‎src/semver/__main__.py

Copy file name to clipboard
+23Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
"""
2+
Module to support call with :file:`__main__.py`. Used to support the following
3+
call:
4+
5+
$ python3 -m semver ...
6+
"""
7+
import os.path
8+
import sys
9+
from typing import List
10+
11+
from semver import cli
12+
13+
14+
def main(cliargs: List[str] = None) -> int:
15+
if __package__ == "":
16+
path = os.path.dirname(os.path.dirname(__file__))
17+
sys.path[0:0] = [path]
18+
19+
return cli.main(cliargs)
20+
21+
22+
if __name__ == "__main__":
23+
sys.exit(main(sys.argv))

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.