Skip to content

Add UTC as a valid timezone to the SummitIG Parser and update README - #436

Open
nsw3550 wants to merge 4 commits into
networktocode:developfrom
nsw3550:summit-utc
Open

nsw3550 wants to merge 4 commits into
networktocode:developfrom
nsw3550:summit-utc

Conversation

@nsw3550

@nsw3550 nsw3550 commented Aug 31, 2026

Copy link
Copy Markdown

Added UTC as a valid timezone for the summitig parser and updated tests to validate the behavior.

NOTE: There are some failing unit tests for other parsers, however I validated they were already failing on the develop branch so that should be unrelated to my changes.

=========================================================================== test session starts ============================================================================
platform linux -- Python 3.12.3, pytest-9.0.2, pluggy-1.6.0 -- /home/nwinemiller/.cache/pypoetry/virtualenvs/circuit-maintenance-parser-by6B4l4R-py3.12/bin/python
cachedir: .pytest_cache
rootdir: /home/nwinemiller/projects/circuit-maintenance-parser
configfile: pyproject.toml
plugins: requests-mock-1.12.1
collected 420 items / 417 deselected / 3 selected

tests/unit/test_e2e.py::test_provider_get_maintenances[SummitIG-test_data_files88-result_parse_files88] PASSED                                                       [ 33%]
tests/unit/test_parsers.py::test_parsers[HtmlParserSummitIG-raw_file118-results_file118] PASSED                                                                      [ 66%]
tests/unit/test_parsers.py::test_parsers[HtmlParserSummitIG-raw_file119-results_file119] PASSED                                                                      
==================================================================== 3 passed, 417 deselected in 0.39s ===============```

@jvanderaa

Copy link
Copy Markdown
Contributor

Thanks for this! The parser change is exactly right, and adding SummitIG to the README was a good catch — it should have been there already.

I pulled the branch and checked the new fixture against the email: the same 12:00 AM–6:00 AM window read as UTC gives your 1740096000 / 1740117600, which is correct. Full suite passes for me too.

One thing to fix before I merge:

tests/unit/data/summitig/summitig_utc_result.json was added, but nothing references it — test_e2e.py doesn't have an entry for the new email, so it never gets loaded. And because nothing loads it, a missing comma after "end": 1740117600 went unnoticed (the file isn't valid JSON as it stands).

Adding the comma and dropping this in next to the existing SummitIG entry around test_e2e.py:856 should do it:

(
SummitIG,
[("email", Path(dir_path, "data", "summitig", "summitig_utc.eml"))],
[Path(dir_path, "data", "summitig", "summitig_utc_result.json")],
),

That gets the UTC email covered end to end, not just at the parser layer.

One other note, just so you're not working around a problem that isn't there: I ran the full unit suite on current develop and got 419 passed, 0 failures. So the failures you saw look like something local rather than a broken baseline — poetry install --sync usually sorts it out if the virtualenv has drifted.

Ping me once the fixture is wired up and I'll get this merged.

@nsw3550

nsw3550 commented Sep 8, 2026

Copy link
Copy Markdown
Author

Thanks for catching that! I fixed the json file and updated the test_e2e.py file with the requested changes:

========================================================================= 421 passed in 25.23s =========================================================================
Name                                                       Stmts   Miss  Cover
------------------------------------------------------------------------------
circuit_maintenance_parser/__init__.py                        32      0   100%
circuit_maintenance_parser/cli.py                             39     39     0%
circuit_maintenance_parser/constants.py                        2      0   100%
circuit_maintenance_parser/data.py                            53      2    96%
circuit_maintenance_parser/errors.py                           9      0   100%
circuit_maintenance_parser/output.py                          98     10    90%
circuit_maintenance_parser/parser.py                         280    108    61%
circuit_maintenance_parser/parsers/__init__.py                 0      0   100%
circuit_maintenance_parser/parsers/apple.py                   35      0   100%
circuit_maintenance_parser/parsers/aquacomms.py               35      0   100%
circuit_maintenance_parser/parsers/att.py                     66      1    98%
circuit_maintenance_parser/parsers/aws.py                     71      5    93%
circuit_maintenance_parser/parsers/bso.py                     63      0   100%
circuit_maintenance_parser/parsers/cirion.py                  70      4    94%
circuit_maintenance_parser/parsers/cogent.py                 135     54    60%
circuit_maintenance_parser/parsers/colt.py                    50      2    96%
circuit_maintenance_parser/parsers/crowncastle.py             64      1    98%
circuit_maintenance_parser/parsers/equinix.py                 89      4    96%
circuit_maintenance_parser/parsers/flag.py                    59      4    93%
circuit_maintenance_parser/parsers/globalcloudxchange.py      43      5    88%
circuit_maintenance_parser/parsers/google.py                  49      2    96%
circuit_maintenance_parser/parsers/gtt.py                     49      0   100%
circuit_maintenance_parser/parsers/hawaiki.py                 54      7    87%
circuit_maintenance_parser/parsers/hgc.py                     64      3    95%
circuit_maintenance_parser/parsers/kpn.py                     70     10    86%
circuit_maintenance_parser/parsers/lumen.py                   98      4    96%
circuit_maintenance_parser/parsers/megaport.py                56      6    89%
circuit_maintenance_parser/parsers/momentum.py                40      4    90%
circuit_maintenance_parser/parsers/netflix.py                 40      0   100%
circuit_maintenance_parser/parsers/openai.py                  32      2    94%
circuit_maintenance_parser/parsers/pccw.py                    43      2    95%
circuit_maintenance_parser/parsers/retn.py                    62      7    89%
circuit_maintenance_parser/parsers/seaborn.py                 67      2    97%
circuit_maintenance_parser/parsers/sparkle.py                 46      4    91%
circuit_maintenance_parser/parsers/summitig.py                59      4    93%
circuit_maintenance_parser/parsers/tata.py                    41      0   100%
circuit_maintenance_parser/parsers/telstra.py                126     16    87%
circuit_maintenance_parser/parsers/telxius.py                 73      2    97%
circuit_maintenance_parser/parsers/turkcell.py                43      1    98%
circuit_maintenance_parser/parsers/verizon.py                 61      1    98%
circuit_maintenance_parser/parsers/vodafone.py                84      2    98%
circuit_maintenance_parser/parsers/windstream.py              50      5    90%
circuit_maintenance_parser/parsers/zayo.py                    98      5    95%
circuit_maintenance_parser/processor.py                       72      1    99%
circuit_maintenance_parser/processors/__init__.py              0      0   100%
circuit_maintenance_parser/provider.py                       274     14    95%
circuit_maintenance_parser/utils.py                           94     18    81%
------------------------------------------------------------------------------
TOTAL                                                       3138    361    88%

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants