Skip to content

Commit

Permalink
Merge branch 'v5'
Browse files Browse the repository at this point in the history
  • Loading branch information
aweakley committed Jul 18, 2024
2 parents a58ee10 + d313a9d commit 3b402c8
Show file tree
Hide file tree
Showing 43 changed files with 3,207 additions and 1,370 deletions.
100 changes: 96 additions & 4 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,17 @@
name: CI

on:
workflow_dispatch:
pull_request:
push:
workflow_dispatch:

permissions:
checks: write
contents: write
# deployments permission to deploy GitHub pages website
deployments: write
pull-requests: write


jobs:
python-unit:
Expand All @@ -18,7 +27,7 @@ jobs:
- uses: actions/checkout@v4

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
cache: 'pip'
Expand All @@ -28,7 +37,90 @@ jobs:
run: |
python -m pip install --upgrade pip
pip install .[test]
- name: Check Python linting (Ruff)
run: ruff check --output-format=github

- name: Check Python formatting (Ruff)
run: ruff format --check

- name: Run unit tests
run: |
pytest
pytest --junitxml=junit_pytest_main.xml --cov-report=term-missing:skip-covered
mv .coverage .coverage_main
- name: Run Django integration tests
working-directory: ./edtf_django_tests
run: |
pytest edtf_integration/tests.py --ds=edtf_django_tests.settings --junitxml=../junit_pytest_django.xml --cov-report=term-missing:skip-covered
mv .coverage ../.coverage_django
- name: Combine coverage reports
run: |
coverage combine .coverage_main .coverage_django
coverage report --omit="edtf_django_tests/*"
coverage xml -o coverage_combined.xml --omit="edtf_django_tests/*"
- name: Combine JUnit XML reports
run: |
python combine_junit.py combined_junit_pytest.xml junit_pytest_main.xml junit_pytest_django.xml
- name: Pytest coverage comment
id: coverageComment
uses: MishaKav/pytest-coverage-comment@main
with:
pytest-xml-coverage-path: ./coverage_combined.xml
junitxml-path: ./combined_junit_pytest.xml
unique-id-for-comment: ${{ matrix.python-version }}
github-token: ${{ secrets.GITHUB_TOKEN }}

- name: Check the output coverage
run: |
echo "Coverage Percentage - ${{ steps.coverageComment.outputs.coverage }}"
echo "Coverage Color - ${{ steps.coverageComment.outputs.color }}"
echo "Coverage Html - ${{ steps.coverageComment.outputs.coverageHtml }}"
echo "Summary Report -" ${{ steps.coverageComment.outputs.summaryReport }}
echo "Coverage Warnings - ${{ steps.coverageComment.outputs.warnings }}"
echo "Coverage Errors - ${{ steps.coverageComment.outputs.errors }}"
echo "Coverage Failures - ${{ steps.coverageComment.outputs.failures }}"
echo "Coverage Skipped - ${{ steps.coverageComment.outputs.skipped }}"
echo "Coverage Tests - ${{ steps.coverageComment.outputs.tests }}"
echo "Coverage Time - ${{ steps.coverageComment.outputs.time }}"
echo "Not Success Test Info - ${{ steps.coverageComment.outputs.notSuccessTestInfo }}"
- name: Run benchmarks
run: |
pytest -m benchmark --benchmark-json=./output.json
- name: Download previous benchmark data
uses: actions/cache@v4
with:
path: ./cache
key: ${{ runner.os }}-benchmark

- name: Publish benchmark results
uses: benchmark-action/github-action-benchmark@v1
if: github.event_name == 'pull_request' && github.repository == 'ixc/python-edtf'
with:
tool: 'pytest'
auto-push: true
comment-always: true
output-file-path: output.json
github-token: ${{ secrets.GITHUB_TOKEN }}
comment-on-alert: true
save-data-file: true
summary-always: true

- name: Comment on benchmark results without publishing
if: github.event_name != 'pull_request' || github.repository != 'ixc/python-edtf'
uses: benchmark-action/github-action-benchmark@v1
with:
tool: 'pytest'
auto-push: false
github-token: ${{ secrets.GITHUB_TOKEN }}
comment-always: true
output-file-path: output.json
comment-on-alert: false
save-data-file: true
summary-always: true
external-data-json-path: ./cache/benchmark-data.json
68 changes: 68 additions & 0 deletions .github/workflows/coverage_readme.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
name: Update Coverage on Readme
on:
push:
branches:
- main

# https://docs.github.com/en/actions/using-jobs/assigning-permissions-to-jobs
# `contents` is for permission to the contents of the repository.
# `pull-requests` is for permission to pull request
permissions:
contents: write
checks: write
pull-requests: write

# see: https://github.com/MishaKav/pytest-coverage-comment
jobs:
update-coverage-on-readme:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
fetch-depth: 0

- name: Set up Python 3.12
uses: actions/setup-python@v5
with:
python-version: 3.12
cache: 'pip'
cache-dependency-path: '**/pyproject.toml'

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install .[test]
- name: Run tests and generate coverage
run: |
pytest
mv .coverage .coverage_main
cd edtf_django_tests
coverage run manage.py test edtf_integration
mv .coverage ../.coverage_django
cd ..
coverage combine .coverage_main .coverage_django
coverage report --omit="edtf_django_tests/*"
coverage xml -o coverage_combined.xml --omit="edtf_django_tests/*"
- name: Pytest coverage comment
if: ${{ github.ref == 'refs/heads/main' }}
id: coverageComment
uses: MishaKav/pytest-coverage-comment@main
with:
pytest-xml-coverage-path: ./coverage_combined.xml
hide-comment: true

- name: Update Readme with Coverage Html
if: ${{ github.ref == 'refs/heads/main' }}
run: |
sed -i '/<!-- Pytest Coverage Comment:Begin -->/,/<!-- Pytest Coverage Comment:End -->/c\<!-- Pytest Coverage Comment:Begin -->\n\${{ steps.coverageComment.outputs.coverageHtml }}\n<!-- Pytest Coverage Comment:End -->' ./README.md
- name: Commit & Push changes to README
run: |
git config --global user.name 'github-actions[bot]'
git config --global user.email 'github-actions[bot]@users.noreply.github.com'
git add README.md
git commit -m 'Update coverage badge in README'
git push
9 changes: 9 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ __pycache__/
# Distribution / packaging
.Python
env/
venv/
build/
develop-eggs/
dist/
Expand Down Expand Up @@ -41,14 +42,22 @@ htmlcov/
.cache
nosetests.xml
coverage.xml
coverage_combined.xml
.coverage_main
.coverage_django
*,cover
combined_junit_pytest.xml
pytest.xml
junit_pytest_main.xml
junit_pytest_django.xml

# Translations
*.mo
*.pot

# Django stuff:
*.log
db.sqlite3

# Sphinx documentation
docs/_build/
Expand Down
22 changes: 22 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.5.0
hooks:
- id: end-of-file-fixer
exclude: "business-facing/layer"
- id: trailing-whitespace
exclude: "business-facing/layer"
- id: check-yaml
exclude: "business-facing/layer"
- id: check-json
exclude: "business-facing/layer"

- repo: https://github.com/astral-sh/ruff-pre-commit
# Ruff version.
rev: v0.4.4
hooks:
# Run the linter, and enable lint fixes
- id: ruff
args: [ --fix ]
# Run the formatter.
- id: ruff-format
12 changes: 0 additions & 12 deletions .travis.yml

This file was deleted.

1 change: 1 addition & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
The MIT License (MIT)

Copyright (c) 2015 The Interaction Consortium
Copyright (c) 2023 SAW Leipzig

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
Loading

5 comments on commit 3b402c8

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Coverage

Coverage Report
FileStmtsMissCoverMissing
/opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/site-packages/edtf
   __init__.py40100% 
   appsettings.py28485%10–13
   convert.py634430%11–19, 21, 38–39, 52, 61, 72–73, 75, 104, 107–109, 113, 117, 136–156
   fields.py1192281%70, 84, 89, 91, 94–95, 97–98, 100, 105, 109–112, 135–136, 157, 167–168, 172–173, 181
   jdutil.py986632%37, 55, 91–92, 105, 152, 154–155, 157, 159, 161, 163, 165, 167, 169, 171, 173, 175, 251–252, 254–255, 257–258, 260, 262, 287, 291, 314, 316–317, 319, 321, 346, 348, 350, 370–372, 374, 376, 378, 381–383, 385, 387, 389, 392–393, 395, 397, 399–400, 402, 405–407, 410–413, 415, 417, 424, 431
   tests.py71710%3–4, 6, 9–13, 16–21, 24–25, 28–29, 32–37, 40–44, 52–53, 56–62, 65–71, 74–79, 82–85, 88–91, 94–97, 100–107
/opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/site-packages/edtf/natlang
   __init__.py20100% 
   en.py1477151%33, 43–44, 46–49, 54–55, 58–61, 63, 67–70, 72–73, 75–77, 85–87, 89–93, 103, 105, 118, 125, 156–158, 160–165, 168–170, 172–177, 201–204, 208, 223, 225–226, 228, 245, 247, 255, 257, 259, 261, 266, 269, 275
   tests.py10100%3, 5, 10, 179, 184–185, 190–191, 207, 211
/opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/site-packages/edtf/parser
   __init__.py40100% 
   edtf_exceptions.py151126%13–19, 22–24, 29
   grammar.py1281191%148–151, 350, 355–360
   parser_classes.py63335044%69, 71, 78–81, 83–84, 86–87, 110–112, 116, 119, 122, 181, 183, 190, 192, 198–202, 207–213, 220–224, 229–235, 246, 257, 286, 290, 302–304, 309, 317–319, 322, 337–338, 342, 371–375, 378, 383–384, 387, 390, 393, 396–400, 403–407, 427–429, 453, 457, 462, 464, 483, 490, 506, 515–517, 519–521, 524–525, 527, 530–533, 535, 537–539, 541, 545, 558, 565–568, 571, 574–577, 580–583, 585–589, 592–593, 596, 600, 606–607, 610, 613–614, 617, 621–622, 625–626, 629, 635, 640–641, 647, 649, 652–654, 660, 665–666, 669, 675, 677, 681–695, 700–702, 706, 708, 711–713, 717, 719, 722–724, 730–733, 738–739, 744–745, 747, 750, 753–755, 757, 760, 763–766, 768–774, 781–784, 786–792, 801–802, 805, 808, 811–813, 815, 823, 842–844, 846–849, 851–852, 854–855, 857, 859, 868, 871, 874, 881–882, 884–885, 887, 889, 891–892, 894, 896–901, 903, 905, 907–908, 910, 913–915, 918–920, 923–925, 933, 935–936, 939–940, 943–944, 947–948, 950–951, 955, 959–960, 963, 968–969, 973–974, 976–984, 986, 996–997, 999, 1001–1002, 1004, 1007, 1012, 1017, 1023–1024, 1027, 1030, 1033, 1035–1037, 1039, 1044–1045, 1047, 1056–1057, 1060, 1063, 1066–1067, 1069, 1078–1079, 1081–1083, 1085–1088, 1100–1102, 1107, 1110–1111, 1113, 1118
   tests.py89890%3–4, 6, 8–10, 26, 229, 243, 262, 284, 286–289, 291–293, 295–299, 302–303, 305–306, 309–311, 314–315, 318–321, 324, 327–331, 334, 337, 340, 343–348, 351, 354, 357, 362–363, 365–366, 369–370, 372–374, 377, 379–384, 386–393, 396–398, 400, 403–404, 410–414
edtf
   __init__.py40100% 
   appsettings.py28292%12–13
   convert.py631182%11–19, 21, 73
   fields.py1191190%1, 3–8, 10–13, 15, 23, 29, 31, 33–35, 38–39, 51–58, 60, 63, 65–70, 72–76, 78–79, 81, 83–84, 86, 88–89, 91, 93–95, 97–98, 100, 102–105, 107, 109–112, 114, 123–125, 128, 131–132, 135–136, 139–140, 142–144, 147, 151, 153, 155, 157, 160–173, 179, 181–182, 184–185, 190–191, 193–194, 196, 204, 206, 208–209, 212–213, 223–226, 234
   jdutil.py984455%37, 55, 91–92, 287, 291, 314, 316–317, 319, 321, 346, 348, 350, 370–372, 374, 376, 378, 381–383, 385, 387, 389, 392–393, 395, 397, 399–400, 402, 405–407, 410–413, 415, 417, 424, 431
   tests.py710100% 
edtf/natlang
   __init__.py20100% 
   en.py1471192%55, 58, 118, 164–165, 176–177, 203–204, 208, 275
   tests.py10190%211
edtf/parser
   __init__.py40100% 
   edtf_exceptions.py15286%24, 29
   grammar.py128298%357, 359
   parser_classes.py6339884%110–112, 119, 122, 183, 189–193, 200–202, 209–213, 222–224, 229–235, 246, 337–338, 371–375, 378, 393, 396–400, 403–407, 427–429, 545, 581, 589, 593, 640–641, 647, 665–666, 669, 675, 682, 684, 688, 695, 760, 766, 770, 784, 788, 882, 900–901, 903, 908, 914, 919, 924, 960, 963, 969, 974, 976–984, 999, 1004, 1081, 1085, 1118
   tests.py89198%400
TOTAL2822104063% 

Tests Skipped Failures Errors Time
279 0 💤 0 ❌ 0 🔥 4.445s ⏱️

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Coverage

Coverage Report
FileStmtsMissCoverMissing
/opt/hostedtoolcache/Python/3.10.14/x64/lib/python3.10/site-packages/edtf
   __init__.py40100% 
   appsettings.py28485%10–13
   convert.py634430%11–19, 21, 38–39, 52, 61, 72–73, 75, 104, 107–109, 113, 117, 136–156
   fields.py1192281%70, 84, 89, 91, 94–95, 97–98, 100, 105, 109–112, 135–136, 157, 167–168, 172–173, 181
   jdutil.py986632%37, 55, 91–92, 105, 152, 154–155, 157, 159, 161, 163, 165, 167, 169, 171, 173, 175, 251–252, 254–255, 257–258, 260, 262, 287, 291, 314, 316–317, 319, 321, 346, 348, 350, 370–372, 374, 376, 378, 381–383, 385, 387, 389, 392–393, 395, 397, 399–400, 402, 405–407, 410–413, 415, 417, 424, 431
   tests.py71710%3–4, 6, 9–13, 16–21, 24–25, 28–29, 32–37, 40–44, 52–53, 56–62, 65–71, 74–79, 82–85, 88–91, 94–97, 100–107
/opt/hostedtoolcache/Python/3.10.14/x64/lib/python3.10/site-packages/edtf/natlang
   __init__.py20100% 
   en.py1477151%33, 43–44, 46–49, 54–55, 58–61, 63, 67–70, 72–73, 75–77, 85–87, 89–93, 103, 105, 118, 125, 156–158, 160–165, 168–170, 172–177, 201–204, 208, 223, 225–226, 228, 245, 247, 255, 257, 259, 261, 266, 269, 275
   tests.py10100%3, 5, 10, 179, 184–185, 190–191, 207, 211
/opt/hostedtoolcache/Python/3.10.14/x64/lib/python3.10/site-packages/edtf/parser
   __init__.py40100% 
   edtf_exceptions.py151126%13–19, 22–24, 29
   grammar.py1281191%148–151, 350, 355–360
   parser_classes.py63335044%69, 71, 78–81, 83–84, 86–87, 110–112, 116, 119, 122, 181, 183, 190, 192, 198–202, 207–213, 220–224, 229–235, 246, 257, 286, 290, 302–304, 309, 317–319, 322, 337–338, 342, 371–375, 378, 383–384, 387, 390, 393, 396–400, 403–407, 427–429, 453, 457, 462, 464, 483, 490, 506, 515–517, 519–521, 524–525, 527, 530–533, 535, 537–539, 541, 545, 558, 565–568, 571, 574–577, 580–583, 585–589, 592–593, 596, 600, 606–607, 610, 613–614, 617, 621–622, 625–626, 629, 635, 640–641, 647, 649, 652–654, 660, 665–666, 669, 675, 677, 681–695, 700–702, 706, 708, 711–713, 717, 719, 722–724, 730–733, 738–739, 744–745, 747, 750, 753–755, 757, 760, 763–766, 768–774, 781–784, 786–792, 801–802, 805, 808, 811–813, 815, 823, 842–844, 846–849, 851–852, 854–855, 857, 859, 868, 871, 874, 881–882, 884–885, 887, 889, 891–892, 894, 896–901, 903, 905, 907–908, 910, 913–915, 918–920, 923–925, 933, 935–936, 939–940, 943–944, 947–948, 950–951, 955, 959–960, 963, 968–969, 973–974, 976–984, 986, 996–997, 999, 1001–1002, 1004, 1007, 1012, 1017, 1023–1024, 1027, 1030, 1033, 1035–1037, 1039, 1044–1045, 1047, 1056–1057, 1060, 1063, 1066–1067, 1069, 1078–1079, 1081–1083, 1085–1088, 1100–1102, 1107, 1110–1111, 1113, 1118
   tests.py89890%3–4, 6, 8–10, 26, 229, 243, 262, 284, 286–289, 291–293, 295–299, 302–303, 305–306, 309–311, 314–315, 318–321, 324, 327–331, 334, 337, 340, 343–348, 351, 354, 357, 362–363, 365–366, 369–370, 372–374, 377, 379–384, 386–393, 396–398, 400, 403–404, 410–414
edtf
   __init__.py40100% 
   appsettings.py28292%12–13
   convert.py631182%11–19, 21, 73
   fields.py1191190%1, 3–8, 10–13, 15, 23, 29, 31, 33–35, 38–39, 51–58, 60, 63, 65–70, 72–76, 78–79, 81, 83–84, 86, 88–89, 91, 93–95, 97–98, 100, 102–105, 107, 109–112, 114, 123–125, 128, 131–132, 135–136, 139–140, 142–144, 147, 151, 153, 155, 157, 160–173, 179, 181–182, 184–185, 190–191, 193–194, 196, 204, 206, 208–209, 212–213, 223–226, 234
   jdutil.py984455%37, 55, 91–92, 287, 291, 314, 316–317, 319, 321, 346, 348, 350, 370–372, 374, 376, 378, 381–383, 385, 387, 389, 392–393, 395, 397, 399–400, 402, 405–407, 410–413, 415, 417, 424, 431
   tests.py710100% 
edtf/natlang
   __init__.py20100% 
   en.py1471192%55, 58, 118, 164–165, 176–177, 203–204, 208, 275
   tests.py10190%211
edtf/parser
   __init__.py40100% 
   edtf_exceptions.py15286%24, 29
   grammar.py128298%357, 359
   parser_classes.py6339884%110–112, 119, 122, 183, 189–193, 200–202, 209–213, 222–224, 229–235, 246, 337–338, 371–375, 378, 393, 396–400, 403–407, 427–429, 545, 581, 589, 593, 640–641, 647, 665–666, 669, 675, 682, 684, 688, 695, 760, 766, 770, 784, 788, 882, 900–901, 903, 908, 914, 919, 924, 960, 963, 969, 974, 976–984, 999, 1004, 1081, 1085, 1118
   tests.py89198%400
TOTAL2822104063% 

Tests Skipped Failures Errors Time
279 0 💤 0 ❌ 0 🔥 4.257s ⏱️

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Coverage

Coverage Report
FileStmtsMissCoverMissing
/opt/hostedtoolcache/Python/3.9.19/x64/lib/python3.9/site-packages/edtf
   __init__.py40100% 
   appsettings.py28485%10–13
   convert.py634430%11–19, 21, 38–39, 52, 61, 72–73, 75, 104, 107–109, 113, 117, 136–156
   fields.py1192281%70, 84, 89, 91, 94–95, 97–98, 100, 105, 109–112, 135–136, 157, 167–168, 172–173, 181
   jdutil.py986632%37, 55, 91–92, 105, 152, 154–155, 157, 159, 161, 163, 165, 167, 169, 171, 173, 175, 251–252, 254–255, 257–258, 260, 262, 287, 291, 314, 316–317, 319, 321, 346, 348, 350, 370–372, 374, 376, 378, 381–383, 385, 387, 389, 392–393, 395, 397, 399–400, 402, 405–407, 410–413, 415, 417, 424, 431
   tests.py71710%3–4, 6, 9–13, 16–21, 24–25, 28–29, 32–37, 40–44, 52–53, 56–62, 65–71, 74–79, 82–85, 88–91, 94–97, 100–107
/opt/hostedtoolcache/Python/3.9.19/x64/lib/python3.9/site-packages/edtf/natlang
   __init__.py20100% 
   en.py1477151%33, 43–44, 46–49, 54–55, 58–61, 63, 67–70, 72–73, 75–77, 85–87, 89–93, 103, 105, 118, 125, 156–158, 160–165, 168–170, 172–177, 201–204, 208, 223, 225–226, 228, 245, 247, 255, 257, 259, 261, 266, 269, 275
   tests.py10100%3, 5, 10, 179, 184–185, 190–191, 207, 211
/opt/hostedtoolcache/Python/3.9.19/x64/lib/python3.9/site-packages/edtf/parser
   __init__.py40100% 
   edtf_exceptions.py151126%13–19, 22–24, 29
   grammar.py1281191%148–151, 350, 355–360
   parser_classes.py63335044%69, 71, 78–81, 83–84, 86–87, 110–112, 116, 119, 122, 181, 183, 190, 192, 198–202, 207–213, 220–224, 229–235, 246, 257, 286, 290, 302–304, 309, 317–319, 322, 337–338, 342, 371–375, 378, 383–384, 387, 390, 393, 396–400, 403–407, 427–429, 453, 457, 462, 464, 483, 490, 506, 515–517, 519–521, 524–525, 527, 530–533, 535, 537–539, 541, 545, 558, 565–568, 571, 574–577, 580–583, 585–589, 592–593, 596, 600, 606–607, 610, 613–614, 617, 621–622, 625–626, 629, 635, 640–641, 647, 649, 652–654, 660, 665–666, 669, 675, 677, 681–695, 700–702, 706, 708, 711–713, 717, 719, 722–724, 730–733, 738–739, 744–745, 747, 750, 753–755, 757, 760, 763–766, 768–774, 781–784, 786–792, 801–802, 805, 808, 811–813, 815, 823, 842–844, 846–849, 851–852, 854–855, 857, 859, 868, 871, 874, 881–882, 884–885, 887, 889, 891–892, 894, 896–901, 903, 905, 907–908, 910, 913–915, 918–920, 923–925, 933, 935–936, 939–940, 943–944, 947–948, 950–951, 955, 959–960, 963, 968–969, 973–974, 976–984, 986, 996–997, 999, 1001–1002, 1004, 1007, 1012, 1017, 1023–1024, 1027, 1030, 1033, 1035–1037, 1039, 1044–1045, 1047, 1056–1057, 1060, 1063, 1066–1067, 1069, 1078–1079, 1081–1083, 1085–1088, 1100–1102, 1107, 1110–1111, 1113, 1118
   tests.py89890%3–4, 6, 8–10, 26, 229, 243, 262, 284, 286–289, 291–293, 295–299, 302–303, 305–306, 309–311, 314–315, 318–321, 324, 327–331, 334, 337, 340, 343–348, 351, 354, 357, 362–363, 365–366, 369–370, 372–374, 377, 379–384, 386–393, 396–398, 400, 403–404, 410–414
edtf
   __init__.py40100% 
   appsettings.py28292%12–13
   convert.py631182%11–19, 21, 73
   fields.py1191190%1, 3–8, 10–13, 15, 23, 29, 31, 33–35, 38–39, 51–58, 60, 63, 65–70, 72–76, 78–79, 81, 83–84, 86, 88–89, 91, 93–95, 97–98, 100, 102–105, 107, 109–112, 114, 123–125, 128, 131–132, 135–136, 139–140, 142–144, 147, 151, 153, 155, 157, 160–173, 179, 181–182, 184–185, 190–191, 193–194, 196, 204, 206, 208–209, 212–213, 223–226, 234
   jdutil.py984455%37, 55, 91–92, 287, 291, 314, 316–317, 319, 321, 346, 348, 350, 370–372, 374, 376, 378, 381–383, 385, 387, 389, 392–393, 395, 397, 399–400, 402, 405–407, 410–413, 415, 417, 424, 431
   tests.py710100% 
edtf/natlang
   __init__.py20100% 
   en.py1471192%55, 58, 118, 164–165, 176–177, 203–204, 208, 275
   tests.py10190%211
edtf/parser
   __init__.py40100% 
   edtf_exceptions.py15286%24, 29
   grammar.py128298%357, 359
   parser_classes.py6339884%110–112, 119, 122, 183, 189–193, 200–202, 209–213, 222–224, 229–235, 246, 337–338, 371–375, 378, 393, 396–400, 403–407, 427–429, 545, 581, 589, 593, 640–641, 647, 665–666, 669, 675, 682, 684, 688, 695, 760, 766, 770, 784, 788, 882, 900–901, 903, 908, 914, 919, 924, 960, 963, 969, 974, 976–984, 999, 1004, 1081, 1085, 1118
   tests.py89198%400
TOTAL2822104063% 

Tests Skipped Failures Errors Time
279 0 💤 0 ❌ 0 🔥 4.287s ⏱️

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Coverage

Coverage Report
FileStmtsMissCoverMissing
/opt/hostedtoolcache/Python/3.12.4/x64/lib/python3.12/site-packages/edtf
   __init__.py40100% 
   appsettings.py28485%10–13
   convert.py634430%11–19, 21, 38–39, 52, 61, 72–73, 75, 104, 107–109, 113, 117, 136–156
   fields.py1192281%70, 84, 89, 91, 94–95, 97–98, 100, 105, 109–112, 135–136, 157, 167–168, 172–173, 181
   jdutil.py986632%37, 55, 91–92, 105, 152, 154–155, 157, 159, 161, 163, 165, 167, 169, 171, 173, 175, 251–252, 254–255, 257–258, 260, 262, 287, 291, 314, 316–317, 319, 321, 346, 348, 350, 370–372, 374, 376, 378, 381–383, 385, 387, 389, 392–393, 395, 397, 399–400, 402, 405–407, 410–413, 415, 417, 424, 431
   tests.py71710%3–4, 6, 9–13, 16–21, 24–25, 28–29, 32–37, 40–44, 52–53, 56–62, 65–71, 74–79, 82–85, 88–91, 94–97, 100–107
/opt/hostedtoolcache/Python/3.12.4/x64/lib/python3.12/site-packages/edtf/natlang
   __init__.py20100% 
   en.py1477151%33, 43–44, 46–49, 54–55, 58–61, 63, 67–70, 72–73, 75–77, 85–87, 89–93, 103, 105, 118, 125, 156–158, 160–165, 168–170, 172–177, 201–204, 208, 223, 225–226, 228, 245, 247, 255, 257, 259, 261, 266, 269, 275
   tests.py10100%3, 5, 10, 179, 184–185, 190–191, 207, 211
/opt/hostedtoolcache/Python/3.12.4/x64/lib/python3.12/site-packages/edtf/parser
   __init__.py40100% 
   edtf_exceptions.py151126%13–19, 22–24, 29
   grammar.py1281191%148–151, 350, 355–360
   parser_classes.py63335044%69, 71, 78–81, 83–84, 86–87, 110–112, 116, 119, 122, 181, 183, 190, 192, 198–202, 207–213, 220–224, 229–235, 246, 257, 286, 290, 302–304, 309, 317–319, 322, 337–338, 342, 371–375, 378, 383–384, 387, 390, 393, 396–400, 403–407, 427–429, 453, 457, 462, 464, 483, 490, 506, 515–517, 519–521, 524–525, 527, 530–533, 535, 537–539, 541, 545, 558, 565–568, 571, 574–577, 580–583, 585–589, 592–593, 596, 600, 606–607, 610, 613–614, 617, 621–622, 625–626, 629, 635, 640–641, 647, 649, 652–654, 660, 665–666, 669, 675, 677, 681–695, 700–702, 706, 708, 711–713, 717, 719, 722–724, 730–733, 738–739, 744–745, 747, 750, 753–755, 757, 760, 763–766, 768–774, 781–784, 786–792, 801–802, 805, 808, 811–813, 815, 823, 842–844, 846–849, 851–852, 854–855, 857, 859, 868, 871, 874, 881–882, 884–885, 887, 889, 891–892, 894, 896–901, 903, 905, 907–908, 910, 913–915, 918–920, 923–925, 933, 935–936, 939–940, 943–944, 947–948, 950–951, 955, 959–960, 963, 968–969, 973–974, 976–984, 986, 996–997, 999, 1001–1002, 1004, 1007, 1012, 1017, 1023–1024, 1027, 1030, 1033, 1035–1037, 1039, 1044–1045, 1047, 1056–1057, 1060, 1063, 1066–1067, 1069, 1078–1079, 1081–1083, 1085–1088, 1100–1102, 1107, 1110–1111, 1113, 1118
   tests.py89890%3–4, 6, 8–10, 26, 229, 243, 262, 284, 286–289, 291–293, 295–299, 302–303, 305–306, 309–311, 314–315, 318–321, 324, 327–331, 334, 337, 340, 343–348, 351, 354, 357, 362–363, 365–366, 369–370, 372–374, 377, 379–384, 386–393, 396–398, 400, 403–404, 410–414
edtf
   __init__.py40100% 
   appsettings.py28292%12–13
   convert.py631182%11–19, 21, 73
   fields.py1191190%1, 3–8, 10–13, 15, 23, 29, 31, 33–35, 38–39, 51–58, 60, 63, 65–70, 72–76, 78–79, 81, 83–84, 86, 88–89, 91, 93–95, 97–98, 100, 102–105, 107, 109–112, 114, 123–125, 128, 131–132, 135–136, 139–140, 142–144, 147, 151, 153, 155, 157, 160–173, 179, 181–182, 184–185, 190–191, 193–194, 196, 204, 206, 208–209, 212–213, 223–226, 234
   jdutil.py984455%37, 55, 91–92, 287, 291, 314, 316–317, 319, 321, 346, 348, 350, 370–372, 374, 376, 378, 381–383, 385, 387, 389, 392–393, 395, 397, 399–400, 402, 405–407, 410–413, 415, 417, 424, 431
   tests.py710100% 
edtf/natlang
   __init__.py20100% 
   en.py1471192%55, 58, 118, 164–165, 176–177, 203–204, 208, 275
   tests.py10190%211
edtf/parser
   __init__.py40100% 
   edtf_exceptions.py15286%24, 29
   grammar.py128298%357, 359
   parser_classes.py6339884%110–112, 119, 122, 183, 189–193, 200–202, 209–213, 222–224, 229–235, 246, 337–338, 371–375, 378, 393, 396–400, 403–407, 427–429, 545, 581, 589, 593, 640–641, 647, 665–666, 669, 675, 682, 684, 688, 695, 760, 766, 770, 784, 788, 882, 900–901, 903, 908, 914, 919, 924, 960, 963, 969, 974, 976–984, 999, 1004, 1081, 1085, 1118
   tests.py89198%400
TOTAL2822104063% 

Tests Skipped Failures Errors Time
279 0 💤 0 ❌ 0 🔥 6.215s ⏱️

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Coverage

Coverage Report
FileStmtsMissCoverMissing
/opt/hostedtoolcache/Python/3.11.9/x64/lib/python3.11/site-packages/edtf
   __init__.py40100% 
   appsettings.py28485%10–13
   convert.py634430%11–19, 21, 38–39, 52, 61, 72–73, 75, 104, 107–109, 113, 117, 136–156
   fields.py1192281%70, 84, 89, 91, 94–95, 97–98, 100, 105, 109–112, 135–136, 157, 167–168, 172–173, 181
   jdutil.py986632%37, 55, 91–92, 105, 152, 154–155, 157, 159, 161, 163, 165, 167, 169, 171, 173, 175, 251–252, 254–255, 257–258, 260, 262, 287, 291, 314, 316–317, 319, 321, 346, 348, 350, 370–372, 374, 376, 378, 381–383, 385, 387, 389, 392–393, 395, 397, 399–400, 402, 405–407, 410–413, 415, 417, 424, 431
   tests.py71710%3–4, 6, 9–13, 16–21, 24–25, 28–29, 32–37, 40–44, 52–53, 56–62, 65–71, 74–79, 82–85, 88–91, 94–97, 100–107
/opt/hostedtoolcache/Python/3.11.9/x64/lib/python3.11/site-packages/edtf/natlang
   __init__.py20100% 
   en.py1477151%33, 43–44, 46–49, 54–55, 58–61, 63, 67–70, 72–73, 75–77, 85–87, 89–93, 103, 105, 118, 125, 156–158, 160–165, 168–170, 172–177, 201–204, 208, 223, 225–226, 228, 245, 247, 255, 257, 259, 261, 266, 269, 275
   tests.py10100%3, 5, 10, 179, 184–185, 190–191, 207, 211
/opt/hostedtoolcache/Python/3.11.9/x64/lib/python3.11/site-packages/edtf/parser
   __init__.py40100% 
   edtf_exceptions.py151126%13–19, 22–24, 29
   grammar.py1281191%148–151, 350, 355–360
   parser_classes.py63335044%69, 71, 78–81, 83–84, 86–87, 110–112, 116, 119, 122, 181, 183, 190, 192, 198–202, 207–213, 220–224, 229–235, 246, 257, 286, 290, 302–304, 309, 317–319, 322, 337–338, 342, 371–375, 378, 383–384, 387, 390, 393, 396–400, 403–407, 427–429, 453, 457, 462, 464, 483, 490, 506, 515–517, 519–521, 524–525, 527, 530–533, 535, 537–539, 541, 545, 558, 565–568, 571, 574–577, 580–583, 585–589, 592–593, 596, 600, 606–607, 610, 613–614, 617, 621–622, 625–626, 629, 635, 640–641, 647, 649, 652–654, 660, 665–666, 669, 675, 677, 681–695, 700–702, 706, 708, 711–713, 717, 719, 722–724, 730–733, 738–739, 744–745, 747, 750, 753–755, 757, 760, 763–766, 768–774, 781–784, 786–792, 801–802, 805, 808, 811–813, 815, 823, 842–844, 846–849, 851–852, 854–855, 857, 859, 868, 871, 874, 881–882, 884–885, 887, 889, 891–892, 894, 896–901, 903, 905, 907–908, 910, 913–915, 918–920, 923–925, 933, 935–936, 939–940, 943–944, 947–948, 950–951, 955, 959–960, 963, 968–969, 973–974, 976–984, 986, 996–997, 999, 1001–1002, 1004, 1007, 1012, 1017, 1023–1024, 1027, 1030, 1033, 1035–1037, 1039, 1044–1045, 1047, 1056–1057, 1060, 1063, 1066–1067, 1069, 1078–1079, 1081–1083, 1085–1088, 1100–1102, 1107, 1110–1111, 1113, 1118
   tests.py89890%3–4, 6, 8–10, 26, 229, 243, 262, 284, 286–289, 291–293, 295–299, 302–303, 305–306, 309–311, 314–315, 318–321, 324, 327–331, 334, 337, 340, 343–348, 351, 354, 357, 362–363, 365–366, 369–370, 372–374, 377, 379–384, 386–393, 396–398, 400, 403–404, 410–414
edtf
   __init__.py40100% 
   appsettings.py28292%12–13
   convert.py631182%11–19, 21, 73
   fields.py1191190%1, 3–8, 10–13, 15, 23, 29, 31, 33–35, 38–39, 51–58, 60, 63, 65–70, 72–76, 78–79, 81, 83–84, 86, 88–89, 91, 93–95, 97–98, 100, 102–105, 107, 109–112, 114, 123–125, 128, 131–132, 135–136, 139–140, 142–144, 147, 151, 153, 155, 157, 160–173, 179, 181–182, 184–185, 190–191, 193–194, 196, 204, 206, 208–209, 212–213, 223–226, 234
   jdutil.py984455%37, 55, 91–92, 287, 291, 314, 316–317, 319, 321, 346, 348, 350, 370–372, 374, 376, 378, 381–383, 385, 387, 389, 392–393, 395, 397, 399–400, 402, 405–407, 410–413, 415, 417, 424, 431
   tests.py710100% 
edtf/natlang
   __init__.py20100% 
   en.py1471192%55, 58, 118, 164–165, 176–177, 203–204, 208, 275
   tests.py10190%211
edtf/parser
   __init__.py40100% 
   edtf_exceptions.py15286%24, 29
   grammar.py128298%357, 359
   parser_classes.py6339884%110–112, 119, 122, 183, 189–193, 200–202, 209–213, 222–224, 229–235, 246, 337–338, 371–375, 378, 393, 396–400, 403–407, 427–429, 545, 581, 589, 593, 640–641, 647, 665–666, 669, 675, 682, 684, 688, 695, 760, 766, 770, 784, 788, 882, 900–901, 903, 908, 914, 919, 924, 960, 963, 969, 974, 976–984, 999, 1004, 1081, 1085, 1118
   tests.py89198%400
TOTAL2822104063% 

Tests Skipped Failures Errors Time
279 0 💤 0 ❌ 0 🔥 4.505s ⏱️

Please sign in to comment.