Add bump_versions.py script (#338)

* Add bump_versions.py script
* Fix pipeline
This commit is contained in:
Alex Root Junior 2020-05-27 01:24:06 +03:00 committed by GitHub
parent e4198fb1f2
commit 28382ebf5f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 763 additions and 157 deletions

1
.apiversion Normal file
View file

@ -0,0 +1 @@
4.8

View file

@ -23,6 +23,10 @@ jobs:
poetry install poetry install
mkdir -p reports mkdir -p reports
- name: Bump versions
run: |
make bump
- name: Lint code - name: Lint code
run: | run: |
make flake8-report make flake8-report

View file

@ -37,7 +37,7 @@ jobs:
- name: Lint code - name: Lint code
run: | run: |
poetry run flake8 aiogram test poetry run flake8 aiogram
poetry run mypy aiogram poetry run mypy aiogram
- name: Run tests - name: Run tests

View file

@ -76,12 +76,14 @@ isort:
black: black:
$(py) black aiogram tests $(py) black aiogram tests
.PHONY: flake8
flake8: flake8:
$(py) flake8 aiogram test $(py) flake8 aiogram
.PHONY: flake8-report
flake8-report: flake8-report:
mkdir -p $(reports_dir)/flake8 mkdir -p $(reports_dir)/flake8
$(py) flake8 --format=html --htmldir=$(reports_dir)/flake8 aiogram test $(py) flake8 --format=html --htmldir=$(reports_dir)/flake8 aiogram
.PHONY: mypy .PHONY: mypy
mypy: mypy:
@ -142,3 +144,9 @@ build: clean flake8-report mypy-report test-coverage docs docs-copy-reports
mkdir -p site/simple mkdir -p site/simple
poetry build poetry build
mv dist site/simple/aiogram mv dist site/simple/aiogram
.PHONY: bump
bump:
poetry version $(args)
$(python) scripts/bump_versions.py

View file

@ -1,5 +1,3 @@
from pkg_resources import get_distribution
from .api import methods, types from .api import methods, types
from .api.client import session from .api.client import session
from .api.client.bot import Bot from .api.client.bot import Bot
@ -30,5 +28,5 @@ __all__ = (
"handler", "handler",
) )
__version__ = get_distribution(dist=__package__).version __version__ = "3.0.0a4"
__api_version__ = "4.8" __api_version__ = "4.8"

1
docs/_package_version.md Normal file
View file

@ -0,0 +1 @@
3.0.0a4

View file

@ -1,6 +1,6 @@
# Overview # Overview
Documentation for version 3.0 [WIP] [^1] Documentation for version {!_package_version.md!} [WIP] [^1]
[![MIT License](https://img.shields.io/pypi/l/aiogram.svg)](https://opensource.org/licenses/MIT) [![MIT License](https://img.shields.io/pypi/l/aiogram.svg)](https://opensource.org/licenses/MIT)
[![Supported python versions](https://img.shields.io/pypi/pyversions/aiogram.svg)](https://pypi.python.org/pypi/aiogram) [![Supported python versions](https://img.shields.io/pypi/pyversions/aiogram.svg)](https://pypi.python.org/pypi/aiogram)

833
poetry.lock generated

File diff suppressed because it is too large Load diff

View file

@ -68,6 +68,7 @@ aiohttp-socks = "^0.3.4"
pre-commit = "^2.3.0" pre-commit = "^2.3.0"
packaging = "^20.3" packaging = "^20.3"
typing-extensions = "^3.7.4" typing-extensions = "^3.7.4"
poetry = "^1.0.5"
[tool.poetry.extras] [tool.poetry.extras]
fast = ["uvloop"] fast = ["uvloop"]

60
scripts/bump_versions.py Normal file
View file

@ -0,0 +1,60 @@
import re
from pathlib import Path
from poetry.factory import Factory
from poetry.masonry.metadata import Metadata
BASE_PATTERN = r'({variable} = ")[a-z0-9.+]+(")'
PACKAGE_VERSION = re.compile(BASE_PATTERN.format(variable="__version__"))
API_VERSION = re.compile(BASE_PATTERN.format(variable="__api_version__"))
def get_package_version() -> str:
poetry_instance = Factory().create_poetry(Path.cwd())
meta: Metadata = Metadata.from_package(poetry_instance.package)
return meta.version
def get_telegram_api_version() -> str:
path = Path.cwd() / ".apiversion"
version = path.read_text().strip()
return version
def replace_line(content: str, pattern: re.Pattern, new_value: str) -> str:
return pattern.sub(f"\\g<1>{new_value}\\g<2>", content)
def write_package_meta(package_version: str, api_version: str) -> None:
path = Path.cwd() / "aiogram" / "__init__.py"
content = path.read_text()
content = replace_line(content, PACKAGE_VERSION, package_version)
content = replace_line(content, API_VERSION, api_version)
print(f"Write {path}")
path.write_text(content)
def write_docs_meta(package_version: str, api_version: str) -> None:
api_meta = Path.cwd() / "docs" / "_api_version.md"
package_meta = Path.cwd() / "docs" / "_package_version.md"
print(f"Write {api_meta}")
api_meta.write_text(api_version + "\n")
print(f"Write {package_meta}")
package_meta.write_text(package_version + "\n")
def main():
package_version = get_package_version()
api_version = get_telegram_api_version()
print(f"Package version: {package_version}")
print(f"Telegram Bot API version: {api_version}")
write_package_meta(package_version=package_version, api_version=api_version)
write_docs_meta(package_version=package_version, api_version=api_version)
if __name__ == "__main__":
main()