Skip to content

Commit 400c86f

Browse files
committed
Improve version info and bump version patch level
1 parent c65fc02 commit 400c86f

File tree

7 files changed

+143
-71
lines changed

7 files changed

+143
-71
lines changed

.bumpversion.cfg

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
[bumpversion]
2-
current_version = 1.1.0
2+
current_version = 1.1.1
33
commit = False
44
tag = False
55

66
[bumpversion:file:src/graphql/version.py]
7-
search = __version__ = "{current_version}"
8-
replace = __version__ = "{new_version}"
7+
search = version = "{current_version}"
8+
replace = version = "{new_version}"
99

1010
[bumpversion:file:docs/conf.py]
1111
search = version = release = u'{current_version}'

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ a query language for APIs created by Facebook.
1212
[![Python 3 Status](https://pyup.io/repos/github/graphql-python/graphql-core-next/python-3-shield.svg)](https://pyup.io/repos/github/graphql-python/graphql-core-next/)
1313
[![Code Style](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/ambv/black)
1414

15-
The current version 1.1.0 of GraphQL-core-next is up-to-date with GraphQL.js version
16-
14.4.0. All parts of the API are covered by an extensive test suite of currently 1882
15+
The current version 1.1.1 of GraphQL-core-next is up-to-date with GraphQL.js version
16+
14.4.0. All parts of the API are covered by an extensive test suite of currently 1885
1717
unit tests.
1818

1919
Development will be continued with the new distribution name GraphQL-core from now on.

docs/conf.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@
6161
# The short X.Y version.
6262
# version = u'1.1'
6363
# The full version, including alpha/beta/rc tags.
64-
version = release = u'1.1.0'
64+
version = release = u'1.1.1'
6565

6666
# The language for content autogenerated by Sphinx. Refer to documentation
6767
# for a list of supported languages.

poetry.lock

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "graphql-core-next"
3-
version = "1.1.0"
3+
version = "1.1.1"
44
description = """
55
GraphQL-core-next is a Python port of GraphQL.js,
66
the JavaScript reference implementation for GraphQL."""

src/graphql/version.py

Lines changed: 35 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,49 @@
1+
import re
12
from typing import NamedTuple
23
from warnings import warn
34

45
__all__ = ["version", "version_info", "version_js", "version_info_js"]
56

67

8+
version = "1.1.1"
9+
10+
version_js = "14.4.0"
11+
12+
13+
warn(
14+
"GraphQL-core-next has been discontinued."
15+
" It is now released as GraphQL-core v3 and newer.",
16+
DeprecationWarning,
17+
)
18+
19+
20+
_re_version = re.compile(r"(\d+)\.(\d+)\.(\d+)(\D*)(\d*)")
21+
22+
723
class VersionInfo(NamedTuple):
824
major: int
925
minor: int
1026
micro: int
1127
releaselevel: str
1228
serial: int
1329

30+
@classmethod
31+
def from_str(cls, v: str) -> "VersionInfo":
32+
groups = _re_version.match(v).groups() # type: ignore
33+
major, minor, micro = map(int, groups[:3])
34+
level = (groups[3] or "")[:1]
35+
if level == "a":
36+
level = "alpha"
37+
elif level == "b":
38+
level = "beta"
39+
elif level in ("c", "r"):
40+
level = "candidate"
41+
else:
42+
level = "final"
43+
serial = groups[4]
44+
serial = int(serial) if serial else 0
45+
return cls(major, minor, micro, level, serial)
46+
1447
def __str__(self):
1548
v = f"{self.major}.{self.minor}.{self.micro}"
1649
level = self.releaselevel
@@ -19,16 +52,6 @@ def __str__(self):
1952
return v
2053

2154

22-
version = "1.1.0"
23-
24-
version_info = VersionInfo(1, 1, 0, "final", 0)
25-
26-
version_js = "14.4.0"
27-
28-
version_info_js = VersionInfo(14, 4, 0, "final", 0)
55+
version_info = VersionInfo.from_str(version)
2956

30-
warn(
31-
"GraphQL-core-next has been discontinued."
32-
" It is now released as GraphQL-core v3 and newer.",
33-
DeprecationWarning,
34-
)
57+
version_info_js = VersionInfo.from_str(version_js)

tests/test_version.py

Lines changed: 99 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1,58 +1,107 @@
11
import re
22

33
import graphql
4-
from graphql import version, version_info, version_js, version_info_js
4+
from graphql.version import (
5+
VersionInfo,
6+
version,
7+
version_info,
8+
version_js,
9+
version_info_js,
10+
)
511

612
_re_version = re.compile(r"(\d+)\.(\d+)\.(\d+)(?:(a|b|c)(\d+))?$")
713

814

915
def describe_version():
10-
def test_module_version():
11-
assert graphql.__version__ == version
12-
assert graphql.version == version
13-
14-
def test_module_version_info():
15-
assert graphql.__version_info__ == version_info
16-
assert graphql.version_info == version_info
17-
18-
def test_module_version_js():
19-
assert graphql.__version_js__ == version_js
20-
assert graphql.version_js == version_js
21-
22-
def test_module_version_info_js():
23-
assert graphql.__version_info_js__ == version_info_js
24-
assert graphql.version_info_js == version_info_js
25-
26-
def test_version():
27-
assert isinstance(version, str)
28-
assert _re_version.match(version)
29-
30-
def test_version_info():
31-
assert isinstance(version_info, tuple)
32-
assert str(version_info) == version
33-
groups = _re_version.match(version).groups()
34-
assert version_info.major == int(groups[0])
35-
assert version_info.minor == int(groups[1])
36-
assert version_info.micro == int(groups[2])
37-
if groups[3] is None:
38-
assert groups[4] is None
39-
else:
40-
assert version_info.releaselevel[:1] == groups[3]
41-
assert version_info.serial == int(groups[4])
42-
43-
def test_version_js():
44-
assert isinstance(version_js, str)
45-
assert _re_version.match(version_js)
46-
47-
def test_version_info_js():
48-
assert isinstance(version_info_js, tuple)
49-
assert str(version_info_js) == version_js
50-
groups = _re_version.match(version_js).groups()
51-
assert version_info_js.major == int(groups[0])
52-
assert version_info_js.minor == int(groups[1])
53-
assert version_info_js.micro == int(groups[2])
54-
if groups[3] is None:
55-
assert groups[4] is None
56-
else:
57-
assert version_info_js.releaselevel[:1] == groups[3]
58-
assert version_info_js.serial == int(groups[4])
16+
def describe_version_info_class():
17+
def create_version_info_from_fields():
18+
v = VersionInfo(1, 2, 3, "alpha", 4)
19+
assert v.major == 1
20+
assert v.minor == 2
21+
assert v.micro == 3
22+
assert v.releaselevel == "alpha"
23+
assert v.serial == 4
24+
25+
def create_version_info_from_str():
26+
v = VersionInfo.from_str("1.2.3")
27+
assert v.major == 1
28+
assert v.minor == 2
29+
assert v.micro == 3
30+
assert v.releaselevel == "final"
31+
assert v.serial == 0
32+
v = VersionInfo.from_str("1.2.3a4")
33+
assert v.major == 1
34+
assert v.minor == 2
35+
assert v.micro == 3
36+
assert v.releaselevel == "alpha"
37+
assert v.serial == 4
38+
v = VersionInfo.from_str("1.2.3beta4")
39+
assert v.major == 1
40+
assert v.minor == 2
41+
assert v.micro == 3
42+
assert v.releaselevel == "beta"
43+
assert v.serial == 4
44+
v = VersionInfo.from_str("12.34.56rc789")
45+
assert v.major == 12
46+
assert v.minor == 34
47+
assert v.micro == 56
48+
assert v.releaselevel == "candidate"
49+
assert v.serial == 789
50+
51+
def serialize_as_str():
52+
v = VersionInfo(1, 2, 3, "final", 0)
53+
assert str(v) == "1.2.3"
54+
v = VersionInfo(1, 2, 3, "alpha", 4)
55+
assert str(v) == "1.2.3a4"
56+
57+
def describe_graphql_core_version():
58+
def base_package_has_correct_version():
59+
assert graphql.__version__ == version
60+
assert graphql.version == version
61+
62+
def base_package_has_correct_version_info():
63+
assert graphql.__version_info__ is version_info
64+
assert graphql.version_info is version_info
65+
66+
def version_has_correct_format():
67+
assert isinstance(version, str)
68+
assert _re_version.match(version)
69+
70+
def version_info_has_correct_fields():
71+
assert isinstance(version_info, tuple)
72+
assert str(version_info) == version
73+
groups = _re_version.match(version).groups()
74+
assert version_info.major == int(groups[0])
75+
assert version_info.minor == int(groups[1])
76+
assert version_info.micro == int(groups[2])
77+
if groups[3] is None:
78+
assert groups[4] is None
79+
else:
80+
assert version_info.releaselevel[:1] == groups[3]
81+
assert version_info.serial == int(groups[4])
82+
83+
def describe_graphql_js_version():
84+
def base_package_has_correct_version_js():
85+
assert graphql.__version_js__ == version_js
86+
assert graphql.version_js == version_js
87+
88+
def base_package_has_correct_version_info_js():
89+
assert graphql.__version_info_js__ is version_info_js
90+
assert graphql.version_info_js is version_info_js
91+
92+
def version_js_has_correct_format():
93+
assert isinstance(version_js, str)
94+
assert _re_version.match(version_js)
95+
96+
def version_info_js_has_correct_fields():
97+
assert isinstance(version_info_js, tuple)
98+
assert str(version_info_js) == version_js
99+
groups = _re_version.match(version_js).groups()
100+
assert version_info_js.major == int(groups[0])
101+
assert version_info_js.minor == int(groups[1])
102+
assert version_info_js.micro == int(groups[2])
103+
if groups[3] is None:
104+
assert groups[4] is None
105+
else:
106+
assert version_info_js.releaselevel[:1] == groups[3]
107+
assert version_info_js.serial == int(groups[4])

0 commit comments

Comments
 (0)