Release management: add release management bits
All checks were successful
ci/woodpecker/push/linters Pipeline was successful
All checks were successful
ci/woodpecker/push/linters Pipeline was successful
We based this on Twisted's own settings, which use hatchling as a build system. With these changes, the project is now published as RC on pypi, mostly to secure the module name. It has not been tested yet, but we should be able to install using pip and run the project as a mdoule.
This commit is contained in:
parent
23134fa2d6
commit
56fdef377d
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -1,2 +1,3 @@
|
|||
data
|
||||
.env
|
||||
dist
|
||||
.env
|
||||
|
|
2
Pipfile
2
Pipfile
|
@ -24,6 +24,8 @@ types-markdown = "*"
|
|||
types-pyyaml = "*"
|
||||
mypy-zope = "*"
|
||||
black = "*"
|
||||
hatchling = "*"
|
||||
hatch-fancy-pypi-readme = "*"
|
||||
|
||||
[pipenv]
|
||||
allow_prereleases = true
|
||||
|
|
135
Pipfile.lock
generated
135
Pipfile.lock
generated
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"_meta": {
|
||||
"hash": {
|
||||
"sha256": "dc034418f832f1efe32a32f47f79b4d0920986204aa72c7f8bae8f55b8674eb3"
|
||||
"sha256": "35dd8cd6863fdb53fa43075f74a46b038fe3c76f69b09f53b86dc14a00f74832"
|
||||
},
|
||||
"pipfile-spec": 6,
|
||||
"requires": {
|
||||
|
@ -396,11 +396,11 @@
|
|||
},
|
||||
"typing-extensions": {
|
||||
"hashes": [
|
||||
"sha256:56a8f7a8776ea160e59ef0af6fc3a3a03b7d42156b90e47f0241515fcec620c2",
|
||||
"sha256:cc22327e22d9b583d1565ce1ed9f5ecc22831afa743f8789a403cad849fb702b"
|
||||
"sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783",
|
||||
"sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd"
|
||||
],
|
||||
"markers": "python_version >= '3.8'",
|
||||
"version": "==4.9.0rc1"
|
||||
"version": "==4.9.0"
|
||||
},
|
||||
"werkzeug": {
|
||||
"hashes": [
|
||||
|
@ -410,7 +410,7 @@
|
|||
"markers": "python_version >= '3.8'",
|
||||
"version": "==3.0.1"
|
||||
},
|
||||
"zope.interface": {
|
||||
"zope-interface": {
|
||||
"hashes": [
|
||||
"sha256:0c8cf55261e15590065039696607f6c9c1aeda700ceee40c70478552d323b3ff",
|
||||
"sha256:13b7d0f2a67eb83c385880489dbb80145e9d344427b4262c49fbf2581677c11c",
|
||||
|
@ -456,12 +456,12 @@
|
|||
"develop": {
|
||||
"bandit": {
|
||||
"hashes": [
|
||||
"sha256:75665181dc1e0096369112541a056c59d1c5f66f9bb74a8d686c3c362b83f549",
|
||||
"sha256:bdfc739baa03b880c2d15d0431b31c658ffc348e907fe197e54e0389dd59e11e"
|
||||
"sha256:36da17c67fc87579a5d20c323c8d0b1643a890a2b93f00b3d1229966624694ff",
|
||||
"sha256:72ce7bc9741374d96fb2f1c9a8960829885f1243ffde743de70a19cee353e8f3"
|
||||
],
|
||||
"index": "pypi",
|
||||
"markers": "python_version >= '3.7'",
|
||||
"version": "==1.7.5"
|
||||
"markers": "python_version >= '3.8'",
|
||||
"version": "==1.7.6"
|
||||
},
|
||||
"black": {
|
||||
"hashes": [
|
||||
|
@ -496,6 +496,14 @@
|
|||
"markers": "python_version >= '3.7'",
|
||||
"version": "==8.1.7"
|
||||
},
|
||||
"editables": {
|
||||
"hashes": [
|
||||
"sha256:309627d9b5c4adc0e668d8c6fa7bac1ba7c8c5d415c2d27f60f081f8e80d1de2",
|
||||
"sha256:61e5ffa82629e0d8bfe09bc44a07db3c1ab8ed1ce78a6980732870f19b5e7d4c"
|
||||
],
|
||||
"markers": "python_version >= '3.7'",
|
||||
"version": "==0.5"
|
||||
},
|
||||
"flake8": {
|
||||
"hashes": [
|
||||
"sha256:d5b3857f07c030bdb5bf41c7f53799571d75c4491748a3adcd47de929e34cd23",
|
||||
|
@ -521,6 +529,24 @@
|
|||
"markers": "python_version >= '3.7'",
|
||||
"version": "==3.1.40"
|
||||
},
|
||||
"hatch-fancy-pypi-readme": {
|
||||
"hashes": [
|
||||
"sha256:9a2c0e5d527611701858083bfb355876f26e04a075342b7d4da725ba5a6dd6ea",
|
||||
"sha256:b1df44063094af1e8248ceacd47a92c9cf313d6b9823bf66af8a927c3960287d"
|
||||
],
|
||||
"index": "pypi",
|
||||
"markers": "python_version >= '3.7'",
|
||||
"version": "==23.1.0"
|
||||
},
|
||||
"hatchling": {
|
||||
"hashes": [
|
||||
"sha256:0857c175c74e0d229cc26793aae753afce454fe0eeda1bf8317fb7372a405d82",
|
||||
"sha256:517e744d54c924b01e3a8faf205acc3a5a59bdbb24bb13baee2f48c483231776"
|
||||
],
|
||||
"index": "pypi",
|
||||
"markers": "python_version >= '3.8'",
|
||||
"version": "==1.19.0"
|
||||
},
|
||||
"isort": {
|
||||
"hashes": [
|
||||
"sha256:0ec8b74806e80fec33e6e7ba89d35e17b3eb1c4c74316ea44cf877cc26e8b118",
|
||||
|
@ -556,37 +582,37 @@
|
|||
},
|
||||
"mypy": {
|
||||
"hashes": [
|
||||
"sha256:159aa9acb16086b79bbb0016145034a1a05360626046a929f84579ce1666b315",
|
||||
"sha256:258b22210a4a258ccd077426c7a181d789d1121aca6db73a83f79372f5569ae0",
|
||||
"sha256:26f71b535dfc158a71264e6dc805a9f8d2e60b67215ca0bfa26e2e1aa4d4d373",
|
||||
"sha256:26fb32e4d4afa205b24bf645eddfbb36a1e17e995c5c99d6d00edb24b693406a",
|
||||
"sha256:2fc3a600f749b1008cc75e02b6fb3d4db8dbcca2d733030fe7a3b3502902f161",
|
||||
"sha256:32cb59609b0534f0bd67faebb6e022fe534bdb0e2ecab4290d683d248be1b275",
|
||||
"sha256:330857f9507c24de5c5724235e66858f8364a0693894342485e543f5b07c8693",
|
||||
"sha256:361da43c4f5a96173220eb53340ace68cda81845cd88218f8862dfb0adc8cddb",
|
||||
"sha256:4a465ea2ca12804d5b34bb056be3a29dc47aea5973b892d0417c6a10a40b2d65",
|
||||
"sha256:51cb1323064b1099e177098cb939eab2da42fea5d818d40113957ec954fc85f4",
|
||||
"sha256:57b10c56016adce71fba6bc6e9fd45d8083f74361f629390c556738565af8eeb",
|
||||
"sha256:596fae69f2bfcb7305808c75c00f81fe2829b6236eadda536f00610ac5ec2243",
|
||||
"sha256:5d627124700b92b6bbaa99f27cbe615c8ea7b3402960f6372ea7d65faf376c14",
|
||||
"sha256:6ac9c21bfe7bc9f7f1b6fae441746e6a106e48fc9de530dea29e8cd37a2c0cc4",
|
||||
"sha256:82cb6193de9bbb3844bab4c7cf80e6227d5225cc7625b068a06d005d861ad5f1",
|
||||
"sha256:8f772942d372c8cbac575be99f9cc9d9fb3bd95c8bc2de6c01411e2c84ebca8a",
|
||||
"sha256:9fece120dbb041771a63eb95e4896791386fe287fefb2837258925b8326d6160",
|
||||
"sha256:a156e6390944c265eb56afa67c74c0636f10283429171018446b732f1a05af25",
|
||||
"sha256:a9ec1f695f0c25986e6f7f8778e5ce61659063268836a38c951200c57479cc12",
|
||||
"sha256:abed92d9c8f08643c7d831300b739562b0a6c9fcb028d211134fc9ab20ccad5d",
|
||||
"sha256:b031b9601f1060bf1281feab89697324726ba0c0bae9d7cd7ab4b690940f0b92",
|
||||
"sha256:c543214ffdd422623e9fedd0869166c2f16affe4ba37463975043ef7d2ea8770",
|
||||
"sha256:d28ddc3e3dfeab553e743e532fb95b4e6afad51d4706dd22f28e1e5e664828d2",
|
||||
"sha256:f33592ddf9655a4894aef22d134de7393e95fcbdc2d15c1ab65828eee5c66c70",
|
||||
"sha256:f6b0e77db9ff4fda74de7df13f30016a0a663928d669c9f2c057048ba44f09bb",
|
||||
"sha256:f757063a83970d67c444f6e01d9550a7402322af3557ce7630d3c957386fa8f5",
|
||||
"sha256:ff0cedc84184115202475bbb46dd99f8dcb87fe24d5d0ddfc0fe6b8575c88d2f"
|
||||
"sha256:12cce78e329838d70a204293e7b29af9faa3ab14899aec397798a4b41be7f340",
|
||||
"sha256:1484b8fa2c10adf4474f016e09d7a159602f3239075c7bf9f1627f5acf40ad49",
|
||||
"sha256:204e0d6de5fd2317394a4eff62065614c4892d5a4d1a7ee55b765d7a3d9e3f82",
|
||||
"sha256:2643d145af5292ee956aa0a83c2ce1038a3bdb26e033dadeb2f7066fb0c9abce",
|
||||
"sha256:2c6e4464ed5f01dc44dc9821caf67b60a4e5c3b04278286a85c067010653a0eb",
|
||||
"sha256:2f7f6985d05a4e3ce8255396df363046c28bea790e40617654e91ed580ca7c51",
|
||||
"sha256:31902408f4bf54108bbfb2e35369877c01c95adc6192958684473658c322c8a5",
|
||||
"sha256:40716d1f821b89838589e5b3106ebbc23636ffdef5abc31f7cd0266db936067e",
|
||||
"sha256:4b901927f16224d0d143b925ce9a4e6b3a758010673eeded9b748f250cf4e8f7",
|
||||
"sha256:4fc3d14ee80cd22367caaaf6e014494415bf440980a3045bf5045b525680ac33",
|
||||
"sha256:5cf3f0c5ac72139797953bd50bc6c95ac13075e62dbfcc923571180bebb662e9",
|
||||
"sha256:6dbdec441c60699288adf051f51a5d512b0d818526d1dcfff5a41f8cd8b4aaf1",
|
||||
"sha256:72cf32ce7dd3562373f78bd751f73c96cfb441de147cc2448a92c1a308bd0ca6",
|
||||
"sha256:75aa828610b67462ffe3057d4d8a4112105ed211596b750b53cbfe182f44777a",
|
||||
"sha256:75c4d2a6effd015786c87774e04331b6da863fc3fc4e8adfc3b40aa55ab516fe",
|
||||
"sha256:78e25b2fd6cbb55ddfb8058417df193f0129cad5f4ee75d1502248e588d9e0d7",
|
||||
"sha256:84860e06ba363d9c0eeabd45ac0fde4b903ad7aa4f93cd8b648385a888e23200",
|
||||
"sha256:8c5091ebd294f7628eb25ea554852a52058ac81472c921150e3a61cdd68f75a7",
|
||||
"sha256:944bdc21ebd620eafefc090cdf83158393ec2b1391578359776c00de00e8907a",
|
||||
"sha256:9c7ac372232c928fff0645d85f273a726970c014749b924ce5710d7d89763a28",
|
||||
"sha256:d9b338c19fa2412f76e17525c1b4f2c687a55b156320acb588df79f2e6fa9fea",
|
||||
"sha256:ee5d62d28b854eb61889cde4e1dbc10fbaa5560cb39780c3995f6737f7e82120",
|
||||
"sha256:f2c2521a8e4d6d769e3234350ba7b65ff5d527137cdcde13ff4d99114b0c8e7d",
|
||||
"sha256:f6efc9bd72258f89a3816e3a98c09d36f079c223aa345c659622f056b760ab42",
|
||||
"sha256:f7c5d642db47376a0cc130f0de6d055056e010debdaf0707cd2b0fc7e7ef30ea",
|
||||
"sha256:fcb6d9afb1b6208b4c712af0dafdc650f518836065df0d4fb1d800f5d6773db2",
|
||||
"sha256:fcd2572dd4519e8a6642b733cd3a8cfc1ef94bafd0c1ceed9c94fe736cb65b6a"
|
||||
],
|
||||
"index": "pypi",
|
||||
"markers": "python_version >= '3.8'",
|
||||
"version": "==1.5.1"
|
||||
"version": "==1.7.1"
|
||||
},
|
||||
"mypy-extensions": {
|
||||
"hashes": [
|
||||
|
@ -598,11 +624,11 @@
|
|||
},
|
||||
"mypy-zope": {
|
||||
"hashes": [
|
||||
"sha256:003953896629d762d7f497135171ad549df42a8ac63c1521a230832dd6f7fc25",
|
||||
"sha256:ffa291a7af9f5904ce9f0e56de44323a4476e28aaf0d68361b62b1b0e997d0b8"
|
||||
"sha256:08cc305ec389d7eb796a702a183ac6671f174a960bef4e0570a57108ae8e8f83",
|
||||
"sha256:46d1e93df2da15545ff2a06343808f7c4878523589fc8d6a99e62b1e9c6be363"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==1.0.1"
|
||||
"version": "==1.0.2"
|
||||
},
|
||||
"packaging": {
|
||||
"hashes": [
|
||||
|
@ -614,11 +640,11 @@
|
|||
},
|
||||
"pathspec": {
|
||||
"hashes": [
|
||||
"sha256:1d6ed233af05e679efb96b1851550ea95bbb64b7c490b0f5aa52996c11e92a20",
|
||||
"sha256:e0d8d0ac2f12da61956eb2306b69f9469b42f4deb0f3cb6ed47b9cce9996ced3"
|
||||
"sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08",
|
||||
"sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712"
|
||||
],
|
||||
"markers": "python_version >= '3.7'",
|
||||
"version": "==0.11.2"
|
||||
"markers": "python_version >= '3.8'",
|
||||
"version": "==0.12.1"
|
||||
},
|
||||
"pbr": {
|
||||
"hashes": [
|
||||
|
@ -636,6 +662,14 @@
|
|||
"markers": "python_version >= '3.8'",
|
||||
"version": "==4.1.0"
|
||||
},
|
||||
"pluggy": {
|
||||
"hashes": [
|
||||
"sha256:cf61ae8f126ac6f7c451172cf30e3e43d3ca77615509771b3a984a0730651e12",
|
||||
"sha256:d89c696a773f8bd377d18e5ecda92b7a3793cbe66c87060a6fb58c7b6e1061f7"
|
||||
],
|
||||
"markers": "python_version >= '3.8'",
|
||||
"version": "==1.3.0"
|
||||
},
|
||||
"pycodestyle": {
|
||||
"hashes": [
|
||||
"sha256:41ba0e7afc9752dfb53ced5489e89f8186be00e599e712660695b7a75ff2663f",
|
||||
|
@ -749,6 +783,13 @@
|
|||
"markers": "python_version >= '3.8'",
|
||||
"version": "==5.1.0"
|
||||
},
|
||||
"trove-classifiers": {
|
||||
"hashes": [
|
||||
"sha256:02307750cbbac2b3d13078662f8a5bf077732bf506e9c33c97204b7f68f3699e",
|
||||
"sha256:ff8f7fd82c7932113b46e7ef6742c70091cc63640c8c65db00d91f2e940b9514"
|
||||
],
|
||||
"version": "==2023.11.29"
|
||||
},
|
||||
"types-markdown": {
|
||||
"hashes": [
|
||||
"sha256:2299b9086c695f408a3ebabf820f1fba3b239f1b3bfdbb32bf42d530b42cdd83",
|
||||
|
@ -768,11 +809,11 @@
|
|||
},
|
||||
"typing-extensions": {
|
||||
"hashes": [
|
||||
"sha256:56a8f7a8776ea160e59ef0af6fc3a3a03b7d42156b90e47f0241515fcec620c2",
|
||||
"sha256:cc22327e22d9b583d1565ce1ed9f5ecc22831afa743f8789a403cad849fb702b"
|
||||
"sha256:23478f88c37f27d76ac8aee6c905017a143b0b1b886c3c9f66bc2fd94f9f5783",
|
||||
"sha256:af72aea155e91adfc61c3ae9e0e342dbc0cba726d6cba4b6c72c1f34e47291cd"
|
||||
],
|
||||
"markers": "python_version >= '3.8'",
|
||||
"version": "==4.9.0rc1"
|
||||
"version": "==4.9.0"
|
||||
},
|
||||
"zope.event": {
|
||||
"hashes": [
|
||||
|
|
14
mypy.ini
14
mypy.ini
|
@ -1,14 +0,0 @@
|
|||
[mypy]
|
||||
namespace_packages=True
|
||||
plugins=mypy_zope:plugin
|
||||
#TODO: progress so we can enable this
|
||||
#strict=True
|
||||
check_untyped_defs=True
|
||||
disallow_untyped_defs=True
|
||||
warn_redundant_casts=True
|
||||
warn_unused_configs= True
|
||||
warn_unused_ignores = False
|
||||
warn_no_return=True
|
||||
warn_return_any=True
|
||||
warn_unreachable=True
|
||||
enable_error_code=unused-awaitable
|
125
pyproject.toml
125
pyproject.toml
|
@ -1,3 +1,113 @@
|
|||
[build-system]
|
||||
requires = [
|
||||
"hatchling >= 1.10.0",
|
||||
"hatch-fancy-pypi-readme >= 22.5.0",
|
||||
"incremental >= 22.10.0",
|
||||
]
|
||||
build-backend = "hatchling.build"
|
||||
|
||||
[project]
|
||||
name = "adlermanager"
|
||||
dynamic = [
|
||||
"version",
|
||||
"readme",
|
||||
]
|
||||
description = "A self-hostable status webpage that uses Prometheus alerts to create and maintain service status and incident tracking / customer information flow."
|
||||
license = { text = "MIT License" }
|
||||
# When updating this value, make sure our CI matrix includes a matching minimum version.
|
||||
requires-python = ">=3.8.0"
|
||||
authors = [
|
||||
{ name = "Evilham", email = "cvs@evilham.com" },
|
||||
]
|
||||
classifiers = [
|
||||
"Programming Language :: Python :: 3",
|
||||
"Programming Language :: Python :: 3 :: Only",
|
||||
"Programming Language :: Python :: 3.8",
|
||||
"Programming Language :: Python :: 3.9",
|
||||
"Programming Language :: Python :: 3.10",
|
||||
"Programming Language :: Python :: 3.11",
|
||||
"Programming Language :: Python :: 3.12",
|
||||
]
|
||||
dependencies = [
|
||||
"Twisted[conch] >= 22.0.0",
|
||||
"attrs >= 21.3.0",
|
||||
"pyyaml >= 6.0.0",
|
||||
"klein >= 22.0.0",
|
||||
"jinja2 >= 3.1.0",
|
||||
"markdown >= 3.5.0",
|
||||
]
|
||||
|
||||
[project.scripts]
|
||||
adlermanager = "adlermanager.__main__:run"
|
||||
|
||||
[project.urls]
|
||||
Changelog = "https://farga.exo.cat/exo/prometheus-adlermanager/commits/branch/main"
|
||||
Documentation = "https://farga.exo.cat/exo/prometheus-adlermanager/"
|
||||
Homepage = "https://farga.exo.cat/exo/prometheus-adlermanager/"
|
||||
Issues = "https://farga.exo.cat/exo/prometheus-adlermanager/issues"
|
||||
Source = "https://farga.exo.cat/exo/prometheus-adlermanager/"
|
||||
|
||||
[tool.hatch.metadata]
|
||||
# This is here to enable backward compatible extra dependencies
|
||||
# that are defined using underscores.
|
||||
allow-ambiguous-features = true
|
||||
|
||||
[tool.hatch.version]
|
||||
source = "code"
|
||||
path = "src/adlermanager/__init__.py"
|
||||
search-paths = ["src"]
|
||||
|
||||
[tool.hatch.metadata.hooks.fancy-pypi-readme]
|
||||
content-type = "text/markdown"
|
||||
fragments = [
|
||||
{ path = "README.md" },
|
||||
]
|
||||
|
||||
[[tool.hatch.metadata.hooks.fancy-pypi-readme.substitutions]]
|
||||
# Munge links of the form `NEWS <NEWS.rst>`_ to point at the appropriate
|
||||
# location on GitHub so that they function when the long description is
|
||||
# displayed on PyPI.
|
||||
pattern = '`([^`]+)\s+<(?!https?://)([^>]+)>`_'
|
||||
replacement = '`\1 <https://farga.eXO.cat/exo/adlermanager/src/branch/main/\2>`_'
|
||||
ignore-case = true
|
||||
|
||||
[tool.hatch.build.targets.wheel]
|
||||
packages = [
|
||||
"src/adlermanager",
|
||||
]
|
||||
exclude = [
|
||||
"*.pxi",
|
||||
"*.pyx",
|
||||
"build.bat",
|
||||
]
|
||||
|
||||
[tool.hatch.build.targets.sdist]
|
||||
# This dictates what goes into a sdist tarball.
|
||||
# As a release tarball, we want to include:
|
||||
# - All of the library code.
|
||||
# - All the useful documentation (but not the super historic stuff)
|
||||
# - All of the test files, so that the tests can be run on an installed copy.
|
||||
# We do not want to include:
|
||||
# - Release management files (e.g. topfiles)
|
||||
# - Things only useful when running from a source checkout
|
||||
include = [
|
||||
# Documentation
|
||||
# "/docs",
|
||||
|
||||
# Library code
|
||||
"/src",
|
||||
# "/CONTRIBUTING.md",
|
||||
# "/INSTALL.rst",
|
||||
# "/NEWS.rst",
|
||||
"/README.md",
|
||||
# "/code_of_conduct.md",
|
||||
|
||||
# Test-running utilities for downstream packagers
|
||||
# "/.coveragerc",
|
||||
"/mypy.ini",
|
||||
# "/tox.ini",
|
||||
]
|
||||
|
||||
[tool.black]
|
||||
target-version = ['py39']
|
||||
|
||||
|
@ -12,6 +122,21 @@ known_openssl = "OpenSSL"
|
|||
combine_as_imports = true
|
||||
#skip = "src/twisted/logger/__init__.py,src/twisted/internet/reactor.py"
|
||||
|
||||
[tool.mypy]
|
||||
namespace_packages = true
|
||||
plugins = ["mypy_zope:plugin"]
|
||||
#TODO: progress so we can enable this
|
||||
#strict=true
|
||||
check_untyped_defs=true
|
||||
disallow_untyped_defs=true
|
||||
warn_redundant_casts=true
|
||||
warn_unused_configs= true
|
||||
warn_unused_ignores = false
|
||||
warn_no_return=true
|
||||
warn_return_any=true
|
||||
warn_unreachable=true
|
||||
enable_error_code = ["unused-awaitable"]
|
||||
|
||||
[tool.pyright]
|
||||
include = ["src"]
|
||||
reportIncompatibleMethodOverride = false
|
||||
|
|
|
@ -1,11 +1,3 @@
|
|||
from .AdlerManagerSSHProtocol import AdlerManagerSSHProtocol
|
||||
from .Config import Config
|
||||
from .SitesManager import SitesManager
|
||||
from .WebRoot import web_root
|
||||
from adlermanager._version import __version__ as version
|
||||
|
||||
__all__ = [
|
||||
"AdlerManagerSSHProtocol",
|
||||
"Config",
|
||||
"SitesManager",
|
||||
"web_root",
|
||||
]
|
||||
__version__ = version.short()
|
||||
|
|
|
@ -43,7 +43,7 @@ if Config.ssh_enabled:
|
|||
i.setServiceParent(serv_collection) # type: ignore
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
def run():
|
||||
import sys
|
||||
|
||||
from twisted import logger
|
||||
|
@ -65,3 +65,7 @@ if __name__ == "__main__":
|
|||
|
||||
# Finally, start the reactor
|
||||
reactor.run()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
run()
|
||||
|
|
11
src/adlermanager/_version.py
Normal file
11
src/adlermanager/_version.py
Normal file
|
@ -0,0 +1,11 @@
|
|||
"""
|
||||
Provides adlermanager version information.
|
||||
"""
|
||||
|
||||
# This file is auto-generated! Do not edit!
|
||||
# Use `python -m incremental.update adlermanager` to change this file.
|
||||
|
||||
from incremental import Version
|
||||
|
||||
__version__ = Version("adlermanager", 23, 12, 0, release_candidate=2)
|
||||
__all__ = ["__version__"]
|
Loading…
Reference in a new issue