diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index a52a8f36..8a3e6c90 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -3,39 +3,15 @@ name: tests on: [push, pull_request] jobs: - linting: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - - uses: actions/setup-python@v2 - with: - python-version: 3.9 - - name: Install Poetry - uses: snok/install-poetry@v1 - with: - virtualenvs-create: true - virtualenvs-in-project: true - installer-parallel: true - - name: Load cached venv - id: cached-poetry-dependencies - uses: actions/cache@v2 - with: - path: .venv - key: venv-${{ runner.os }}-${{ hashFiles('**/poetry.lock') }} - - name: Ensure cache is healthy - if: steps.cache.outputs.cache-hit == 'true' - shell: bash - run: timeout 10s poetry run pip --version || rm -rf .venv - # install dependencies if cache does not exist - - name: Check cache and install dependencies - run: poetry install --no-interaction --no-root + - name: Install virtualenv from poetry + uses: 20c/workflows/poetry@v1 - name: Run linters run: | - poetry run isort . - poetry run black . --check - # poetry run flake8 peeringdb_server - + poetry run pre-commit run --all-files test: needs: linting runs-on: ubuntu-latest diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index abfede52..800b2758 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -5,7 +5,7 @@ exclude: | )$ repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v2.3.0 + rev: v4.4.0 hooks: - id: check-yaml - id: end-of-file-fixer @@ -32,10 +32,10 @@ repos: entry: poetry run black . language: system pass_filenames: false - - repo: local - hooks: - - id: system - name: flake8 - entry: poetry run flake8 peeringdb_server - language: system - pass_filenames: false +# - repo: local +# hooks: +# - id: system +# name: flake8 +# entry: poetry run flake8 peeringdb_server +# language: system +# pass_filenames: false diff --git a/Ctl/dev/docker-compose.yml b/Ctl/dev/docker-compose.yml index 1943a9ed..f0469315 100644 --- a/Ctl/dev/docker-compose.yml +++ b/Ctl/dev/docker-compose.yml @@ -58,7 +58,7 @@ services: # # expects a https://github.com/peeringdb/django-peeringdb source checkout in the parent # directory - # - ../../../django-peeringdb/src/django_peeringdb:/srv/www.peeringdb.com/venv/lib/python3.9/site-packages/django_peeringdb:Z + - ../../../django-peeringdb/src/django_peeringdb:/srv/www.peeringdb.com/venv/lib/python3.9/site-packages/django_peeringdb:Z networks: - peeringdb_network diff --git a/Dockerfile b/Dockerfile index 599ce312..61cd3d14 100644 --- a/Dockerfile +++ b/Dockerfile @@ -25,7 +25,7 @@ ARG run_deps=" \ libgcc \ " -FROM python:3.9-alpine as base +FROM python:3.11-alpine as base ARG virtual_env=/srv/www.peeringdb.com/venv diff --git a/README.md b/README.md index b9c2281c..77ffb7d7 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,9 @@ # PeeringDB -[![Travis CI](https://img.shields.io/travis/peeringdb/peeringdb.svg?maxAge=3600)](https://travis-ci.org/peeringdb/peeringdb) -[![Codecov](https://img.shields.io/codecov/c/github/peeringdb/peeringdb/master.svg?maxAge=3600)](https://codecov.io/github/peeringdb/peeringdb) +[![tests](https://github.com/peeringdb/peeringdb/actions/workflows/tests.yml/badge.svg)](https://github.com/peeringdb/peeringdb/actions/workflows/tests.yml) +[![CodeQL](https://github.com/peeringdb/peeringdb/actions/workflows/codeql.yml/badge.svg)](https://github.com/peeringdb/peeringdb/actions/workflows/codeql.yml) +[![codecov](https://codecov.io/gh/peeringdb/peeringdb/branch/master/graph/badge.svg?token=zYAhZzltxV)](https://codecov.io/gh/peeringdb/peeringdb) [PeeringDB](https://www.peeringdb.com/) provides a scalable way to publish diff --git a/poetry.lock b/poetry.lock index e071e26b..9618cf98 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,10 +1,9 @@ -# This file is automatically @generated by Poetry 1.4.2 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.5.1 and should not be changed by hand. [[package]] name = "asgiref" version = "3.7.2" description = "ASGI specs, helper code, and adapters" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -22,7 +21,6 @@ tests = ["mypy (>=0.800)", "pytest", "pytest-asyncio"] name = "asn1crypto" version = "1.5.1" description = "Fast ASN.1 parser and serializer with definitions for private keys, public keys, certificates, CRL, OCSP, CMS, PKCS#3, PKCS#7, PKCS#8, PKCS#12, PKCS#5, X.509 and TSP" -category = "main" optional = false python-versions = "*" files = [ @@ -34,7 +32,6 @@ files = [ name = "attrs" version = "23.1.0" description = "Classes Without Boilerplate" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -53,7 +50,6 @@ tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pyte name = "black" version = "22.12.0" description = "The uncompromising code formatter." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -89,7 +85,6 @@ uvloop = ["uvloop (>=0.15.2)"] name = "bleach" version = "6.0.0" description = "An easy safelist-based HTML-sanitizing tool." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -108,7 +103,6 @@ css = ["tinycss2 (>=1.1.0,<1.2)"] name = "cbor2" version = "5.4.6" description = "CBOR (de)serializer with extensive tag support" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -158,7 +152,6 @@ test = ["pytest", "pytest-cov"] name = "certifi" version = "2023.7.22" description = "Python package for providing Mozilla's CA Bundle." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -170,7 +163,6 @@ files = [ name = "cffi" version = "1.15.1" description = "Foreign Function Interface for Python calling C code." -category = "main" optional = false python-versions = "*" files = [ @@ -247,7 +239,6 @@ pycparser = "*" name = "cfgv" version = "3.3.1" description = "Validate configuration and produce human readable error messages." -category = "dev" optional = false python-versions = ">=3.6.1" files = [ @@ -259,7 +250,6 @@ files = [ name = "charset-normalizer" version = "3.2.0" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -category = "main" optional = false python-versions = ">=3.7.0" files = [ @@ -344,7 +334,6 @@ files = [ name = "click" version = "8.1.6" description = "Composable command line interface toolkit" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -359,7 +348,6 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""} name = "colorama" version = "0.4.6" description = "Cross-platform colored terminal text." -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" files = [ @@ -371,7 +359,6 @@ files = [ name = "confu" version = "1.8.0" description = "Configuration file validation and generation" -category = "main" optional = false python-versions = ">=3.6.2,<4.0.0" files = [ @@ -383,7 +370,6 @@ files = [ name = "contextlib2" version = "21.6.0" description = "Backports and enhancements for the contextlib module" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -395,7 +381,6 @@ files = [ name = "coreapi" version = "2.3.3" description = "Python client library for Core API." -category = "main" optional = false python-versions = "*" files = [ @@ -413,7 +398,6 @@ uritemplate = "*" name = "coreschema" version = "0.0.4" description = "Core Schema." -category = "main" optional = false python-versions = "*" files = [ @@ -428,7 +412,6 @@ jinja2 = "*" name = "coverage" version = "7.2.7" description = "Code coverage measurement for Python" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -504,7 +487,6 @@ toml = ["tomli"] name = "cryptography" version = "41.0.3" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -550,7 +532,6 @@ test-randomorder = ["pytest-randomly"] name = "decorator" version = "4.4.2" description = "Decorators for Humans" -category = "dev" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*" files = [ @@ -562,7 +543,6 @@ files = [ name = "defusedxml" version = "0.7.1" description = "XML bomb protection for Python stdlib modules" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" files = [ @@ -574,7 +554,6 @@ files = [ name = "deprecated" version = "1.2.14" description = "Python @deprecated decorator to deprecate old python classes, functions or methods." -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -592,7 +571,6 @@ dev = ["PyTest", "PyTest-Cov", "bump2version (<1)", "sphinx (<2)", "tox"] name = "diff-match-patch" version = "20230430" description = "Diff Match and Patch" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -607,7 +585,6 @@ dev = ["attribution (==1.6.2)", "black (==23.3.0)", "flit (==3.8.0)", "mypy (==1 name = "distlib" version = "0.3.7" description = "Distribution utilities" -category = "dev" optional = false python-versions = "*" files = [ @@ -619,7 +596,6 @@ files = [ name = "django" version = "4.2.4" description = "A high-level Python web framework that encourages rapid development and clean, pragmatic design." -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -640,7 +616,6 @@ bcrypt = ["bcrypt"] name = "django-allauth" version = "0.54.0" description = "Integrated set of Django applications addressing authentication, registration, account management as well as 3rd party (social) account authentication." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -658,7 +633,6 @@ requests-oauthlib = ">=0.3.0" name = "django-autocomplete-light" version = "3.9.7" description = "Fresh autocompletes for Django" -category = "main" optional = false python-versions = "*" files = [ @@ -679,7 +653,6 @@ tags = ["django-taggit"] name = "django-bootstrap5" version = "23.3" description = "Bootstrap 5 for Django" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -694,7 +667,6 @@ django = ">=3.2" name = "django-cors-headers" version = "4.2.0" description = "django-cors-headers is a Django application for handling the server headers required for Cross-Origin Resource Sharing (CORS)." -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -709,7 +681,6 @@ Django = ">=3.2" name = "django-countries" version = "7.5.1" description = "Provides a country field for Django models." -category = "main" optional = false python-versions = "*" files = [ @@ -731,7 +702,6 @@ test = ["djangorestframework", "graphene-django", "pytest", "pytest-cov", "pytes name = "django-crispy-forms" version = "2.0" description = "Best way to have Django DRY forms" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -746,7 +716,6 @@ django = ">=3.2" name = "django-csp" version = "3.7" description = "Django Content Security Policy support." -category = "main" optional = false python-versions = "*" files = [ @@ -763,14 +732,13 @@ tests = ["jinja2 (>=2.9.6)", "mock (==1.0.1)", "pep8 (==1.4.6)", "pytest (<4.0)" [[package]] name = "django-debug-toolbar" -version = "4.2.0" +version = "4.1.0" description = "A configurable set of panels that display various debug information about the current request/response." -category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "django_debug_toolbar-4.2.0-py3-none-any.whl", hash = "sha256:af99128c06e8e794479e65ab62cc6c7d1e74e1c19beb44dcbf9bad7a9c017327"}, - {file = "django_debug_toolbar-4.2.0.tar.gz", hash = "sha256:bc7fdaafafcdedefcc67a4a5ad9dac96efd6e41db15bc74d402a54a2ba4854dc"}, + {file = "django_debug_toolbar-4.1.0-py3-none-any.whl", hash = "sha256:a0b532ef5d52544fd745d1dcfc0557fa75f6f0d1962a8298bd568427ef2fa436"}, + {file = "django_debug_toolbar-4.1.0.tar.gz", hash = "sha256:f57882e335593cb8e74c2bda9f1116bbb9ca8fc0d81b50a75ace0f83de5173c7"}, ] [package.dependencies] @@ -781,7 +749,6 @@ sqlparse = ">=0.2" name = "django-elasticsearch-dsl" version = "7.3" description = "Wrapper around elasticsearch-dsl-py for django models" -category = "main" optional = false python-versions = "*" files = [ @@ -797,7 +764,6 @@ six = "*" name = "django-extensions" version = "3.2.3" description = "Extensions for Django" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -812,7 +778,6 @@ Django = ">=3.2" name = "django-formtools" version = "2.4.1" description = "A set of high-level abstractions for Django forms" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -827,7 +792,6 @@ Django = ">=3.2" name = "django-grainy" version = "2.0.0" description = "granular permissions for django" -category = "main" optional = false python-versions = ">=3.8,<4.0" files = [ @@ -846,7 +810,6 @@ six = ">=1.11.0,<=2.0.0" name = "django-grappelli" version = "3.0.6" description = "A jazzy skin for the Django Admin-Interface." -category = "main" optional = false python-versions = "*" files = [ @@ -858,7 +821,6 @@ files = [ name = "django-handleref" version = "2.0.0" description = "django object tracking" -category = "main" optional = false python-versions = ">=3.8,<4.0" files = [ @@ -870,7 +832,6 @@ files = [ name = "django-hashers-passlib" version = "1.0.0" description = "Django hashers using passlib" -category = "main" optional = false python-versions = "*" files = [] @@ -890,7 +851,6 @@ resolved_reference = "be7900109778600927380e01d4ec59d04d0734a8" name = "django-haystack" version = "3.2.1" description = "Pluggable search for Django." -category = "main" optional = false python-versions = "*" files = [ @@ -907,7 +867,6 @@ elasticsearch = ["elasticsearch (>=5,<8)"] name = "django-import-export" version = "2.9.0" description = "Django application and library for importing and exporting data with included admin integration." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -924,7 +883,6 @@ tablib = {version = ">=3.0.0", extras = ["html", "ods", "xls", "xlsx", "yaml"]} name = "django-inet" version = "1.1.1" description = "django internet utilities" -category = "main" optional = false python-versions = ">=3.7,<4.0" files = [ @@ -936,7 +894,6 @@ files = [ name = "django-ipware" version = "5.0.0" description = "A Django application to retrieve user's IP address" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -948,7 +905,6 @@ files = [ name = "django-oauth-toolkit" version = "2.3.0" description = "OAuth2 Provider for Django" -category = "main" optional = false python-versions = "*" files = [ @@ -966,7 +922,6 @@ requests = ">=2.13.0" name = "django-otp" version = "1.2.2" description = "A pluggable framework for adding two-factor authentication to Django using one-time passwords." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -984,7 +939,6 @@ qrcode = ["qrcode"] name = "django-peeringdb" version = "3.1.0" description = "PeeringDB Django models" -category = "main" optional = false python-versions = ">=3.8,<4.0" files = [ @@ -1002,7 +956,6 @@ django_inet = ">=1,<2" name = "django-phonenumber-field" version = "6.4.0" description = "An international phone number field for django models." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1021,7 +974,6 @@ phonenumberslite = ["phonenumberslite (>=7.0.2)"] name = "django-ranged-response" version = "0.2.0" description = "Modified Django FileResponse that adds Content-Range headers." -category = "main" optional = false python-versions = "*" files = [ @@ -1035,7 +987,6 @@ django = "*" name = "django-ratelimit" version = "4.1.0" description = "Cache-based rate-limiting for Django." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1047,7 +998,6 @@ files = [ name = "django-rest-swagger" version = "2.2.0" description = "Swagger UI for Django REST Framework 3.5+" -category = "main" optional = false python-versions = "*" files = [ @@ -1065,7 +1015,6 @@ simplejson = "*" name = "django-reversion" version = "4.0.2" description = "An extension to the Django web framework that provides version control for model instances." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1078,26 +1027,23 @@ django = ">=2.0" [[package]] name = "django-security-keys" -version = "1.1.0" +version = "1.0.1" description = "Django webauthn security key integration" -category = "main" optional = false python-versions = ">=3.8,<4.0" files = [ - {file = "django-security-keys-1.1.0.tar.gz", hash = "sha256:1a47742c3e2fdd3eaa23be9b2ebd0745d4d9847676948cdf4b49ac3573e2b573"}, - {file = "django_security_keys-1.1.0-py3-none-any.whl", hash = "sha256:e4ded8f7b5e2d926326a0755301402714a042b41945b2757986b41b3606b3217"}, + {file = "django-security-keys-1.0.1.tar.gz", hash = "sha256:1e1b76dd31bb8d147601337c2f365f6edcb629c575eb013583db7b203ea7dc75"}, + {file = "django_security_keys-1.0.1-py3-none-any.whl", hash = "sha256:f158f7a04ad8a2f3026a0df4d44606d560f121f67dd39cb8a5c4cd0ea8e1fb13"}, ] [package.dependencies] django-two-factor-auth = ">=1.13.1,<2.0.0" -phonenumbers = ">=8.12.47,<9.0.0" webauthn = ">=1,<2" [[package]] name = "django-simple-captcha" version = "0.5.18" description = "A very simple, yet powerful, Django captcha application" -category = "main" optional = false python-versions = "*" files = [ @@ -1117,7 +1063,6 @@ test = ["testfixtures"] name = "django-structlog" version = "5.3.0" description = "Structured Logging for Django" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1138,7 +1083,6 @@ celery = ["celery (>=5.1)"] name = "django-tables2" version = "2.6.0" description = "Table/data-grid framework for Django" -category = "main" optional = false python-versions = "*" files = [ @@ -1156,7 +1100,6 @@ tablib = ["tablib"] name = "django-two-factor-auth" version = "1.14.0" description = "Complete Two-Factor Authentication for Django" -category = "main" optional = false python-versions = "*" files = [ @@ -1182,7 +1125,6 @@ yubikey = ["django-otp-yubikey"] name = "django-vanilla-views" version = "3.0.0" description = "Beautifully simple class based views." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1194,7 +1136,6 @@ files = [ name = "djangorestframework" version = "3.14.0" description = "Web APIs for Django, made easy." -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1210,7 +1151,6 @@ pytz = "*" name = "djangorestframework-api-key" version = "2.3.0" description = "API key permissions for the Django REST Framework" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1222,7 +1162,6 @@ files = [ name = "elasticsearch" version = "7.9.1" description = "Python client for Elasticsearch" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4" files = [ @@ -1244,7 +1183,6 @@ requests = ["requests (>=2.4.0,<3.0.0)"] name = "elasticsearch-dsl" version = "7.4.1" description = "Python client for Elasticsearch" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -1264,7 +1202,6 @@ develop = ["coverage (<5.0.0)", "mock", "pytest (>=3.0.0)", "pytest-cov", "pytes name = "et-xmlfile" version = "1.1.0" description = "An implementation of lxml.xmlfile for the standard library" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1276,7 +1213,6 @@ files = [ name = "exceptiongroup" version = "1.1.2" description = "Backport of PEP 654 (exception groups)" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1291,7 +1227,6 @@ test = ["pytest (>=6)"] name = "filelock" version = "3.12.2" description = "A platform independent file lock." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1307,7 +1242,6 @@ testing = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "diff-cover (>=7.5)", "p name = "flake8" version = "6.1.0" description = "the modular source code checker: pep8 pyflakes and co" -category = "dev" optional = false python-versions = ">=3.8.1" files = [ @@ -1324,7 +1258,6 @@ pyflakes = ">=3.1.0,<3.2.0" name = "future" version = "0.18.3" description = "Clean single-source support for Python 3 and 2" -category = "dev" optional = false python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -1335,7 +1268,6 @@ files = [ name = "geographiclib" version = "2.0" description = "The geodesic routines from GeographicLib" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1347,7 +1279,6 @@ files = [ name = "geopy" version = "2.3.0" description = "Python Geocoding Toolbox" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1371,7 +1302,6 @@ timezone = ["pytz"] name = "ghp-import" version = "2.1.0" description = "Copy your docs directly to the gh-pages branch." -category = "dev" optional = false python-versions = "*" files = [ @@ -1389,7 +1319,6 @@ dev = ["flake8", "markdown", "twine", "wheel"] name = "googlemaps" version = "4.10.0" description = "Python client library for Google Maps Platform" -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -1403,7 +1332,6 @@ requests = ">=2.20.0,<3.0" name = "grainy" version = "1.8.1" description = "granular permissions utility" -category = "main" optional = false python-versions = ">=3.6,<4.0" files = [ @@ -1414,7 +1342,6 @@ files = [ name = "h11" version = "0.14.0" description = "A pure-Python, bring-your-own-I/O implementation of HTTP/1.1" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1426,7 +1353,6 @@ files = [ name = "identify" version = "2.5.26" description = "File identification library for Python" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1441,7 +1367,6 @@ license = ["ukkonen"] name = "idna" version = "3.4" description = "Internationalized Domain Names in Applications (IDNA)" -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -1453,7 +1378,6 @@ files = [ name = "importlib-metadata" version = "6.8.0" description = "Read metadata from Python packages" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1473,7 +1397,6 @@ testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs name = "iniconfig" version = "2.0.0" description = "brain-dead simple config-ini parsing" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1485,7 +1408,6 @@ files = [ name = "isort" version = "5.12.0" description = "A Python utility / library to sort Python imports." -category = "dev" optional = false python-versions = ">=3.8.0" files = [ @@ -1503,7 +1425,6 @@ requirements-deprecated-finder = ["pip-api", "pipreqs"] name = "itypes" version = "1.2.0" description = "Simple immutable types for python." -category = "main" optional = false python-versions = "*" files = [ @@ -1515,7 +1436,6 @@ files = [ name = "jinja2" version = "3.1.2" description = "A very fast and expressive template engine." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1531,14 +1451,13 @@ i18n = ["Babel (>=2.7)"] [[package]] name = "jsonschema" -version = "4.19.0" +version = "4.18.6" description = "An implementation of JSON Schema validation for Python" -category = "dev" optional = false python-versions = ">=3.8" files = [ - {file = "jsonschema-4.19.0-py3-none-any.whl", hash = "sha256:043dc26a3845ff09d20e4420d6012a9c91c9aa8999fa184e7efcfeccb41e32cb"}, - {file = "jsonschema-4.19.0.tar.gz", hash = "sha256:6e1e7569ac13be8139b2dd2c21a55d350066ee3f80df06c608b398cdc6f30e8f"}, + {file = "jsonschema-4.18.6-py3-none-any.whl", hash = "sha256:dc274409c36175aad949c68e5ead0853aaffbe8e88c830ae66bb3c7a1728ad2d"}, + {file = "jsonschema-4.18.6.tar.gz", hash = "sha256:ce71d2f8c7983ef75a756e568317bf54bc531dc3ad7e66a128eae0d51623d8a3"}, ] [package.dependencies] @@ -1555,7 +1474,6 @@ format-nongpl = ["fqdn", "idna", "isoduration", "jsonpointer (>1.13)", "rfc3339- name = "jsonschema-specifications" version = "2023.7.1" description = "The JSON Schema meta-schemas and vocabularies, exposed as a Registry" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -1570,7 +1488,6 @@ referencing = ">=0.28.0" name = "jwcrypto" version = "1.5.0" description = "Implementation of JOSE Web standards" -category = "main" optional = false python-versions = ">= 3.6" files = [ @@ -1585,7 +1502,6 @@ deprecated = "*" name = "markdown" version = "3.4.4" description = "Python implementation of John Gruber's Markdown." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1604,7 +1520,6 @@ testing = ["coverage", "pyyaml"] name = "markdown-include" version = "0.8.1" description = "A Python-Markdown extension which provides an 'include' function" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1622,7 +1537,6 @@ tests = ["pytest"] name = "markuppy" version = "1.14" description = "An HTML/XML generator" -category = "main" optional = false python-versions = "*" files = [ @@ -1633,7 +1547,6 @@ files = [ name = "markupsafe" version = "2.1.3" description = "Safely add untrusted strings to HTML/XML markup." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1693,7 +1606,6 @@ files = [ name = "mccabe" version = "0.7.0" description = "McCabe checker, plugin for flake8" -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -1705,7 +1617,6 @@ files = [ name = "mergedeep" version = "1.3.4" description = "A deep merge function for 🐍." -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -1717,7 +1628,6 @@ files = [ name = "mkdocs" version = "1.5.2" description = "Project documentation with Markdown." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1749,7 +1659,6 @@ min-versions = ["babel (==2.9.0)", "click (==7.0)", "colorama (==0.4)", "ghp-imp name = "munge" version = "1.3.0" description = "data manipulation library and client" -category = "main" optional = false python-versions = ">=3.8,<4.0" files = [ @@ -1772,7 +1681,6 @@ yaml = ["PyYAML (>=5.1)"] name = "mypy-extensions" version = "1.0.0" description = "Type system extensions for programs checked with the mypy type checker." -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -1784,7 +1692,6 @@ files = [ name = "mysqlclient" version = "2.2.0" description = "Python interface to MySQL" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -1801,7 +1708,6 @@ files = [ name = "nodeenv" version = "1.8.0" description = "Node.js virtual environment builder" -category = "dev" optional = false python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*" files = [ @@ -1816,7 +1722,6 @@ setuptools = "*" name = "oauthlib" version = "3.2.2" description = "A generic, spec-compliant, thorough implementation of the OAuth request-signing logic" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1833,7 +1738,6 @@ signedtoken = ["cryptography (>=3.0.0)", "pyjwt (>=2.0.0,<3)"] name = "odfpy" version = "1.4.1" description = "Python API and tools to manipulate OpenDocument files" -category = "main" optional = false python-versions = "*" files = [ @@ -1847,7 +1751,6 @@ defusedxml = "*" name = "openapi-codec" version = "1.3.2" description = "An OpenAPI codec for Core API." -category = "main" optional = false python-versions = "*" files = [ @@ -1861,7 +1764,6 @@ coreapi = ">=2.2.0" name = "openpyxl" version = "3.1.2" description = "A Python library to read/write Excel 2010 xlsx/xlsm files" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -1876,7 +1778,6 @@ et-xmlfile = "*" name = "outcome" version = "1.2.0" description = "Capture the outcome of Python function calls." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1891,7 +1792,6 @@ attrs = ">=19.2.0" name = "packaging" version = "23.1" description = "Core utilities for Python packages" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -1903,7 +1803,6 @@ files = [ name = "passlib" version = "1.7.4" description = "comprehensive password hashing framework supporting over 30 schemes" -category = "main" optional = false python-versions = "*" files = [ @@ -1921,7 +1820,6 @@ totp = ["cryptography"] name = "pathspec" version = "0.11.2" description = "Utility library for gitignore style pattern matching of file paths." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -1933,7 +1831,6 @@ files = [ name = "peeringdb" version = "1.5.0" description = "PeeringDB Django models" -category = "main" optional = false python-versions = "^3.8" files = [] @@ -1954,7 +1851,6 @@ resolved_reference = "0f9f0215bf5b671108e3763def795e45952e1870" name = "phonenumbers" version = "8.13.18" description = "Python version of Google's common library for parsing, formatting, storing and validating international phone numbers." -category = "main" optional = false python-versions = "*" files = [ @@ -1966,7 +1862,6 @@ files = [ name = "pillow" version = "10.0.0" description = "Python Imaging Library (Fork)" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -2036,7 +1931,6 @@ tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "pa name = "platformdirs" version = "3.10.0" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2052,7 +1946,6 @@ test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4)", "pytest-co name = "pluggy" version = "1.2.0" description = "plugin and hook calling mechanisms for python" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -2068,7 +1961,6 @@ testing = ["pytest", "pytest-benchmark"] name = "pre-commit" version = "3.3.3" description = "A framework for managing and maintaining multi-language pre-commit hooks." -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -2087,7 +1979,6 @@ virtualenv = ">=20.10.0" name = "pycodestyle" version = "2.11.0" description = "Python style guide checker" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -2099,7 +1990,6 @@ files = [ name = "pycparser" version = "2.21" description = "C parser in Python" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -2111,7 +2001,6 @@ files = [ name = "pydantic" version = "1.10.12" description = "Data validation and settings management using python type hints" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2164,7 +2053,6 @@ email = ["email-validator (>=1.0.3)"] name = "pydot" version = "1.4.2" description = "Python interface to Graphviz's Dot" -category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -2179,7 +2067,6 @@ pyparsing = ">=2.1.4" name = "pyflakes" version = "3.1.0" description = "passive checker of Python programs" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -2191,7 +2078,6 @@ files = [ name = "pyjwt" version = "2.8.0" description = "JSON Web Token implementation in Python" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2212,7 +2098,6 @@ tests = ["coverage[toml] (==5.0.4)", "pytest (>=6.0.0,<7.0.0)"] name = "pymdgen" version = "1.0.0" description = "python code markdown documentation generator" -category = "dev" optional = false python-versions = ">=3.6,<4.0" files = [ @@ -2223,7 +2108,6 @@ files = [ name = "pyopenssl" version = "23.2.0" description = "Python wrapper module around the OpenSSL library" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -2242,7 +2126,6 @@ test = ["flaky", "pretend", "pytest (>=3.0.1)"] name = "pyparsing" version = "3.1.1" description = "pyparsing module - Classes and methods to define and execute parsing grammars" -category = "dev" optional = false python-versions = ">=3.6.8" files = [ @@ -2257,7 +2140,6 @@ diagrams = ["jinja2", "railroad-diagrams"] name = "pypng" version = "0.20220715.0" description = "Pure Python library for saving and loading PNG images" -category = "main" optional = false python-versions = "*" files = [ @@ -2269,7 +2151,6 @@ files = [ name = "pysocks" version = "1.7.1" description = "A Python SOCKS client module. See https://github.com/Anorov/PySocks for more information." -category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -2282,7 +2163,6 @@ files = [ name = "pytest" version = "7.4.0" description = "pytest: simple powerful testing with Python" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -2305,7 +2185,6 @@ testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "no name = "pytest-cov" version = "4.1.0" description = "Pytest plugin for measuring coverage." -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -2324,7 +2203,6 @@ testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtuale name = "pytest-django" version = "4.5.2" description = "A Django plugin for pytest." -category = "dev" optional = false python-versions = ">=3.5" files = [ @@ -2343,7 +2221,6 @@ testing = ["Django", "django-configurations (>=2.0)"] name = "pytest-filedata" version = "0.4.0" description = "easily load data from files" -category = "dev" optional = false python-versions = "*" files = [ @@ -2359,7 +2236,6 @@ requests-mock = ">=1,<2" name = "pytest-mock" version = "3.11.1" description = "Thin-wrapper around the mock package for easier use with pytest" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -2377,7 +2253,6 @@ dev = ["pre-commit", "pytest-asyncio", "tox"] name = "python-dateutil" version = "2.8.2" description = "Extensions to the standard Python datetime module" -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ @@ -2392,7 +2267,6 @@ six = ">=1.5" name = "python-dotenv" version = "1.0.0" description = "Read key-value pairs from a .env file and set them as environment variables" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -2407,7 +2281,6 @@ cli = ["click (>=5.0)"] name = "python3-openid" version = "3.2.0" description = "OpenID support for modern servers and consumers." -category = "main" optional = false python-versions = "*" files = [ @@ -2426,7 +2299,6 @@ postgresql = ["psycopg2"] name = "pytz" version = "2023.3" description = "World timezone definitions, modern and historical" -category = "main" optional = false python-versions = "*" files = [ @@ -2438,7 +2310,6 @@ files = [ name = "pyupgrade" version = "3.10.1" description = "A tool to automatically upgrade syntax for newer versions." -category = "dev" optional = false python-versions = ">=3.8.1" files = [ @@ -2453,7 +2324,6 @@ tokenize-rt = ">=5.2.0" name = "pyyaml" version = "6.0.1" description = "YAML parser and emitter for Python" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -2503,7 +2373,6 @@ files = [ name = "pyyaml-env-tag" version = "0.1" description = "A custom YAML tag for referencing environment variables in YAML files. " -category = "dev" optional = false python-versions = ">=3.6" files = [ @@ -2518,7 +2387,6 @@ pyyaml = "*" name = "qrcode" version = "7.4.2" description = "QR Code image generator" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2542,7 +2410,6 @@ test = ["coverage", "pytest"] name = "rdap" version = "1.3.1" description = "Registration Data Access Protocol tools" -category = "main" optional = false python-versions = ">=3.7,<4.0" files = [ @@ -2556,14 +2423,13 @@ requests = ">=2.25.1,<3.0.0" [[package]] name = "referencing" -version = "0.30.2" +version = "0.30.1" description = "JSON Referencing + Python" -category = "dev" optional = false python-versions = ">=3.8" files = [ - {file = "referencing-0.30.2-py3-none-any.whl", hash = "sha256:449b6669b6121a9e96a7f9e410b245d471e8d48964c67113ce9afe50c8dd7bdf"}, - {file = "referencing-0.30.2.tar.gz", hash = "sha256:794ad8003c65938edcdbc027f1933215e0d0ccc0291e3ce20a4d87432b59efc0"}, + {file = "referencing-0.30.1-py3-none-any.whl", hash = "sha256:185d4a29f001c6e8ae4dad3861e61282a81cb01b9f0ef70a15450c45c6513a0d"}, + {file = "referencing-0.30.1.tar.gz", hash = "sha256:9370c77ceefd39510d70948bbe7375ce2d0125b9c11fd380671d4de959a8e3ce"}, ] [package.dependencies] @@ -2574,7 +2440,6 @@ rpds-py = ">=0.7.0" name = "requests" version = "2.31.0" description = "Python HTTP for Humans." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2596,7 +2461,6 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] name = "requests-mock" version = "1.11.0" description = "Mock out responses from the requests package" -category = "dev" optional = false python-versions = "*" files = [ @@ -2616,7 +2480,6 @@ test = ["fixtures", "mock", "purl", "pytest", "requests-futures", "sphinx", "tes name = "requests-oauthlib" version = "1.3.1" description = "OAuthlib authentication support for Requests." -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" files = [ @@ -2635,7 +2498,6 @@ rsa = ["oauthlib[signedtoken] (>=3.0.0)"] name = "rpds-py" version = "0.9.2" description = "Python bindings to Rust's persistent data structures (rpds)" -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -2742,7 +2604,6 @@ files = [ name = "schema" version = "0.7.5" description = "Simple data validation library" -category = "main" optional = false python-versions = "*" files = [ @@ -2757,7 +2618,6 @@ contextlib2 = ">=0.5.5" name = "selenium" version = "4.11.2" description = "" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -2775,7 +2635,6 @@ urllib3 = {version = ">=1.26,<3", extras = ["socks"]} name = "setuptools" version = "68.0.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -2792,7 +2651,6 @@ testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs ( name = "simplejson" version = "3.19.1" description = "Simple, fast, extensible JSON encoder/decoder for Python" -category = "main" optional = false python-versions = ">=2.5, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -2887,7 +2745,6 @@ files = [ name = "six" version = "1.16.0" description = "Python 2 and 3 compatibility utilities" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" files = [ @@ -2899,7 +2756,6 @@ files = [ name = "sniffio" version = "1.3.0" description = "Sniff out which async library your code is running under" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -2911,7 +2767,6 @@ files = [ name = "sortedcontainers" version = "2.4.0" description = "Sorted Containers -- Sorted List, Sorted Dict, Sorted Set" -category = "dev" optional = false python-versions = "*" files = [ @@ -2923,7 +2778,6 @@ files = [ name = "sqlparse" version = "0.4.4" description = "A non-validating SQL parser." -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -2940,7 +2794,6 @@ test = ["pytest", "pytest-cov"] name = "structlog" version = "23.1.0" description = "Structured Logging for Python" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -2958,7 +2811,6 @@ typing = ["mypy", "rich", "twisted"] name = "tablib" version = "3.5.0" description = "Format agnostic tabular data library (XLS, JSON, YAML, CSV, etc.)" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -2988,7 +2840,6 @@ yaml = ["pyyaml"] name = "tld" version = "0.13" description = "Extract the top-level domain (TLD) from the URL given." -category = "main" optional = false python-versions = ">=3.7, <4" files = [ @@ -3000,7 +2851,6 @@ files = [ name = "tokenize-rt" version = "5.2.0" description = "A wrapper around the stdlib `tokenize` which roundtrips." -category = "dev" optional = false python-versions = ">=3.8" files = [ @@ -3012,7 +2862,6 @@ files = [ name = "tomli" version = "2.0.1" description = "A lil' TOML parser" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3024,7 +2873,6 @@ files = [ name = "tomlkit" version = "0.12.1" description = "Style preserving TOML library" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3036,7 +2884,6 @@ files = [ name = "trio" version = "0.22.2" description = "A friendly Python library for async concurrency and I/O" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -3057,7 +2904,6 @@ sortedcontainers = "*" name = "trio-websocket" version = "0.10.3" description = "WebSocket library for Trio" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -3074,7 +2920,6 @@ wsproto = ">=0.14" name = "twentyc-rpc" version = "1.0.0" description = "client for 20c's RESTful API" -category = "main" optional = false python-versions = ">=3.6.1,<4.0" files = [ @@ -3089,7 +2934,6 @@ requests = ">=2.10.0" name = "typing-extensions" version = "4.7.1" description = "Backported and Experimental Type Hints for Python 3.7+" -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3101,7 +2945,6 @@ files = [ name = "tzdata" version = "2023.3" description = "Provider of IANA time zone data" -category = "main" optional = false python-versions = ">=2" files = [ @@ -3113,7 +2956,6 @@ files = [ name = "unidecode" version = "1.3.6" description = "ASCII transliterations of Unicode text" -category = "main" optional = false python-versions = ">=3.5" files = [ @@ -3125,7 +2967,6 @@ files = [ name = "uritemplate" version = "4.1.1" description = "Implementation of RFC 6570 URI Templates" -category = "main" optional = false python-versions = ">=3.6" files = [ @@ -3137,7 +2978,6 @@ files = [ name = "urllib3" version = "2.0.4" description = "HTTP library with thread-safe connection pooling, file post, and more." -category = "main" optional = false python-versions = ">=3.7" files = [ @@ -3158,7 +2998,6 @@ zstd = ["zstandard (>=0.18.0)"] name = "uwsgi" version = "2.0.22" description = "The uWSGI server" -category = "main" optional = false python-versions = "*" files = [ @@ -3169,7 +3008,6 @@ files = [ name = "virtualenv" version = "20.24.2" description = "Virtual Python Environment builder" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -3190,7 +3028,6 @@ test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess name = "watchdog" version = "3.0.0" description = "Filesystem events monitoring" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -3230,7 +3067,6 @@ watchmedo = ["PyYAML (>=3.10)"] name = "webauthn" version = "1.9.0" description = "Pythonic WebAuthn" -category = "main" optional = false python-versions = "*" files = [ @@ -3249,7 +3085,6 @@ pyOpenSSL = ">=23.2.0" name = "webdriver-manager" version = "3.9.1" description = "Library provides the way to automatically manage drivers for different browsers" -category = "dev" optional = false python-versions = ">=3.7" files = [ @@ -3266,7 +3101,6 @@ requests = "*" name = "webencodings" version = "0.5.1" description = "Character encoding aliases for legacy web content" -category = "main" optional = false python-versions = "*" files = [ @@ -3278,7 +3112,6 @@ files = [ name = "whoosh" version = "2.7.4" description = "Fast, pure-Python full text indexing, search, and spell checking library." -category = "main" optional = false python-versions = "*" files = [ @@ -3291,7 +3124,6 @@ files = [ name = "wrapt" version = "1.15.0" description = "Module for decorators, wrappers and monkey patching." -category = "main" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" files = [ @@ -3376,7 +3208,6 @@ files = [ name = "wsproto" version = "1.2.0" description = "WebSockets state-machine based protocol implementation" -category = "dev" optional = false python-versions = ">=3.7.0" files = [ @@ -3391,7 +3222,6 @@ h11 = ">=0.9.0,<1" name = "xlrd" version = "2.0.1" description = "Library for developers to extract data from Microsoft Excel (tm) .xls spreadsheet files" -category = "main" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" files = [ @@ -3408,7 +3238,6 @@ test = ["pytest", "pytest-cov"] name = "xlwt" version = "1.3.0" description = "Library to create spreadsheet files compatible with MS Excel 97/2000/XP/2003 XLS files, on any platform, with Python 2.6, 2.7, 3.3+" -category = "main" optional = false python-versions = "*" files = [ @@ -3420,7 +3249,6 @@ files = [ name = "zipp" version = "3.16.2" description = "Backport of pathlib-compatible object wrapper for zip files" -category = "main" optional = false python-versions = ">=3.8" files = [ @@ -3435,4 +3263,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = "^3.9" -content-hash = "35e74f4ff46f4352640f9ddd90e62c5d48743ca1169ffeef07d828536612c87b" +content-hash = "79eb50a2376b30dc97f5367b2ca3fdb9f522f68f4639cded244323c2cc8901d3" diff --git a/pyproject.toml b/pyproject.toml index bfda3c1e..274d290e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "peeringdb_server" -version = "2.49.0-beta" +version = "2.49.0" description = "source code for PeeringDB.com" readme = "README.md" repository = "https://github.com/peeringdb/peeringdb"