You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This document describes all new features and changes in the `1.x` release series. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
5
4
6
-
- Changelogs are for humans, not machines.
7
-
- There should be an entry for every single version.
8
-
- The same types of changes should be grouped.
9
-
- Versions and sections should be linkable.
10
-
- The latest version comes first.
11
-
- The release date of each version is displayed.
12
-
- Mention whether you follow Semantic Versioning.
5
+
For a complete history of all releases, see the [full changelog](../../release_notes.md).
13
6
14
-
Types of changes:
15
-
16
-
- `Added` for new features.
17
-
- `Changed` for changes in existing functionality.
18
-
- `Deprecated` for soon-to-be removed features.
19
-
- `Removed` for now removed features.
20
-
- `Fixed` for any bug fixes.
21
-
- `Security` in case of vulnerabilities.
22
-
23
-
24
-
This document describes all new features and changes in the release `1.0`. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
25
-
26
-
## Release Overview
27
-
28
-
- Major features or milestones
29
-
- Achieved in this `x.y` release
30
-
- Changes to compatibility with Nautobot and/or other apps, libraries etc.
31
-
32
-
## [v1.0.0] - 2026-03-05
7
+
## v1.0.2 - 2021-05-05
33
8
34
9
### Added
35
10
36
-
### Changed
11
+
-[#10](https://github.com/networktocode/circuit-maintenance-parser/pull/10) - Added `cli` command to run as a script.
37
12
38
-
### Fixed
13
+
##v1.0.0 - 2021-04-29
39
14
40
-
-[#123](https://github.com/networktocode/circuit-maintenance-parser/issues/123) Fixed Tag filtering not working in job launch form.
15
+
Initial release of the circuit-maintenance-parser library with support for parsing circuit maintenance notifications from Network Service Providers using the iCalendar BCOP standard format.
This document describes all new features and changes in the `2.10` release series. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
-[#330](https://github.com/networktocode/circuit-maintenance-parser/issues/330) - Add support for parsing AWS HTML format maintenance notification emails
10
+
11
+
### Dependencies
12
+
13
+
-[#360](https://github.com/networktocode/circuit-maintenance-parser/issues/360) - Updated lxml to include version 6
14
+
-[#361](https://github.com/networktocode/circuit-maintenance-parser/issues/361) - Updated timezonefinder to v8.2.0
15
+
-[#345](https://github.com/networktocode/circuit_maintenance_parser/issues/345) - Updated minimum Python version to 3.10 and upgraded dependencies including pytest (9.0), pylint (4.0), towncrier (25.8), backoff (2.2), and type stubs
16
+
17
+
### Housekeeping
18
+
19
+
-[#344](https://github.com/networktocode/circuit-maintenance-parser/issues/344) - Updated test coverage for the codebase
Copy file name to clipboardExpand all lines: docs/dev/extending.md
+67Lines changed: 67 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,3 +2,70 @@
2
2
3
3
Extending the library is welcome, however it is best to open an issue first, to ensure that a PR would be accepted and makes sense in terms of features and design.
4
4
5
+
## Adding a New Provider
6
+
7
+
Adding a new `Provider` is straightforward. Here's an example adding support for an imaginary provider, ABCDE, that uses HTML notifications.
8
+
9
+
### Step 1: Create the Parser
10
+
11
+
Create a new file `circuit_maintenance_parser/parsers/abcde.py` with your custom parser(s):
12
+
13
+
```python
14
+
from typing import Dict
15
+
import bs4 # type:ignore
16
+
from bs4.element import ResultSet # type:ignore
17
+
from circuit_maintenance_parser.parser import Html
The `_processors` attribute is a list of `Processor` instances that use several data `Parsers`. The `_default_organizer` fills the `organizer` attribute if missing from the notification.
46
+
47
+
### Step 3: Expose the Provider
48
+
49
+
Update `circuit_maintenance_parser/__init__.py`:
50
+
51
+
```python
52
+
from .provider import (
53
+
GenericProvider,
54
+
ABCDE,
55
+
...
56
+
)
57
+
58
+
SUPPORTED_PROVIDERS= (
59
+
GenericProvider,
60
+
ABCDE,
61
+
...
62
+
)
63
+
```
64
+
65
+
### Step 4: Add Tests
66
+
67
+
- Add parser tests in `tests/unit/test_parsers.py`
68
+
- Add provider/end-to-end tests in `tests/unit/test_e2e.py`
69
+
- Add sample data in `tests/unit/data/abcde/`
70
+
71
+
You can anonymize IPv4 and IPv6 addresses in test data using `invoke anonymize-ips`.
## Q: My provider is not supported. What can I do?
4
+
5
+
You can extend the library by adding a new provider. See the [Extending the Library](../dev/extending.md) guide for instructions. Pull requests for new providers are always welcome!
6
+
7
+
## Q: The parser for my provider is returning incorrect data. What should I do?
8
+
9
+
Please [open an issue](https://github.com/networktocode/circuit-maintenance-parser/issues/new) with the details. If possible, include a sanitized sample of the notification data that is being parsed incorrectly.
10
+
11
+
## Q: Can I use the LLM-powered parser without a specific provider?
12
+
13
+
Yes, the LLM-powered parsers are automatically appended after all existing processors for each defined Provider when the appropriate environment variables are set. You can use them with any provider, including the `GenericProvider`.
14
+
15
+
## Q: How do I check if a maintenance was parsed by an LLM?
16
+
17
+
Each `Maintenance` object has a `metadata` attribute. Check `maintenance.metadata.generated_by_llm` to determine if LLM parsing was used.
18
+
19
+
## Q: Where can I get help?
20
+
21
+
Feel free to swing by the [Network to Code Slack](https://networktocode.slack.com/) (channel `#networktocode`). Sign up [here](http://slack.networktocode.com/) if you don't have an account.
Copy file name to clipboardExpand all lines: docs/user/lib_overview.md
+11-4Lines changed: 11 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,13 +4,20 @@ This document provides an overview of the library including critical information
4
4
5
5
## Description
6
6
7
+
`circuit-maintenance-parser` is a Python library that parses circuit maintenance notifications from Network Service Providers (NSPs), converting heterogeneous formats to a well-defined structured format.
8
+
9
+
Every network depends on external circuits provided by NSPs who interconnect them to the Internet, to office branches or to external service providers such as Public Clouds. These services occasionally require operation windows to upgrade or fix related issues, usually in the form of **circuit maintenance periods**. NSPs generally notify customers of these upcoming events so that customers can take actions to minimize impact.
10
+
11
+
The challenge is that almost every NSP defines its own maintenance notification format, even though the relevant information is mostly the same. This library parses notification formats from several providers and returns a standardized object struct, making it easier to process them.
12
+
13
+
The output format follows the [BCOP](https://github.com/jda/maintnote-std/blob/master/standard.md) defined during a NANOG meeting that promotes the usage of the iCalendar format.
7
14
8
15
## Audience (User Personas) - Who should use this Library?
9
16
10
-
!!! warning "Developer Note - Remove Me!"
11
-
Who is this meant for/ who is the common user of this library?
17
+
-**Network Engineers** who need to automate the processing of circuit maintenance notifications from multiple providers.
18
+
-**Network Operations Center (NOC) teams** who want to standardize how maintenance windows are tracked across different NSPs.
19
+
-**Automation developers** building workflows that need to programmatically consume and act on circuit maintenance notifications.
12
20
13
21
## Authors and Maintainers
14
22
15
-
!!! warning "Developer Note - Remove Me!"
16
-
Add the team and/or the main individuals maintaining this project. Include historical maintainers as well.
23
+
This library is maintained by [Network to Code](https://www.networktocode.com/). For a full list of contributors, see the [GitHub contributors page](https://github.com/networktocode/circuit-maintenance-parser/graphs/contributors).
0 commit comments