Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
66 commits
Select commit Hold shift + click to select a range
1323806
Megaport fixes for initial maintenance announcement emails
i3dnet-akoopen Feb 23, 2026
538e567
Cookie initially baked targeting develop by NetworkToCode Cookie Drif…
jeffkala Mar 6, 2026
a0ca9e9
first round of merge conflict fixes
jeffkala Mar 6, 2026
dd35779
more cleanups
jeffkala Mar 6, 2026
29f6021
Resolve merge conflicts and update documentation
jvanderaa Mar 6, 2026
ccbce53
Add back footnotes for status and sequence fields in README
jvanderaa Mar 6, 2026
2afafa7
Add local development, provider checklist, and debugging docs
jvanderaa Mar 6, 2026
68a7fd6
Fix invalid env var names with hyphens in CI workflow
jvanderaa Mar 6, 2026
a91192f
Fix pylint invalid-name in generate_code_reference_pages.py
jvanderaa Mar 7, 2026
a1daaeb
Merge branch 'develop' into drift-manager/develop/pr
jvanderaa Mar 7, 2026
16314a1
Merge branch 'develop' into drift-manager/develop/pr
jvanderaa Mar 17, 2026
6c9f062
Merge branch 'develop' into drift-manager/develop/pr
jvanderaa Mar 18, 2026
5751487
Add in parsing support for SummitIG. Tests in the next commit.
Mar 25, 2026
db459f3
Add tests and testdata for SummitIG parser.
Mar 27, 2026
a799f5e
Merge pull request #398 from networktocode/main
jvanderaa Apr 16, 2026
c5b0134
Bump version to 2.11.1b1
jvanderaa Apr 16, 2026
5fad785
Merge pull request #399 from networktocode/bump-version-2.11.1-beta
glennmatthews Apr 21, 2026
7b40e84
Update megaport.py
i3dnet-akoopen Apr 22, 2026
9bcf9c2
Update megaport2_result.json
i3dnet-akoopen Apr 22, 2026
2b11193
Create 378.fixed.rst
i3dnet-akoopen Apr 22, 2026
b63bbb9
Merge develop into drift-manager/develop/pr
jvanderaa Apr 24, 2026
d0f019f
Merge pull request #388 from networktocode/drift-manager/develop/pr
jvanderaa Apr 24, 2026
da1fcb3
Bump pytest minimum to 9.0.3 for CVE-2025-71176
jvanderaa Apr 24, 2026
b2a8b84
Merge pull request #406 from networktocode/fix-396-pytest-security
jvanderaa Apr 24, 2026
fd4bdf7
Update equinix.py; support different subject-line formats to get main…
i3dnet-akoopen Apr 27, 2026
bc79d10
Update equinix.py; remove redundant maintenance_id var
i3dnet-akoopen Apr 27, 2026
9c0fada
Update equinix.py; support old and new maintenance_id format
i3dnet-akoopen Apr 27, 2026
8276f88
Create 411.fixed.rst
i3dnet-akoopen Apr 27, 2026
fcad07e
Add Equinix #10 test and small fixes for PR#411
i3dnet-akoopen Apr 29, 2026
cd8187b
Added stricter checking for re_search elements
i3dnet-akoopen Apr 29, 2026
10d4a89
Add parser for provider/vendor RETN.
i3dnet-akoopen May 1, 2026
db50422
Add changelog item
i3dnet-akoopen May 1, 2026
77d759e
Add another Equinix test, but only for parsing subject
i3dnet-akoopen May 1, 2026
ff8f163
Replace CID with fictional one
i3dnet-akoopen May 4, 2026
26acd31
Add Telxius parser
i3dnet-akoopen May 6, 2026
386ebeb
Add changes file
i3dnet-akoopen May 6, 2026
5044009
Fix typo.
i3dnet-akoopen May 6, 2026
72371e7
Set confirmed status through correct method
i3dnet-akoopen May 6, 2026
0440dc1
Merge pull request #378 from i3dnet-akoopen/patch-1
jvanderaa May 6, 2026
8c792fa
Fix date-format issue, force dayfirst=True for MM-DD-YYYY 'Euro'-format
i3dnet-akoopen May 6, 2026
b606c70
Update circuit_maintenance_parser/parsers/equinix.py
i3dnet-akoopen May 6, 2026
6b9ed2b
Update circuit_maintenance_parser/parsers/equinix.py
i3dnet-akoopen May 6, 2026
9c75b7f
Update circuit_maintenance_parser/parsers/equinix.py
i3dnet-akoopen May 6, 2026
c4ecbee
Merge pull request #414 from i3dnet-akoopen/telxius-parser
jvanderaa May 6, 2026
2f1a078
Merge pull request #412 from i3dnet-akoopen/retn-parser
jvanderaa May 6, 2026
a4636cc
Merge pull request #411 from i3dnet-akoopen/patch-2
jvanderaa May 6, 2026
2266be5
Added in towncrier changelog fragment.
May 6, 2026
e180a1f
Add parser for Vodafone
i3dnet-akoopen May 6, 2026
0583d6c
Add changelog item
i3dnet-akoopen May 6, 2026
e7dec77
Add Cirion parser (Lumen fork).
i3dnet-akoopen May 11, 2026
8d48773
Add changelog message
i3dnet-akoopen May 11, 2026
4547d88
Bump dependencies and add Python 3.14 support
jvanderaa May 11, 2026
d7445a4
Pin security floors for lxml, urllib3, requests, pygments
jvanderaa May 11, 2026
545a7f4
Make Python 3.14 CI green and unblock docs build
jvanderaa May 11, 2026
a5c25d1
Add email subject parser for status and maintenance_id, plus small ot…
i3dnet-akoopen May 12, 2026
9fb83fd
Merge pull request #416 from i3dnet-akoopen/parser-vodafone
jvanderaa May 12, 2026
e30783e
Merge pull request #395 from nsw3550/summitig
jvanderaa May 13, 2026
a8b9044
Add parser for FLAG (fka Globalcloudexchange)
i3dnet-akoopen May 15, 2026
fd46aaa
Add changelog message, plus add equinix tests 9+10
i3dnet-akoopen May 15, 2026
39d466f
Merge branch 'develop' into flag-parser
i3dnet-akoopen May 15, 2026
b6f6be8
Include suggested changes during PR review
i3dnet-akoopen May 18, 2026
9fc1279
Merge branch 'flag-parser' of github.com:i3dnet-akoopen/circuit-maint…
i3dnet-akoopen May 18, 2026
0f6a05d
Merge pull request #419 from i3dnet-akoopen/flag-parser
jvanderaa May 21, 2026
a29523a
Merge pull request #418 from networktocode/chore/dependency-bumps-202…
jvanderaa Jun 10, 2026
d75d982
Merge pull request #417 from i3dnet-akoopen/cirion
jvanderaa Jun 12, 2026
2c3ba8a
Release v2.12.0
jvanderaa Jun 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 12 additions & 1 deletion .cookiecutter.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,17 @@
"project_with_config_settings": "no",
"generate_docs": "yes",
"version": "2.10.0",
"original_publish_year": "2021"
"original_publish_year": "2021",
"_drift_manager": {
"template": "https://github.com/networktocode-llc/cookiecutter-ntc.git",
"template_dir": "python",
"template_ref": "main",
"cookie_dir": "",
"pull_request_strategy": "create",
"post_actions": [],
"draft": false,
"baked_commit_ref": "6e239e9b2ba0888f80cf1693318f007a2085d79a",
"drift_managed_branch": "develop"
}
}
}
12 changes: 4 additions & 8 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -1,28 +1,24 @@
---
name: 🐛 Bug Report
about: Report a reproducible bug in the current release of circuit_maintenance_parser
about: Report a reproducible bug in the current release of circuit-maintenance-parser
---

### Environment

- Python version: <!-- Example: 3.9 -->
- circuit_maintenance_parser version: <!-- Example: 1.0.0 -->
* Python version: <!-- Example: 3.10 -->
* circuit-maintenance-parser version: <!-- Example: 1.0.0 -->

<!-- What did you expect to happen? -->

### Expected Behavior

<!-- What happened instead? -->

<!-- What happened instead? -->
### Observed Behavior

<!--
Describe in detail the exact steps that someone else can take to reproduce
this bug using the current release.
-->

### Steps to Reproduce

1.
2.
3.
6 changes: 2 additions & 4 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -1,22 +1,20 @@
---
name: ✨ Feature Request
about: Propose a new feature or enhancement

---

### Environment

- circuit_maintenance_parser version: <!-- Example: 1.0.0 -->
* circuit-maintenance-parser version: <!-- Example: 1.0.0 -->

<!--
Describe in detail the new functionality you are proposing.
-->

### Proposed Functionality

<!--
Convey an example use case for your proposed feature. Write from the
perspective of a user who would benefit from the proposed
functionality and describe how.
--->

### Use Case
196 changes: 50 additions & 146 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,15 +1,13 @@
---
name: "CI"
concurrency: # Cancel any existing runs of this workflow for this same PR
group: "${{ '{{ github.workflow }}' }}-${{ '{{ github.ref }}' }}"
concurrency: # Cancel any existing runs of this workflow for this same PR
group: "${{ github.workflow }}-${{ github.ref }}"
cancel-in-progress: true
on: # yamllint disable-line rule:truthy rule:comments
on: # yamllint disable-line rule:truthy rule:comments
push:
branches:
- "main"
- "develop"
tags:
- "v*"
pull_request: ~

env:
Expand All @@ -18,7 +16,7 @@ env:

jobs:
ruff-format:
runs-on: "ubuntu-24.04"
runs-on: "ubuntu-latest"
env:
INVOKE_PARSER_LOCAL: "True"
steps:
Expand All @@ -27,11 +25,11 @@ jobs:
- name: "Setup environment"
uses: "networktocode/gh-action-setup-poetry-environment@v6"
with:
poetry-version: "1.8.5"
poetry-version: "2.1.3"
- name: "Linting: ruff format"
run: "poetry run invoke ruff --action format"
ruff-lint:
runs-on: "ubuntu-24.04"
runs-on: "ubuntu-latest"
env:
INVOKE_PARSER_LOCAL: "True"
steps:
Expand All @@ -40,25 +38,25 @@ jobs:
- name: "Setup environment"
uses: "networktocode/gh-action-setup-poetry-environment@v6"
with:
poetry-version: "1.8.5"
poetry-version: "2.1.3"
- name: "Linting: ruff"
run: "poetry run invoke ruff --action lint"
# Temporarily disabled due to issues with the docs build and needing best practices for NTC python builds.
# check-docs-build:
# runs-on: "ubuntu-24.04"
# env:
# INVOKE_PARSER_LOCAL: "True"
# steps:
# - name: "Check out repository code"
# uses: "actions/checkout@v4"
# - name: "Setup environment"
# uses: "networktocode/gh-action-setup-poetry-environment@v6"
# with:
# poetry-version: "1.8.5"
# - name: "Check Docs Build"
# run: "poetry run invoke build-and-check-docs"
check-docs-build:
runs-on: "ubuntu-latest"
env:
INVOKE_PARSER_LOCAL: "True"
steps:
- name: "Check out repository code"
uses: "actions/checkout@v4"
- name: "Setup environment"
uses: "networktocode/gh-action-setup-poetry-environment@v6"
with:
poetry-version: "2.1.3"
poetry-install-options: "--only dev,docs"
- name: "Check Docs Build"
run: "poetry run invoke build-and-check-docs"
poetry:
runs-on: "ubuntu-24.04"
runs-on: "ubuntu-latest"
env:
INVOKE_PARSER_LOCAL: "True"
steps:
Expand All @@ -67,15 +65,11 @@ jobs:
- name: "Setup environment"
uses: "networktocode/gh-action-setup-poetry-environment@v6"
with:
poetry-version: "1.8.5"
poetry-version: "2.1.3"
- name: "Checking: poetry lock file"
run: "poetry lock --check"
needs:
- "ruff-format"
- "ruff-lint"
- "yamllint"
run: "poetry run invoke lock --check"
yamllint:
runs-on: "ubuntu-24.04"
runs-on: "ubuntu-latest"
env:
INVOKE_PARSER_LOCAL: "True"
steps:
Expand All @@ -84,32 +78,36 @@ jobs:
- name: "Setup environment"
uses: "networktocode/gh-action-setup-poetry-environment@v6"
with:
poetry-version: "1.8.5"
poetry-version: "2.1.3"
- name: "Linting: yamllint"
run: "poetry run invoke yamllint"
check-in-docker:
needs:
- "ruff-format"
- "ruff-lint"
pylint:
runs-on: "ubuntu-24.04"
- "poetry"
- "yamllint"
runs-on: "ubuntu-latest"
strategy:
fail-fast: true
matrix:
python-version: ["3.10", "3.11", "3.12", "3.13"]
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
env:
PYTHON_VER: "${{ matrix.python-version }}"
INVOKE_PARSER_PYTHON_VER: "${{ matrix.python-version }}"
steps:
- name: "Check out repository code"
uses: "actions/checkout@v4"
- name: "Setup environment"
uses: "networktocode/gh-action-setup-poetry-environment@v6"
with:
poetry-version: "2.1.3"
- name: "Get image version"
run: "echo INVOKE_PARSER_IMAGE_VER=`poetry version -s`-py$${{ matrix.python-version }} >> $GITHUB_ENV"
run: "echo INVOKE_PARSER_IMAGE_VER=`poetry version -s`-py${{ matrix.python-version }} >> $GITHUB_ENV"
- name: "Set up Docker Buildx"
id: "buildx"
uses: "docker/setup-buildx-action@b5ca514318bd6ebac0fb2aedd5d36ec1b5c232a2" # v3.10.0
uses: "docker/setup-buildx-action@b5ca514318bd6ebac0fb2aedd5d36ec1b5c232a2" # v3.10.0
- name: "Build"
uses: "docker/build-push-action@ca052bb54ab0790a636c9b5f226502c73d547a25" # v5.4.0
uses: "docker/build-push-action@ca052bb54ab0790a636c9b5f226502c73d547a25" # v5.4.0
with:
builder: "${{ steps.buildx.outputs.name }}"
context: "./"
Expand All @@ -120,33 +118,33 @@ jobs:
cache-from: "type=gha,scope=${{ env.INVOKE_PARSER_IMAGE_NAME }}-${{ env.INVOKE_PARSER_IMAGE_VER }}-py${{ matrix.python-version }}"
cache-to: "type=gha,scope=${{ env.INVOKE_PARSER_IMAGE_NAME }}-${{ env.INVOKE_PARSER_IMAGE_VER }}-py${{ matrix.python-version }}"
build-args: |
PYTHON_VER=${{ env.PYTHON_VER }}
- name: "Debug: Show docker images"
run: "docker image ls"
PYTHON_VER=${{ matrix.python-version }}
- name: "Linting: Pylint"
run: "poetry run invoke pylint"
needs:
- "poetry"
pytest:
needs:
- "check-in-docker"
strategy:
fail-fast: true
matrix:
python-version: ["3.10", "3.11", "3.12", "3.13"]
runs-on: "ubuntu-24.04"
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
runs-on: "ubuntu-latest"
env:
PYTHON_VER: "${{ matrix.python-version }}"
INVOKE_PARSER_PYTHON_VER: "${{ matrix.python-version }}"
steps:
- name: "Check out repository code"
uses: "actions/checkout@v4"
- name: "Setup environment"
uses: "networktocode/gh-action-setup-poetry-environment@v6"
with:
poetry-version: "2.1.3"
- name: "Get image version"
run: "echo INVOKE_PARSER_IMAGE_VER=`poetry version -s`-py${{ matrix.python-version }} >> $GITHUB_ENV"
- name: "Set up Docker Buildx"
id: "buildx"
uses: "docker/setup-buildx-action@b5ca514318bd6ebac0fb2aedd5d36ec1b5c232a2" # v3.10.0
uses: "docker/setup-buildx-action@b5ca514318bd6ebac0fb2aedd5d36ec1b5c232a2" # v3.10.0
- name: "Build"
uses: "docker/build-push-action@ca052bb54ab0790a636c9b5f226502c73d547a25" # v5.4.0
uses: "docker/build-push-action@ca052bb54ab0790a636c9b5f226502c73d547a25" # v5.4.0
with:
builder: "${{ steps.buildx.outputs.name }}"
context: "./"
Expand All @@ -157,46 +155,14 @@ jobs:
cache-from: "type=gha,scope=${{ env.INVOKE_PARSER_IMAGE_NAME }}-${{ env.INVOKE_PARSER_IMAGE_VER }}-py${{ matrix.python-version }}"
cache-to: "type=gha,scope=${{ env.INVOKE_PARSER_IMAGE_NAME }}-${{ env.INVOKE_PARSER_IMAGE_VER }}-py${{ matrix.python-version }}"
build-args: |
PYTHON_VER=${{ env.PYTHON_VER }}
- name: "Debug: Show docker images"
run: "docker image ls"
PYTHON_VER=${{ matrix.python-version }}
- name: "Run Tests"
run: "poetry run invoke pytest"
needs:
- "poetry"
publish_gh:
name: "Publish to GitHub"
runs-on: "ubuntu-24.04"
# yamllint disable-line rule:quoted-strings
if: startsWith(github.ref, 'refs/tags/v')
steps:
- name: "Check out repository code"
uses: "actions/checkout@v4"
- name: "Set up Python"
uses: "actions/setup-python@v5"
with:
python-version: "3.10"
- name: "Install Python Packages"
run: "pip install poetry"
- name: "Set env"
run: "echo RELEASE_VERSION=${GITHUB_REF:10} >> $GITHUB_ENV"
- name: "Run Poetry Version"
run: "poetry version $RELEASE_VERSION"
- name: "Build Documentation"
run: "poetry run invoke build-and-check-docs"
- name: "Run Poetry Build"
run: "poetry build"
- name: "Upload binaries to release"
run: "gh release upload ${{ github.ref_name }} dist/*.{tar.gz,whl}"
env:
GH_TOKEN: "${{ secrets.NTC_GITHUB_TOKEN }}"
needs:
- "pytest"
changelog:
if: >
contains(fromJson('["develop"]'), github.base_ref) &&
(github.head_ref != 'main') && (!startsWith(github.head_ref, 'release'))
runs-on: "ubuntu-22.04"
runs-on: "ubuntu-latest"
steps:
- name: "Check out repository code"
uses: "actions/checkout@v4"
Expand All @@ -205,70 +171,8 @@ jobs:
- name: "Setup environment"
uses: "networktocode/gh-action-setup-poetry-environment@v6"
with:
poetry-version: "1.8.5"
poetry-version: "2.1.3"
- name: "Check for changelog entry"
run: |
git fetch --no-tags origin +refs/heads/${{ github.base_ref }}:refs/remotes/origin/${{ github.base_ref }}
poetry run towncrier check --compare-with origin/${{ github.base_ref }}
publish_pypi:
name: "Push Package to PyPI"
runs-on: "ubuntu-24.04"
# yamllint disable-line rule:quoted-strings
if: startsWith(github.ref, 'refs/tags/v')
steps:
- name: "Check out repository code"
uses: "actions/checkout@v4"
- name: "Set up Python"
uses: "actions/setup-python@v5"
with:
python-version: "3.10"
- name: "Install Python Packages"
run: "pip install poetry"
- name: "Set env"
run: "echo RELEASE_VERSION=${GITHUB_REF:10} >> $GITHUB_ENV"
- name: "Run Poetry Version"
run: "poetry version $RELEASE_VERSION"
- name: "Run Poetry Build"
run: "poetry build"
- name: "Push to PyPI"
uses: "pypa/gh-action-pypi-publish@76f52bc884231f62b9a034ebfe128415bbaabdfc" # v1.12.4
with:
user: "__token__"
password: "${{ secrets.PYPI_API_TOKEN }}"
needs:
- "pytest"
slack-notify:
needs:
- "publish_gh"
- "publish_pypi"
runs-on: "ubuntu-24.04"
env:
SLACK_WEBHOOK_URL: "${{ secrets.SLACK_WEBHOOK_URL }}"
SLACK_MESSAGE: >-
*NOTIFICATION: NEW-RELEASE-PUBLISHED*\n
Repository: <${{ github.server_url }}/${{ github.repository }}|${{ github.repository }}>\n
Release: <${{ github.server_url }}/${{ github.repository }}/releases/tag/${{ github.ref_name }}|${{ github.ref_name }}>\n
Published by: <${{ github.server_url }}/${{ github.actor }}|${{ github.actor }}>
steps:
- name: "Send a notification to Slack"
# ENVs cannot be used directly in job.if. This is a workaround to check
# if SLACK_WEBHOOK_URL is present.
if: "env.SLACK_WEBHOOK_URL != ''"
uses: "slackapi/slack-github-action@fcfb566f8b0aab22203f066d80ca1d7e4b5d05b3" # v1.27.1
with:
payload: |
{
"text": "${{ env.SLACK_MESSAGE }}",
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "${{ env.SLACK_MESSAGE }}"
}
}
]
}
env:
SLACK_WEBHOOK_URL: "${{ secrets.SLACK_WEBHOOK_URL }}"
SLACK_WEBHOOK_TYPE: "INCOMING_WEBHOOK"
Loading
Loading