Update Python versions and boilerplate
Drop support for Python 3.8, add 3.12, switch from tox to nox, openstack's release jobs to opendev's, and use updated pyproject packaging standards. Depends-On: https://review.opendev.org/946280 Change-Id: I462014b08ec3ecb74674365a2fd1f532f61dfa0c
This commit is contained in:
parent
78f48d0509
commit
5e3bc54373
6
.flake8
Normal file
6
.flake8
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
[flake8]
|
||||||
|
exclude=.venv,.git,.nox,.tox,dist,doc,*lib/python*,*egg,build
|
||||||
|
# E123, E125 and W503 are invalid per PEP-8; OpenStack's H rules don't apply
|
||||||
|
# TODO: drop W504 once the scripts are adjusted to suit it
|
||||||
|
ignore = E123,E125,H,W503,W504
|
||||||
|
show-source = True
|
1
.gitignore
vendored
1
.gitignore
vendored
@ -27,6 +27,7 @@ pip-log.txt
|
|||||||
.tox
|
.tox
|
||||||
nosetests.xml
|
nosetests.xml
|
||||||
.testrepository
|
.testrepository
|
||||||
|
.stestr
|
||||||
|
|
||||||
# Translations
|
# Translations
|
||||||
*.mo
|
*.mo
|
||||||
|
3
.stestr.conf
Normal file
3
.stestr.conf
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
[DEFAULT]
|
||||||
|
test_path=yaml2ical/tests
|
||||||
|
top_dir=./
|
24
.zuul.yaml
24
.zuul.yaml
@ -1,3 +1,23 @@
|
|||||||
- project:
|
- project:
|
||||||
templates:
|
check:
|
||||||
- openstack-python3-jobs
|
jobs:
|
||||||
|
- build-python-release
|
||||||
|
- nox-linters
|
||||||
|
- nox-py39:
|
||||||
|
nodeset: ubuntu-focal
|
||||||
|
- nox-py312:
|
||||||
|
nodeset: ubuntu-noble
|
||||||
|
gate:
|
||||||
|
jobs:
|
||||||
|
- build-python-release
|
||||||
|
- nox-linters
|
||||||
|
- nox-py39:
|
||||||
|
nodeset: ubuntu-focal
|
||||||
|
- nox-py312:
|
||||||
|
nodeset: ubuntu-noble
|
||||||
|
promote:
|
||||||
|
jobs:
|
||||||
|
- opendev-promote-python
|
||||||
|
release:
|
||||||
|
jobs:
|
||||||
|
- opendev-release-python
|
||||||
|
@ -24,7 +24,7 @@ Running Locally from Command Line
|
|||||||
To test this project locally, you must have the following requirements
|
To test this project locally, you must have the following requirements
|
||||||
installed:
|
installed:
|
||||||
|
|
||||||
* Python 3.3+
|
* Python
|
||||||
* `iCalendar` python library
|
* `iCalendar` python library
|
||||||
* `PyYaml` python library
|
* `PyYaml` python library
|
||||||
|
|
||||||
|
39
noxfile.py
Normal file
39
noxfile.py
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
import nox
|
||||||
|
|
||||||
|
|
||||||
|
nox.options.error_on_external_run = True
|
||||||
|
nox.options.reuse_existing_virtualenvs = True
|
||||||
|
nox.options.sessions = ["tests-3", "linters"]
|
||||||
|
|
||||||
|
|
||||||
|
# Convenience wrapper for running the project
|
||||||
|
@nox.session(python="3")
|
||||||
|
def mkical(session):
|
||||||
|
session.install(".")
|
||||||
|
session.run("yaml2ical", "-y", "meetings/", "-i", "icals/", "-f")
|
||||||
|
|
||||||
|
|
||||||
|
# Note setting python this way seems to give us a target name without
|
||||||
|
# python specific suffixes while still allowing us to force a specific
|
||||||
|
# version using --force-python.
|
||||||
|
@nox.session(python="3")
|
||||||
|
def linters(session):
|
||||||
|
# TODO: switch this line to 'session.install("--group", "test-linters")'
|
||||||
|
session.install(".[test-linters]")
|
||||||
|
session.run("flake8")
|
||||||
|
|
||||||
|
|
||||||
|
@nox.session(python="3")
|
||||||
|
def venv(session):
|
||||||
|
# TODO: switch to 'session.install("-e", ".", "--group", "test-unit")'
|
||||||
|
session.install("-e", ".[test-unit]")
|
||||||
|
session.run(*session.posargs)
|
||||||
|
|
||||||
|
|
||||||
|
# This will attempt to run python3 tests by default.
|
||||||
|
@nox.session(python=["3"])
|
||||||
|
def tests(session):
|
||||||
|
# TODO: switch to 'session.install("-e", ".", "--group", "test-unit")'
|
||||||
|
session.install("-e", ".[test-unit]")
|
||||||
|
session.run("stestr", "run", *session.posargs)
|
||||||
|
session.run("stestr", "slowest")
|
56
pyproject.toml
Normal file
56
pyproject.toml
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
|
||||||
|
[build-system]
|
||||||
|
requires = ["pbr>=6.1.1"]
|
||||||
|
build-backend = "pbr.build"
|
||||||
|
|
||||||
|
[project]
|
||||||
|
authors = [
|
||||||
|
{name = "OpenDev Contributors", email = "service-discuss@lists.opendev.org"},
|
||||||
|
{name = "NDSU IBM Capstone", email = "service-discuss@lists.opendev.org"},
|
||||||
|
]
|
||||||
|
classifiers = [
|
||||||
|
"Intended Audience :: Information Technology",
|
||||||
|
"Intended Audience :: System Administrators",
|
||||||
|
"Operating System :: POSIX :: Linux",
|
||||||
|
"Programming Language :: Python",
|
||||||
|
"Programming Language :: Python :: 3.9",
|
||||||
|
"Programming Language :: Python :: 3.10",
|
||||||
|
"Programming Language :: Python :: 3.11",
|
||||||
|
"Programming Language :: Python :: 3.12",
|
||||||
|
]
|
||||||
|
dependencies = [
|
||||||
|
"Jinja2>=2.8", # BSD License (3 clause)
|
||||||
|
"PyYAML>=3.1.0", # MIT
|
||||||
|
"icalendar",
|
||||||
|
"pbr>=1.6", # Apache-2.0
|
||||||
|
"pytz",
|
||||||
|
]
|
||||||
|
description = "Convert YAML meeting descriptions into iCalendar files"
|
||||||
|
dynamic = ["version"]
|
||||||
|
license = "Apache-2.0"
|
||||||
|
name = "yaml2ical"
|
||||||
|
readme = {charset = "UTF-8", content-type = "text/x-rst", file = "README.rst"}
|
||||||
|
requires-python = ">=3.9"
|
||||||
|
|
||||||
|
# TODO: replace this with '[dependency-groups]' once pip 25.1 is released
|
||||||
|
[project.optional-dependencies]
|
||||||
|
test-linters = [
|
||||||
|
"hacking>=7,<8", # Apache-2.0
|
||||||
|
]
|
||||||
|
test-unit = [
|
||||||
|
"coverage>=3.6", # Apache-2.0
|
||||||
|
"fixtures>=3.0.0", # Apache-2.0/BSD
|
||||||
|
"python-subunit>=0.0.18", # Apache-2.0/BSD
|
||||||
|
"stestr>=1.0.0",
|
||||||
|
"testtools>=1.4.0", # MIT
|
||||||
|
]
|
||||||
|
|
||||||
|
[project.scripts]
|
||||||
|
yaml2ical = "yaml2ical.cli:main"
|
||||||
|
|
||||||
|
[project.urls]
|
||||||
|
"Browse Source" = "https://opendev.org/opendev/yaml2ical"
|
||||||
|
"Bug Reporting" = "https://storyboard.openstack.org/#!/project/opendev/yaml2ical"
|
||||||
|
"Documentation" = "https://opendev.org/opendev/yaml2ical/src/branch/master/README.rst"
|
||||||
|
"Git Clone URL" = "https://opendev.org/opendev/yaml2ical"
|
||||||
|
"License Texts" = "https://opendev.org/opendev/yaml2ical/src/branch/master/LICENSE"
|
@ -1,5 +0,0 @@
|
|||||||
pbr>=1.6 # Apache-2.0
|
|
||||||
icalendar
|
|
||||||
Jinja2>=2.8 # BSD License (3 clause)
|
|
||||||
PyYAML>=3.1.0 # MIT
|
|
||||||
pytz
|
|
29
setup.cfg
29
setup.cfg
@ -1,30 +1,3 @@
|
|||||||
|
# TODO: Delete this file once PBR can read project names from pyproject.toml
|
||||||
[metadata]
|
[metadata]
|
||||||
name = yaml2ical
|
name = yaml2ical
|
||||||
summary = Convert YAML meeting descriptions into iCalendar files
|
|
||||||
description_file =
|
|
||||||
README.rst
|
|
||||||
author = NDSU IBM Capstone Group & OpenStack Infrastructure Team
|
|
||||||
author_email = openstack-infra@lists.openstack.org
|
|
||||||
home_page = http://docs.openstack.org/infra/system-config/
|
|
||||||
python_requires = >=3.8
|
|
||||||
classifier =
|
|
||||||
Intended Audience :: Information Technology
|
|
||||||
Intended Audience :: System Administrators
|
|
||||||
License :: OSI Approved :: Apache Software License
|
|
||||||
Operating System :: POSIX :: Linux
|
|
||||||
Programming Language :: Python
|
|
||||||
Programming Language :: Python :: 3.8
|
|
||||||
Programming Language :: Python :: 3.9
|
|
||||||
Programming Language :: Python :: 3.10
|
|
||||||
Programming Language :: Python :: 3.11
|
|
||||||
|
|
||||||
[global]
|
|
||||||
setup-hooks =
|
|
||||||
pbr.hooks.setup_hook
|
|
||||||
|
|
||||||
[files]
|
|
||||||
packages = yaml2ical
|
|
||||||
|
|
||||||
[entry_points]
|
|
||||||
console_scripts =
|
|
||||||
yaml2ical = yaml2ical.cli:main
|
|
||||||
|
20
setup.py
20
setup.py
@ -1,7 +1,21 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
# Copyright OpenDev Contributors
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||||
|
# implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
# TODO: Delete this file once PBR gains the ability to act as a build hook
|
||||||
|
|
||||||
import setuptools
|
import setuptools
|
||||||
|
|
||||||
setuptools.setup(
|
setuptools.setup(pbr=True)
|
||||||
setup_requires=['pbr'],
|
|
||||||
pbr=True)
|
|
||||||
|
@ -1,8 +0,0 @@
|
|||||||
hacking>=3.2.0 # Apache-2.0
|
|
||||||
|
|
||||||
coverage>=3.6 # Apache-2.0
|
|
||||||
fixtures>=3.0.0 # Apache-2.0/BSD
|
|
||||||
python-subunit>=0.0.18 # Apache-2.0/BSD
|
|
||||||
testrepository>=0.0.18 # Apache-2.0/BSD
|
|
||||||
testscenarios>=0.4 # Apache-2.0/BSD
|
|
||||||
testtools>=1.4.0 # MIT
|
|
24
tox.ini
24
tox.ini
@ -1,24 +0,0 @@
|
|||||||
[tox]
|
|
||||||
minversion = 1.6
|
|
||||||
envlist = py3,pep8
|
|
||||||
ignore_basepython_conflict = True
|
|
||||||
|
|
||||||
[testenv]
|
|
||||||
basepython = python3
|
|
||||||
deps = -r{toxinidir}/requirements.txt
|
|
||||||
-r{toxinidir}/test-requirements.txt
|
|
||||||
commands = python setup.py testr --slowest --testr-args='{posargs}'
|
|
||||||
usedevelop = true
|
|
||||||
|
|
||||||
[testenv:pep8]
|
|
||||||
commands = flake8
|
|
||||||
|
|
||||||
[testenv:venv]
|
|
||||||
commands = {posargs}
|
|
||||||
|
|
||||||
[testenv:mkical]
|
|
||||||
commands = yaml2ical -y meetings/ -i icals/ -f
|
|
||||||
|
|
||||||
[flake8]
|
|
||||||
show-source = True
|
|
||||||
exclude = .venv,.tox,dist,doc,*.egg
|
|
Loading…
x
Reference in New Issue
Block a user