diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml deleted file mode 100644 index 6c44397..0000000 --- a/.github/workflows/ci.yml +++ /dev/null @@ -1,126 +0,0 @@ -name: CI - -on: - 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: - runs-on: ubuntu-latest - strategy: - matrix: - python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"] - defaults: - run: - working-directory: . - - steps: - - uses: actions/checkout@v6 - - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v6 - with: - python-version: ${{ matrix.python-version }} - cache: 'pip' - cache-dependency-path: '**/pyproject.toml' - - - name: Install dependencies - 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 --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@v5 - 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 diff --git a/.github/workflows/coverage_readme.yml b/.github/workflows/coverage_readme.yml deleted file mode 100644 index 860ace3..0000000 --- a/.github/workflows/coverage_readme.yml +++ /dev/null @@ -1,67 +0,0 @@ -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@v6 - with: - persist-credentials: false - fetch-depth: 0 - - - name: Set up Python 3.13 - uses: actions/setup-python@v6 - with: - python-version: 3.13 - 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 '//,//c\\n\${{ steps.coverageComment.outputs.coverageHtml }}\n' ./README.md - - - name: Commit & Push changes to Readme - if: ${{ github.ref == 'refs/heads/main' }} - uses: actions-js/push@master - with: - message: Update coverage on Readme - github_token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.gitignore b/.gitignore deleted file mode 100644 index d27f79d..0000000 --- a/.gitignore +++ /dev/null @@ -1,68 +0,0 @@ -# Byte-compiled / optimized / DLL files -__pycache__/ -*.py[cod] - -# C extensions -*.so - -# Distribution / packaging -.Python -env/ -venv/ -build/ -develop-eggs/ -dist/ -downloads/ -eggs/ -.eggs/ -lib/ -lib64/ -parts/ -sdist/ -var/ -*.egg-info/ -.installed.cfg -*.egg - -# PyInstaller -# Usually these files are written by a python script from a template -# before PyInstaller builds the exe, so as to inject date/other infos into it. -*.manifest -*.spec - -# Installer logs -pip-log.txt -pip-delete-this-directory.txt - -# Unit test / coverage reports -htmlcov/ -.tox/ -.coverage -.coverage.* -.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/ - -# PyBuilder -target/ -.idea -.DS_Store diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml deleted file mode 100644 index ff6df15..0000000 --- a/.pre-commit-config.yaml +++ /dev/null @@ -1,22 +0,0 @@ -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 diff --git a/LICENSE b/LICENSE deleted file mode 100644 index f697a39..0000000 --- a/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -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 -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/MANIFEST.in b/MANIFEST.in deleted file mode 100644 index bb37a27..0000000 --- a/MANIFEST.in +++ /dev/null @@ -1 +0,0 @@ -include *.rst diff --git a/README.md b/README.md deleted file mode 100644 index afd6b15..0000000 --- a/README.md +++ /dev/null @@ -1,520 +0,0 @@ -# python-edtf - - -Coverage
Coverage Report
FileStmtsMissCoverMissing
edtf
   __init__.py440%1–2, 29, 40
   appsettings.py29290%1, 3–4, 6–7, 9–13, 15, 30, 70, 72, 81, 85, 88, 91, 94, 97, 100, 103, 106, 109–113, 115
   convert.py63630%1–2, 4, 6–7, 10–19, 21, 24, 33–34, 38–39, 45, 51, 54, 60, 63, 71–73, 76, 83–84, 87, 89, 92, 102, 105–107, 111, 115, 118, 134–153, 155
   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.py98980%12–13, 21, 37, 40, 55, 58, 90–92, 94–95, 99, 105, 108–109, 111, 113, 115, 117, 120, 152, 154–155, 157, 159, 161, 163, 165, 167, 169, 171, 173, 175, 178, 207, 209, 211, 213, 216, 251–252, 254–255, 257–258, 260, 262, 265, 287, 291, 294, 314, 316–317, 319, 321, 324, 346, 348, 350, 353, 369–372, 374, 376, 378, 380–383, 385, 387, 389, 391–393, 395, 397, 399–400, 402, 405–407, 409–413, 415, 417, 419, 424, 426, 431
   util.py33330%7–9, 12, 22–26, 28, 31, 33–41, 44–51, 61–62, 64–65, 67
edtf/natlang
   __init__.py220%1, 3
   en.py1581580%3–5, 7, 9, 14–15, 17–27, 30–33, 35, 38, 42–43, 45–47, 51, 54–55, 59–60, 62, 65, 67, 70–71, 73, 75–77, 82, 85, 88–89, 92–93, 95–99, 101–102, 104–106, 114–116, 118–122, 124–125, 127–130, 132, 135–136, 144–145, 147–148, 150–151, 154, 157, 161, 165–166, 169, 172–176, 178–182, 184–187, 189–193, 197, 200, 208, 216–219, 221, 223, 225–226, 229–231, 233, 237–241, 243–244, 247, 251, 255–257, 259–262, 264–266, 269–276, 280–281, 283–286, 289–290, 292
edtf/parser
   __init__.py440%1–3, 27
   edtf_exceptions.py15150%1, 4, 12–19, 21–24, 29
   grammar.py1331330%6–8, 10–11, 24, 27, 30, 52–60, 62–64, 66–69, 71–72, 79, 82, 85, 87, 89, 91–92, 94–95, 97–98, 103, 105, 107–108, 110–111, 113, 119–120, 122, 125–126, 128, 132, 139, 142, 147–151, 154–157, 159, 162, 165, 168–170, 172, 178, 182–183, 185, 193, 196, 199, 202, 209, 213, 217, 229–230, 236, 242–244, 246, 252–253, 255, 257, 260–261, 264, 271, 274, 283, 286, 293, 295, 303–304, 306–307, 310, 317–318, 320–321, 325, 328–329, 331, 343, 348–349, 355–356, 358–359, 361–371, 374, 376
   parser_classes.py6616610%1–7, 9, 11–12, 19–20, 22–28, 31, 37, 53, 64–65, 67–70, 72, 79–82, 84–85, 87–88, 93, 99–102, 104–107, 109–116, 118–120, 122–123, 125–126, 129, 132, 135–136, 138–139, 141, 145, 147–148, 150–151, 153, 155–156, 158–159, 161, 163–164, 166–167, 169, 174–176, 178–180, 182–189, 191–198, 200–207, 211–218, 222–229, 233–240, 248–249, 257–260, 262, 265–267, 271–274, 276–277, 279, 281–284, 286–287, 289, 291–294, 296–297, 299, 301–309, 311–312, 314–316, 320–323, 326, 328–330, 334–337, 340, 342, 344–345, 347–348, 350, 352, 354–359, 362, 364–367, 369, 372, 374, 378, 388–394, 396–397, 400–403, 405–406, 408–409, 411–412, 414–419, 421–426, 429–432, 434–435, 437–440, 442–446, 452–456, 458–459, 461, 463–465, 467–474, 476–483, 486–492, 496–499, 501–502, 504–508, 513–514, 517–518, 521–522, 526, 529–533, 535–537, 539–542, 544–546, 548–551, 553–557, 559–560, 562–564, 567–568, 577, 584–587, 590, 592–596, 598–602, 604–608, 611–612, 615, 617, 619, 625–626, 628–629, 632–633, 635–636, 640–641, 643–645, 648, 654, 659–660, 666, 668, 670–673, 679, 684–685, 688, 694–695, 697–713, 716–720, 724, 726, 729–731, 735, 737, 740, 743–744, 749–754, 757–760, 764–767, 769–770, 772–776, 778–779, 781–785, 787–789, 791–794, 800–804, 806–812, 819–822, 825, 827–828, 830–833, 835, 841–842, 857–859, 861–864, 866–867, 869–870, 872, 874, 884, 887, 890, 896–898, 900–901, 903, 905–906, 908, 910–911, 913, 915–920, 922, 924–927, 929, 931–932, 934, 936–937, 939, 941–944, 946–949, 951–954, 956, 962, 964–965, 968–969, 972–973, 976–977, 979–980, 984, 988–989, 992, 997–998, 1002–1003, 1005–1013, 1015, 1018–1019, 1022, 1024–1026, 1028, 1030–1031, 1033, 1035–1036, 1039–1041, 1044–1046, 1049–1051, 1053–1056, 1058–1060, 1062–1063, 1065–1067, 1069, 1074–1075, 1077, 1083–1085, 1087–1090, 1092–1094, 1096–1099, 1102–1103, 1108–1109, 1111, 1113–1114, 1116, 1118–1120, 1126–1127, 1130–1134, 1138–1139, 1141–1144, 1146, 1148–1149
TOTAL131913190 
- - -An implementation of EDTF format in Python, together with utility functions for parsing natural language date texts, and converting EDTF dates to related Python `date` or `struct_time` objects. - -See for the final draft specification. - -## To install - -```shell -pip install edtf -``` - -## To use - -```python ->>> from edtf import parse_edtf - -# Parse an EDTF string to an EDTFObject ->>> ->>> e = parse_edtf("1979-08~") # approx August 1979 ->>> e -UncertainOrApproximate: '1979-08~' - -# normalised string representation (some different EDTF strings have identical meanings) ->>> ->>> str(e) -'1979-08~' - -# Derive Python date objects - -# lower and upper bounds that strictly adhere to the given range ->>> ->>> e.lower_strict()[:3], e.upper_strict()[:3] -((1979, 8, 1), (1979, 8, 31)) - -# lower and upper bounds that are padded if there's indicated uncertainty ->>> ->>> e.lower_fuzzy()[:3], e.upper_fuzzy()[:3] -((1979, 7, 1), (1979, 9, 30)) - -# Date intervals ->>> ->>> interval = parse_edtf("1979-08~/..") ->>> interval -Level1Interval: '1979-08~/..' - -# Intervals have lower and upper EDTF objects ->>> ->>> interval.lower, interval.upper -(UncertainOrApproximate: '1979-08~', UnspecifiedIntervalSection: '..') ->>> interval.lower.lower_strict()[:3], interval.lower.upper_strict()[:3] -((1979, 8, 1), (1979, 8, 31)) ->>> interval.upper.upper_strict() # '..' is interpreted to mean open interval and is returning -/+ math.inf -math.inf - -# Date collections ->>> ->>> coll = parse_edtf('{1667,1668, 1670..1672}') ->>> coll -MultipleDates: '{1667, 1668, 1670..1672}' ->>> coll.objects -(Date: '1667', Date: '1668', Consecutives: '1670..1672') -``` - -The object returned by `parse_edtf()` is an instance of an `edtf.parser.parser_classes.EDTFObject` subclass, depending on the type of date that was parsed. These classes are: - -```text -# Level 0 -Date -DateAndTime -Interval - -# Level 1 -UncertainOrApproximate -Unspecified -Level1Interval -UnspecifiedIntervalSection -LongYear -Season - -# Level 2 -PartialUncertainOrApproximate -PartialUnspecified -OneOfASet -MultipleDates -Level2Interval -Level2Season -ExponentialYear -``` - -All of these implement `upper_strict()/lower_strict()/fuzzy()` methods to derive `struct_time` objects, except of UnspecifiedIntervalSection, that can also return math.inf value - -The `*Interval` instances have `upper` and `lower` properties that are themselves `EDTFObject` instances. - -`OneOfASet` and `MultipleDates` instances have an `objects` property that is a list of all of the EDTF dates parsed in the set or list. - -## EDTF Specification Inclusions - -The library includes implementation of levels 0, 1 and 2 of the EDTF spec. - -Test coverage includes every example given in the spec table of features. - -### Level 0 ISO 8601 Features - -* Date: - -```python ->>> parse_edtf('1979-08') # August 1979 -Date: '1979-08' -``` - -* Date and Time: - -```python ->>> parse_edtf('2004-01-01T10:10:10+05:00') -DateAndTime: '2004-01-01T10:10:10+05:00' -``` - -* Interval (start/end): - -```python ->>> parse_edtf('1979-08-28/1979-09-25') # From August 28 to September 25 1979 -Interval: '1979-08-28/1979-09-25' -``` - -### Level 1 Extensions - -* Uncertain/Approximate dates: - -```python ->>> parse_edtf('1979-08-28~') # Approximately August 28th 1979 -UncertainOrApproximate: '1979-08-28~' -``` - -* Unspecified dates: - -```python ->>> parse_edtf('1979-08-XX') # An unknown day in August 1979 -Unspecified: '1979-08-XX' ->>> parse_edtf('1979-XX') # Some month in 1979 -Unspecified: '1979-XX' -``` - -* Extended intervals: - -```python ->>> parse_edtf('1984-06-02?/2004-08-08~') -Level1Interval: '1984-06-02?/2004-08-08~' -``` - -* Years exceeding four digits: - -```python ->>> parse_edtf('Y-12000') # 12000 years BCE -LongYear: 'Y-12000' -``` - -* Season: - -```python ->>> parse_edtf('1979-22') # Summer 1979 -Season: '1979-22' -``` - -### Level 2 Extensions - -* Partial uncertain/approximate: - -```python ->>> parse_edtf('2004-06~-11') # year certain, month/day approximate. -PartialUncertainOrApproximate: '2004-06~-11' -``` - -* Partial unspecified: - -```python ->>> parse_edtf('1979-XX-28') # The 28th day of an uncertain month in 1979 -PartialUnspecified: '1979-XX-28' -``` - -* One of a set: - -```python ->>> parse_edtf("[..1760-12-03,1762]") -OneOfASet: '[..1760-12-03, 1762]' -``` - -* Multiple dates: - -```python ->>> parse_edtf('{1667,1668, 1670..1672}') -MultipleDates: '{1667, 1668, 1670..1672}' -``` - -* Level 2 Extended intervals: - -```python ->>> parse_edtf('2004-06-~01/2004-06-~20') -Level2Interval: '2004-06-~01/2004-06-~20' -``` - -* Year requiring more than 4 digits - exponential form: - -```python ->>> e = parse_edtf('Y-17E7') -ExponentialYear: 'Y-17E7' ->>> e.estimated() --170000000 -``` - -* Significant digits: - -```python -# '1950S2': some year between 1900 and 1999, estimated to be 1950 ->>> d = parse_edtf('1950S2') -Date: '1950S2' ->>> d.lower_fuzzy()[:3] -(1900, 1, 1) ->>> d.upper_fuzzy()[:3] -(1999, 12, 31) -# 'Y171010000S3': some year between 171000000 and 171999999 estimated to be 171010000, with 3 significant digits. ->>> l = parse_edtf('Y171010000S3') -LongYear: 'Y171010000S3' ->>> l.estimated() -171010000 ->>> l.lower_fuzzy()[:3] -(171000000, 1, 1) ->>> l.upper_fuzzy()[:3] -(171999999, 12, 31) -# 'Y3388E2S3': some year in exponential notation between 338000 and 338999, estimated to be 338800 ->>> e = parse_edtf('Y3388E2S3') -ExponentialYear: 'Y3388E2S3S3' ->>> e.estimated() -338800 ->>> e.lower_fuzzy()[:3] -(338000, 1, 1) ->>> e.upper_fuzzy()[:3] -(338999, 12, 31) -``` - -### Natural language representation - -The library includes a basic English natural language parser (it's not yet smart enough to work with occasions such as 'Easter', or in other languages): - -```python ->>> from edtf import text_to_edtf ->>> text_to_edtf("circa August 1979") -'1979-08~' -``` - -Note that the result is a string, not an `EDTFObject`. - -The parser can parse strings such as: - -```text -'January 12, 1940' => '1940-01-12' -'90' => '1990' #implied century -'January 2008' => '2008-01' -'the year 1800' => '1800' -'10/7/2008' => '2008-10-07' # in a full-specced date, assume US ordering - -# uncertain/approximate -'1860?' => '1860?' -'1862 (uncertain)' => '1862?' -'circa Feb 1812' => '1812-02~' -'c.1860' => '1860~' #with or without . -'ca1860' => '1860~' -'approx 1860' => '1860~' -'ca. 1860s' => '186X~' -'circa 1840s' => '184X~' -'ca. 1860s?' => '186X?~' -'c1800s?' => '180X?~' # with uncertainty indicators, use the decade - -# unspecified parts -'January 12' => 'XXXX-01-12' -'January' => 'XXXX-01' -'7/2008' => '2008-07' -'month in 1872' => '1872-XX' -'day in January 1872' => '1872-01-XX' -'day in 1872' => '1872-XX-XX' - -#seasons -'Autumn 1872' => '1872-23' -'Fall 1872' => '1872-23' - -# before/after -'earlier than 1928' => '/1928' -'later than 1928' => '1928/' -'before January 1928' => '/1928-01' -'after about the 1920s' => '192X~/' - -#centuries -'1st century' => '00XX' -'10c' => '09XX' -'19th century?' => '18XX?' - -# just showing off now... -'a day in about Spring 1849?' => '1849-21-XX?~' - -# simple ranges, which aren't as accurate as they could be. The parser is -limited to only picking the first year range it finds. -'1851-1852' => '1851/1852' -'1851-1852; printed 1853-1854' => '1851/1852' -'1851-52' => '1851/1852' -'1856-ca. 1865' => '1856/1865~' -'1860s-1870s' => '186X/187X' -'1920s - early 1930s' => '192X/193X' -'1938, printed 1940s-1950s' => '1938' -``` - -Generating natural text from an EDTF representation is a future goal. - -### What assumptions does the natural text parser make when interpreting an ambiguous date? - -* "1800s" is ambiguously a century or decade. If the given date is either uncertain or approximate, the decade interpretation is used. If the date is certain and precise, the century interpretation is used. - -* If the century isn't specified (`EDTF(natural_text="the '70s")`), we imply the century to be "19" if the year is greater than the current year, otherwise we imply the century to be the current century. - -* US-ordered dates (mm/dd/yyyy) are assumed by default in natural language. To change this, set `DAY_FIRST` to True in settings. - -* If a natural language groups dates with a '/', it's interpreted as "or" rather than "and". The resulting EDTF text is a list bracketed by `[]` ("one of these dates") rather than `{}` (all of these dates). - -## Converting to and from Python dates - -Since EDTF dates are often regions, and often imprecise, we need to use a few different Python dates, depending on the circumstance. Generally, Python dates are used for sorting and filtering, and are not displayed directly to users. - -### `struct_time` date representation - -Because Python's `datetime` module does not support dates outside the range 1 AD to 9999 AD we return dates as `time.struct_time` objects by default instead of the `datetime.date` or `datetime.datetime` objects you might expect. - -The `struct_time` representation is more difficult to work with, but can be sorted as-is which is the primary use-case, and can be converted relatively easily to `date` or `datetime` objects (provided the year is within 1 to 9999 AD) or to date objects in more flexible libraries like [astropy.time](http://docs.astropy.org/en/stable/time/index.html) for years outside these bounds. - -If you are sure you are working with dates within the range supported by Python's `datetime` module, you can get these more convenient objects using the `edtf.struct_time_to_date` and `edtf.struct_time_to_datetime` functions. - -> [!NOTE] -> This library previously did return `date` and `datetime` objects from methods by default before we switched to `struct_time`. See ticket . - -### `lower_strict` and `upper_strict` - -These dates indicate the earliest and latest dates that are __strictly__ in the date range, ignoring uncertainty or approximation. One way to think about this is 'if you had to pick a single date to sort by, what would it be?'. - -In an ascending sort (most recent last), sort by `lower_strict` to get a natural sort order. In a descending sort (most recent first), sort by `upper_strict`: - -```python ->>> e = parse_edtf('1912-04~') - ->>> e.lower_strict() # Returns struct_time ->>> time.struct_time(tm_year=1912, tm_mon=4, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=0, tm_isdst=-1) - ->>> e.lower_strict()[:3] # Show only interesting parts of struct_time -(1912, 4, 01) - ->>> from edtf import struct_time_to_date ->>> struct_time_to_date(e.lower_strict()) # Convert to date -datetime.date(1912, 4, 01) - ->>> e.upper_strict()[:3] -(1912, 4, 30) - ->>> struct_time_to_date(e.upper_strict()) -datetime.date(1912, 4, 30) -``` - -### `lower_fuzzy` and `upper_fuzzy` - -These dates indicate the earliest and latest dates that are __possible__ in the date range, for a fairly arbitrary definition of 'possibly'. - -These values are useful for filtering results - i.e. testing which EDTF dates might conceivably fall into, or overlap, a desired date range. - -The fuzzy dates are derived from the strict dates, plus or minus a level of padding that depends on how precise the date specification is. For the case of approximate or uncertain dates, we (arbitrarily) pad the ostensible range by 100% of the uncertain timescale, or by a 12 weeks in the case of seasons. That is, if a date is approximate at the month scale, it is padded by a month. If it is approximate at the year scale, it is padded by a year: - -```python ->>> e = parse_edtf('1912-04~') ->>> e.lower_fuzzy()[:3] # padding is 100% of a month -(1912, 3, 1) ->>> e.upper_fuzzy()[:3] -(1912, 5, 30) - ->>> e = parse_edtf('1912~') ->>> e.lower_fuzzy()[:3] # padding is 100% of a year -(1911, 1, 1) ->>> e.upper_fuzzy()[:3] -(1913, 12, 31) -``` - -One can interpret uncertain or approximate dates as 'plus or minus a [level of precision]'. - -If a date is both uncertain __and__ approximate, the padding is applied twice, i.e. it gets 100% * 2 padding, or 'plus or minus two [levels of precision]'. - -### Qualification properties - -EDTF objects support properties that provide an overview of how the object is qualified: - -* `.is_uncertain (?)` -* `.is_approximate (~)` -* `.is_uncertain_and_approximate (%)` - -These properties represent whether the any part of the date object is uncertain, approximate, or uncertain and approximate. For ranges, the properties are true if any part of the range (lower or upper section) is qualified as such. A date is not necessarily uncertain and approximate if it is separately both uncertain and approximate - it must have the "%" qualifier to be considered uncertain and approximate. - -```python ->>> parse_edtf("2006-06-11") -Date: '2006-06-11' ->>> parse_edtf("2006-06-11").is_uncertain -False ->>> parse_edtf("2006-06-11").is_approximate -False - ->>> parse_edtf("1984?") -UncertainOrApproximate: '1984?' ->>> parse_edtf("1984?").is_approximate -False ->>> parse_edtf("1984?").is_uncertain -True ->>> parse_edtf("1984?").is_uncertain_and_approximate -False - ->>> parse_edtf("1984%").is_uncertain -False ->>> parse_edtf("1984%").is_uncertain_and_approximate -True - ->>> parse_edtf("1984~/2004-06") -Level1Interval: '1984~/2004-06' ->>> parse_edtf("1984~/2004-06").is_approximate -True ->>> parse_edtf("1984~/2004-06").is_uncertain -False - ->>> parse_edtf("2004?-~06-~04") -PartialUncertainOrApproximate: '2004?-~06-~04' ->>> parse_edtf("2004?-~06-~04").is_approximate -True ->>> parse_edtf("2004?-~06-~04").is_uncertain -True ->>> parse_edtf("2004?-~06-~04").is_uncertain_and_approximate -False -``` - -### Seasons - -> [!IMPORTANT] -> Seasons are interpreted as Northern Hemisphere by default. To change this, override the month mapping in [`appsettings.py`](edtf/appsettings.py). - -### Comparisons - -Two EDTF dates are considered equal if their `str()` representations are the same. An EDTF date is considered greater than another if its `lower_strict` value is later. - -## Django ORM field - -The `edtf.fields.EDTFField` implements a simple Django field that stores an EDTF object in the database. - -To store a natural language value on your model, define another field, and set the `natural_text_field` parameter of your `EDTFField`. - -When your model is saved, the `natural_text_field` value will be parsed to set the `date_edtf` value, and the underlying EDTF object will set the `_earliest` and `_latest` fields on the model to a float value representing the Julian Date. - -> [!WARNING] -> The conversion to and from Julian Date numerical values can be inaccurate, especially for ancient dates back to thousands of years BC. Ideally Julian Date values should be used for range and ordering operations only where complete accuracy is not required. They should __not__ be used for definitive storage or for display after roundtrip conversions. - -Example usage: - -```python -from django.db import models -from edtf.fields import EDTFField - -class MyModel(models.Model): - date_display = models.CharField( - "Date of creation (display)", - blank=True, - max_length=255, - ) - date_edtf = EDTFField( - "Date of creation (EDTF)", - natural_text_field='date_display', - lower_fuzzy_field='date_earliest', - upper_fuzzy_field='date_latest', - lower_strict_field='date_sort_ascending', - upper_strict_field='date_sort_descending', - blank=True, - null=True, - ) - # use for filtering - date_earliest = models.FloatField(blank=True, null=True) - date_latest = models.FloatField(blank=True, null=True) - # use for sorting - date_sort_ascending = models.FloatField(blank=True, null=True) - date_sort_descending = models.FloatField(blank=True, null=True) -``` - -Since the `EDTFField` and the `_earliest` and `_latest` field values are set automatically, you may want to make them readonly, or not visible in your model admin. - -## To develop - -### Setup - -* Clone the repository: `git clone https://github.com/ixc/python-edtf.git` -* Set up a virtual environment: `python3 -m venv venv` -* Install the dependencies: `pip install -r dev-requirements.txt` -* Install precommit hooks: `pre-commit install` - -### Running tests - -* From `python-edtf`, run the unit tests: `pytest` -* From `python-edtf`, run `pytest -m benchmark` to run the benchmarks (published [here]( https://ixc.github.io/python-edtf/dev/bench/)) -* From `python-edtf/edtf_django_tests`, run the integration tests: `python manage.py test edtf_integration` -* To run CI locally, use `act`, e.g. `act pull_request` or `act --pull=false --container-architecture linux/amd64`. Some steps may require a GitHub PAT: `act pull_request --container-architecture linux/amd64 --pull=false -s GITHUB_TOKEN=` - -### Linting and formatting - -* Check linting: `ruff check --output-format=github --config pyproject.toml` -* Check formatting: `ruff format --check --config pyproject.toml` -* Fix formatting: `ruff format --config pyproject.toml` -* Linting and formatting checks and attempted fixes are also run as precommit hooks if you installed them. - -### Coverage and benchmarks - -Coverage reports are generated and added as comments to commits, and also visible in the actions log. Benchmarks are run on pull requests and are published [here]( https://ixc.github.io/python-edtf/dev/bench/) and also visible in the actions log. diff --git a/changelog.rst b/changelog.rst deleted file mode 100644 index 6a302ae..0000000 --- a/changelog.rst +++ /dev/null @@ -1,127 +0,0 @@ -Changelog -========= - -In development --------------- - -5.0.0.develop0 (2024-05-05) --------------------------- - -* Breaking Changes: Rename project back to edtf from edtf2, after the merge of work form https://github.com/saw-leipzig/python-edtf/ -* Breaking Changes: Drop support for Python 2 and Python 3 versions below 3.8. `v5` will support Python 3.8 to 3.12 at release. -* Switch from `tox` and `nose` to `pytest` for testing. -* Consolidate config and packaging from `setup.py` and `setup.cfg` to `pyproject.toml`. - -5.0.0 (2023-10-04) ------------------- - -* Breaking Changes: Implementation of the newer specifications from `https://www.loc.gov/standards/datetime/`:: - - Differences - This specification differs from the earlier draft as follows: - - - the unspecified date character (formerly lower case ‘u’) is superseded by the character (upper case) 'X'; - - Masked precision is eliminated; - - the uncertain and approximate qualifiers, '?' and '~', when applied together, are combined into a single qualifier character '%'; - - “qualification from the left” is introduced and replaces the grouping mechanism using parentheses; - - the extended interval syntax keywords 'unknown' and 'open' have been replaced with null and the double-dot notation ['..'] respectively; - - the year prefix 'y' and the exponential indicator 'e', both previously lowercase, are now 'Y' and 'E' (uppercase); and - - the significant digit indicator 'p' is now 'S' (uppercase). - -* Renaming of the project to edtf2: As this project seems to have no longer support from the creator `The Interaction Consortium` we decided to fork it and release it under a new name by our own -* Author: https://github.com/muellersSAW - - -4.0 (2018-05-31) ----------------- - -* Remove 1 AD - 9999 AD restriction on date ranges imposed by Python's - ``datetime`` module (#26). - - **WARNING**: This involves a breaking API change where the following methods - return a ``time.struct_time`` object instead of ``datetime.date`` or - ``datetime.datetime`` objects:: - - lower_strict() - upper_strict() - lower_fuzzy() - upper_fuzzy() - -* Add `jdutil` library code by Matt Davis at - `https://gist.github.com/jiffyclub/1294443`_ to convert dates to numerical - float representations. - -* Update `EDTFField` to store derived upper/lower strict/fuzzy date values as - numerical values to Django's `FloatField` fields, when available, to permit - storage of arbitrary date/time values. - - The older approach where `DateField` fields are used instead is still - supported but not recommended, since this usage will break for date/time - values outside the range 1 AD to 9999 AD. - - -3.0 (2018-02-13) ----------------- - -* Python 3 compatibility. - PR: https://github.com/ixc/python-edtf/pull/25 - Author: https://github.com/ahankinson - - -2.7 (2018-01-09) ----------------- - -* Fix lower/upper fuzzy values for outlier date values - - -2.6 (2017-08-07) ----------------- - -* EDTF fields are now cleared when their source fields go. -* Improved clarity of parser errors. -* Improved parser accuracy and resilience (#20, #22). - - -2.5 (2017-06-08) ----------------- - -* Order-of-magnitude performance improvement in parsing. -* EDTFFields are now serialised EDTF objects, rather than unparsed EDTF text - strings. - -2.0 (2017-05-22) ----------------- - -The Interaction Consortium is pleased to announce an all-new version 2.0 of -``python-edtf``. - -This version features a full implementation of the EDTF grammar, meaning -all valid EDTF strings can be parsed into Python objects. - -We've also included a Django EDTF field that allows EDTF dates to be used in -Django models. The field can parse natural text equivalents from another field, -and it can generate python date values to store in other fields. - -Features -~~~~~~~~ - -* Complete EDTF spec parser implemented using ``pyparsing``. -* Expanded documentation. -* Django field that stores and displays EDTF, deriving it from a specified - display field, and storing derived python dates in specified ``DateField``s. -* Settings are broken out into ``appsettings.py``. These settings can be - overridden in a Django settings file. -* Instituted changelog - -Backwards-incompatible changes -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -The API is completely revised since 0.9.3, so almost all code needs -updating. In brief:: - - EDTF(str) => parse_edtf(str) - EDTF.from_natural_language(str) => parse_edtf(text_to_edtf(str)) - date_earliest() => lower_fuzzy() - date_latest() => upper_fuzzy() - sort_date_earliest() => lower_strict() - sort_date_latest() => upper_strict() diff --git a/combine_junit.py b/combine_junit.py deleted file mode 100644 index 5e3a05b..0000000 --- a/combine_junit.py +++ /dev/null @@ -1,23 +0,0 @@ -import sys - -from junitparser import JUnitXml - - -def combine_junit_xml(output_file, *input_files): - combined_xml = JUnitXml() - for input_file in input_files: - xml = JUnitXml.fromfile(input_file) - combined_xml.extend(xml) - combined_xml.write(output_file) - - -if __name__ == "__main__": - if len(sys.argv) < 3: - print( - "Usage: python combine_junit_xml.py ... " - ) - sys.exit(1) - - output_file = sys.argv[1] - input_files = sys.argv[2:] - combine_junit_xml(output_file, *input_files) diff --git a/dev-requirements.txt b/dev-requirements.txt deleted file mode 100644 index c27d485..0000000 --- a/dev-requirements.txt +++ /dev/null @@ -1,8 +0,0 @@ --r requirements.txt # Include all main requirements -django>=4.2,<5.0 -pytest -pytest-benchmark -pytest-cov -pytest-django -ruff -pre-commit diff --git a/dev/bench/data.js b/dev/bench/data.js new file mode 100644 index 0000000..fb798c9 --- /dev/null +++ b/dev/bench/data.js @@ -0,0 +1,10972 @@ +window.BENCHMARK_DATA = { + "lastUpdate": 1754611739584, + "repoUrl": "https://github.com/ixc/python-edtf", + "entries": { + "Benchmark": [ + { + "commit": { + "author": { + "email": "alastair@interaction.net.au", + "name": "Alastair Weakley", + "username": "aweakley" + }, + "committer": { + "email": "alastair@interaction.net.au", + "name": "Alastair Weakley", + "username": "aweakley" + }, + "distinct": true, + "id": "34363577027222d6ce94a92e0dc10a8935f01d44", + "message": "Add gh-pages push", + "timestamp": "2024-05-27T14:45:34+10:00", + "tree_id": "5a171c15d8a0ac83a2bb355d98e532cdebdd5828", + "url": "https://github.com/ixc/python-edtf/commit/34363577027222d6ce94a92e0dc10a8935f01d44" + }, + "date": 1716785185999, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 113230.81812839965, + "unit": "iter/sec", + "range": "stddev: 6.188743118617212e-7", + "extra": "mean: 8.831517925323443 usec\nrounds: 2873" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 11519.636119614439, + "unit": "iter/sec", + "range": "stddev: 0.0000060626928006287845", + "extra": "mean: 86.80829755527641 usec\nrounds: 941" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 14101.65652992168, + "unit": "iter/sec", + "range": "stddev: 0.000004066677037842363", + "extra": "mean: 70.91365456803918 usec\nrounds: 8844" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 9449.149112026445, + "unit": "iter/sec", + "range": "stddev: 0.000005506418711286119", + "extra": "mean: 105.82963483211898 usec\nrounds: 6649" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 16547.952841154187, + "unit": "iter/sec", + "range": "stddev: 0.0000036487599747274776", + "extra": "mean: 60.430435691902304 usec\nrounds: 9851" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 12028.537832676446, + "unit": "iter/sec", + "range": "stddev: 0.000004531641406806231", + "extra": "mean: 83.13562412244514 usec\nrounds: 7122" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 7431.289061632621, + "unit": "iter/sec", + "range": "stddev: 0.000015059939877831131", + "extra": "mean: 134.56615557628498 usec\nrounds: 5380" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 9909.53796266037, + "unit": "iter/sec", + "range": "stddev: 0.0000188347733177491", + "extra": "mean: 100.9128784579109 usec\nrounds: 6796" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 67261.73679123442, + "unit": "iter/sec", + "range": "stddev: 0.000001344006872902158", + "extra": "mean: 14.867293764711714 usec\nrounds: 3833" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 57785.47807420189, + "unit": "iter/sec", + "range": "stddev: 0.0000014193998172571164", + "extra": "mean: 17.305385943435606 usec\nrounds: 2433" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 33113.88512626584, + "unit": "iter/sec", + "range": "stddev: 0.000002436796896063372", + "extra": "mean: 30.19881225615543 usec\nrounds: 13838" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 115.65615920637471, + "unit": "iter/sec", + "range": "stddev: 0.0001310275972812665", + "extra": "mean: 8.646318595239 msec\nrounds: 42" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 135.6012670278008, + "unit": "iter/sec", + "range": "stddev: 0.0012601585598819894", + "extra": "mean: 7.374562361537384 msec\nrounds: 130" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 167.88823267582214, + "unit": "iter/sec", + "range": "stddev: 0.00009813490887405741", + "extra": "mean: 5.956343598725676 msec\nrounds: 157" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 130.78697685009283, + "unit": "iter/sec", + "range": "stddev: 0.00009978614156797186", + "extra": "mean: 7.646021217740918 msec\nrounds: 124" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 107.36932075594105, + "unit": "iter/sec", + "range": "stddev: 0.00009675899942091621", + "extra": "mean: 9.313647445652366 msec\nrounds: 92" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 47.138279510861146, + "unit": "iter/sec", + "range": "stddev: 0.00015248339511969385", + "extra": "mean: 21.21418113636476 msec\nrounds: 44" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 117.07968632044525, + "unit": "iter/sec", + "range": "stddev: 0.0001148277061189289", + "extra": "mean: 8.541191315315073 msec\nrounds: 111" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 102.99942942580952, + "unit": "iter/sec", + "range": "stddev: 0.00014159087605623922", + "extra": "mean: 9.70879164646538 msec\nrounds: 99" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 21.823057335195127, + "unit": "iter/sec", + "range": "stddev: 0.00046399279771699114", + "extra": "mean: 45.82309365000157 msec\nrounds: 20" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 406.57927002741746, + "unit": "iter/sec", + "range": "stddev: 0.00009264823618322818", + "extra": "mean: 2.459544973683891 msec\nrounds: 380" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 123.70436360863408, + "unit": "iter/sec", + "range": "stddev: 0.00014486120359670884", + "extra": "mean: 8.08378921186418 msec\nrounds: 118" + } + ] + }, + { + "commit": { + "author": { + "email": "alastair@interaction.net.au", + "name": "Alastair Weakley", + "username": "aweakley" + }, + "committer": { + "email": "alastair@interaction.net.au", + "name": "Alastair Weakley", + "username": "aweakley" + }, + "distinct": true, + "id": "34363577027222d6ce94a92e0dc10a8935f01d44", + "message": "Add gh-pages push", + "timestamp": "2024-05-27T14:45:34+10:00", + "tree_id": "5a171c15d8a0ac83a2bb355d98e532cdebdd5828", + "url": "https://github.com/ixc/python-edtf/commit/34363577027222d6ce94a92e0dc10a8935f01d44" + }, + "date": 1716785186405, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 89183.17644875369, + "unit": "iter/sec", + "range": "stddev: 6.426430104416597e-7", + "extra": "mean: 11.212877134675939 usec\nrounds: 2401" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 8872.734841022837, + "unit": "iter/sec", + "range": "stddev: 0.0000054035306302432615", + "extra": "mean: 112.7048218973623 usec\nrounds: 685" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 10964.293016755024, + "unit": "iter/sec", + "range": "stddev: 0.000004325579758813584", + "extra": "mean: 91.20515098163241 usec\nrounds: 7385" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 7422.882311714975, + "unit": "iter/sec", + "range": "stddev: 0.000005818541149612707", + "extra": "mean: 134.71855783322545 usec\nrounds: 5464" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 13020.390010019159, + "unit": "iter/sec", + "range": "stddev: 0.000004243636566273673", + "extra": "mean: 76.80261491633526 usec\nrounds: 7884" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 9307.30378126688, + "unit": "iter/sec", + "range": "stddev: 0.000004954773081514922", + "extra": "mean: 107.4425014484574 usec\nrounds: 5869" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 5968.503679147788, + "unit": "iter/sec", + "range": "stddev: 0.00001174308885318635", + "extra": "mean: 167.54618138105678 usec\nrounds: 4576" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 8064.38276741939, + "unit": "iter/sec", + "range": "stddev: 0.0000060336604310221335", + "extra": "mean: 124.00205060206993 usec\nrounds: 5731" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 51413.33012590799, + "unit": "iter/sec", + "range": "stddev: 0.0000012266506846053155", + "extra": "mean: 19.450208682282653 usec\nrounds: 2626" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 45992.81813184618, + "unit": "iter/sec", + "range": "stddev: 0.0000013594623328987488", + "extra": "mean: 21.742525042351854 usec\nrounds: 1777" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 25144.501030183583, + "unit": "iter/sec", + "range": "stddev: 0.0000027808823175415747", + "extra": "mean: 39.770127026962875 usec\nrounds: 9683" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 103.67421560193173, + "unit": "iter/sec", + "range": "stddev: 0.00023935065932082937", + "extra": "mean: 9.645599864865215 msec\nrounds: 37" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 123.1869525843965, + "unit": "iter/sec", + "range": "stddev: 0.0011633242606391334", + "extra": "mean: 8.117742821139203 msec\nrounds: 123" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 154.44295390883704, + "unit": "iter/sec", + "range": "stddev: 0.00014238519416943628", + "extra": "mean: 6.47488263265328 msec\nrounds: 147" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 118.41660491452689, + "unit": "iter/sec", + "range": "stddev: 0.0001943401801984492", + "extra": "mean: 8.444761617019843 msec\nrounds: 94" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 96.47779830354294, + "unit": "iter/sec", + "range": "stddev: 0.00013314812192283105", + "extra": "mean: 10.365078987952787 msec\nrounds: 83" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 42.34915779523627, + "unit": "iter/sec", + "range": "stddev: 0.00026797546972321935", + "extra": "mean: 23.613220476192964 msec\nrounds: 42" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 107.25233835141515, + "unit": "iter/sec", + "range": "stddev: 0.0001497481299252724", + "extra": "mean: 9.323806038834075 msec\nrounds: 103" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 91.12718424353311, + "unit": "iter/sec", + "range": "stddev: 0.0001795802401202798", + "extra": "mean: 10.973673863635984 msec\nrounds: 88" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 22.79490064752347, + "unit": "iter/sec", + "range": "stddev: 0.0003482237458128558", + "extra": "mean: 43.869460782609025 msec\nrounds: 23" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 390.9344057408909, + "unit": "iter/sec", + "range": "stddev: 0.00008196083332854119", + "extra": "mean: 2.557973883380309 msec\nrounds: 343" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 114.53102188562781, + "unit": "iter/sec", + "range": "stddev: 0.00014574274929511272", + "extra": "mean: 8.73125886363446 msec\nrounds: 110" + } + ] + }, + { + "commit": { + "author": { + "email": "alastair@interaction.net.au", + "name": "Alastair Weakley", + "username": "aweakley" + }, + "committer": { + "email": "alastair@interaction.net.au", + "name": "Alastair Weakley", + "username": "aweakley" + }, + "distinct": true, + "id": "34363577027222d6ce94a92e0dc10a8935f01d44", + "message": "Add gh-pages push", + "timestamp": "2024-05-27T14:45:34+10:00", + "tree_id": "5a171c15d8a0ac83a2bb355d98e532cdebdd5828", + "url": "https://github.com/ixc/python-edtf/commit/34363577027222d6ce94a92e0dc10a8935f01d44" + }, + "date": 1716785192271, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 82692.09154781378, + "unit": "iter/sec", + "range": "stddev: 0.0000012727313801923515", + "extra": "mean: 12.093054865129218 usec\nrounds: 2333" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 8555.84101586605, + "unit": "iter/sec", + "range": "stddev: 0.0000066537216535334436", + "extra": "mean: 116.87921715066801 usec\nrounds: 723" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 10584.558445464816, + "unit": "iter/sec", + "range": "stddev: 0.00000572741888198539", + "extra": "mean: 94.47725241939325 usec\nrounds: 7440" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 6891.84403201009, + "unit": "iter/sec", + "range": "stddev: 0.00000555170714740004", + "extra": "mean: 145.09904683788062 usec\nrounds: 5060" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 12484.010681029371, + "unit": "iter/sec", + "range": "stddev: 0.000003977736187457419", + "extra": "mean: 80.10246270612329 usec\nrounds: 8366" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 8811.279934806655, + "unit": "iter/sec", + "range": "stddev: 0.000007994773304120979", + "extra": "mean: 113.49088979113714 usec\nrounds: 6034" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 5627.07948256166, + "unit": "iter/sec", + "range": "stddev: 0.000006027324648000194", + "extra": "mean: 177.71208014726 usec\nrounds: 4342" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 7600.118979733544, + "unit": "iter/sec", + "range": "stddev: 0.000006506381614446002", + "extra": "mean: 131.5768875022348 usec\nrounds: 5529" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 48669.96422833555, + "unit": "iter/sec", + "range": "stddev: 0.0000014015193063595295", + "extra": "mean: 20.546553009747274 usec\nrounds: 2924" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 42702.939745621814, + "unit": "iter/sec", + "range": "stddev: 0.0000018568012366884552", + "extra": "mean: 23.417591527818097 usec\nrounds: 661" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 23974.068123049503, + "unit": "iter/sec", + "range": "stddev: 0.0000025619531741009163", + "extra": "mean: 41.71173598353819 usec\nrounds: 13609" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 98.96406505938431, + "unit": "iter/sec", + "range": "stddev: 0.00014355342170971986", + "extra": "mean: 10.104677888887656 msec\nrounds: 36" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 117.57710390484908, + "unit": "iter/sec", + "range": "stddev: 0.001298187000180183", + "extra": "mean: 8.50505725000051 msec\nrounds: 116" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 142.11574929645957, + "unit": "iter/sec", + "range": "stddev: 0.00012182462769958346", + "extra": "mean: 7.036517802921033 msec\nrounds: 137" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 110.949634543376, + "unit": "iter/sec", + "range": "stddev: 0.00018213907883691253", + "extra": "mean: 9.013098638094636 msec\nrounds: 105" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 89.9323201526494, + "unit": "iter/sec", + "range": "stddev: 0.00021217521988222839", + "extra": "mean: 11.119472935899118 msec\nrounds: 78" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 39.88199363942357, + "unit": "iter/sec", + "range": "stddev: 0.00019750139102683975", + "extra": "mean: 25.073972205128044 msec\nrounds: 39" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 100.1976078236694, + "unit": "iter/sec", + "range": "stddev: 0.0001288327324439102", + "extra": "mean: 9.98027818947363 msec\nrounds: 95" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 83.03962417213299, + "unit": "iter/sec", + "range": "stddev: 0.0015183504121913402", + "extra": "mean: 12.042443712499207 msec\nrounds: 80" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 21.139041623498418, + "unit": "iter/sec", + "range": "stddev: 0.0002188021230971041", + "extra": "mean: 47.30583428571273 msec\nrounds: 21" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 368.9227690784748, + "unit": "iter/sec", + "range": "stddev: 0.00010382449504862215", + "extra": "mean: 2.710594421965012 msec\nrounds: 346" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 108.04097607791786, + "unit": "iter/sec", + "range": "stddev: 0.0000749722047321306", + "extra": "mean: 9.25574755339874 msec\nrounds: 103" + } + ] + }, + { + "commit": { + "author": { + "email": "alastair@interaction.net.au", + "name": "Alastair Weakley", + "username": "aweakley" + }, + "committer": { + "email": "alastair@interaction.net.au", + "name": "Alastair Weakley", + "username": "aweakley" + }, + "distinct": true, + "id": "34363577027222d6ce94a92e0dc10a8935f01d44", + "message": "Add gh-pages push", + "timestamp": "2024-05-27T14:45:34+10:00", + "tree_id": "5a171c15d8a0ac83a2bb355d98e532cdebdd5828", + "url": "https://github.com/ixc/python-edtf/commit/34363577027222d6ce94a92e0dc10a8935f01d44" + }, + "date": 1716785193354, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 69905.41346040968, + "unit": "iter/sec", + "range": "stddev: 0.000001195651402162717", + "extra": "mean: 14.305043779854635 usec\nrounds: 1873" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 8173.884639099722, + "unit": "iter/sec", + "range": "stddev: 0.000005742411910544582", + "extra": "mean: 122.34085066683065 usec\nrounds: 750" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 9879.991879023908, + "unit": "iter/sec", + "range": "stddev: 0.0000055820148594391644", + "extra": "mean: 101.21465809330148 usec\nrounds: 3577" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 6730.77659270091, + "unit": "iter/sec", + "range": "stddev: 0.000006622062061458528", + "extra": "mean: 148.57126606823275 usec\nrounds: 3454" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 11582.781771392129, + "unit": "iter/sec", + "range": "stddev: 0.000005020775977436515", + "extra": "mean: 86.33504625545669 usec\nrounds: 4994" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 8488.526105802182, + "unit": "iter/sec", + "range": "stddev: 0.000006323775802590362", + "extra": "mean: 117.80608170792661 usec\nrounds: 3794" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 5678.483963622814, + "unit": "iter/sec", + "range": "stddev: 0.000007824500665328574", + "extra": "mean: 176.10334138586003 usec\nrounds: 3146" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 7362.430401497889, + "unit": "iter/sec", + "range": "stddev: 0.000006913211386634284", + "extra": "mean: 135.8247135071796 usec\nrounds: 3487" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 49971.72404178172, + "unit": "iter/sec", + "range": "stddev: 0.00000130788910724786", + "extra": "mean: 20.011316783145055 usec\nrounds: 2860" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 44652.3744012568, + "unit": "iter/sec", + "range": "stddev: 0.0000012002267402313024", + "extra": "mean: 22.395225638255276 usec\nrounds: 1919" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 22063.40242554577, + "unit": "iter/sec", + "range": "stddev: 0.000006781111986596455", + "extra": "mean: 45.323925145931504 usec\nrounds: 6172" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 88.84018727888281, + "unit": "iter/sec", + "range": "stddev: 0.0001956888491768538", + "extra": "mean: 11.256167176469907 msec\nrounds: 34" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 107.4197120768205, + "unit": "iter/sec", + "range": "stddev: 0.00018967184233446258", + "extra": "mean: 9.309278350000199 msec\nrounds: 100" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 132.1144102672904, + "unit": "iter/sec", + "range": "stddev: 0.00014402075852475157", + "extra": "mean: 7.569197016259062 msec\nrounds: 123" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 101.02534742988131, + "unit": "iter/sec", + "range": "stddev: 0.00011356166437298762", + "extra": "mean: 9.898505923912515 msec\nrounds: 92" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 83.45651901912636, + "unit": "iter/sec", + "range": "stddev: 0.00020043692200325113", + "extra": "mean: 11.982287444445442 msec\nrounds: 72" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 35.7893669942235, + "unit": "iter/sec", + "range": "stddev: 0.0031887003234374245", + "extra": "mean: 27.94125976470617 msec\nrounds: 34" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 91.27122829853084, + "unit": "iter/sec", + "range": "stddev: 0.0001914039701162702", + "extra": "mean: 10.956355235290468 msec\nrounds: 85" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 80.8028747413004, + "unit": "iter/sec", + "range": "stddev: 0.00011888844386033674", + "extra": "mean: 12.37579731168741 msec\nrounds: 77" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 17.363914999023848, + "unit": "iter/sec", + "range": "stddev: 0.0005870092015916998", + "extra": "mean: 57.59069887500701 msec\nrounds: 16" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 307.93597912451037, + "unit": "iter/sec", + "range": "stddev: 0.00006912603730177728", + "extra": "mean: 3.2474282571432207 msec\nrounds: 280" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 97.07339191125189, + "unit": "iter/sec", + "range": "stddev: 0.0002586729506748062", + "extra": "mean: 10.301484065934744 msec\nrounds: 91" + } + ] + }, + { + "commit": { + "author": { + "email": "alastair@interaction.net.au", + "name": "Alastair Weakley", + "username": "aweakley" + }, + "committer": { + "email": "alastair@interaction.net.au", + "name": "Alastair Weakley", + "username": "aweakley" + }, + "distinct": true, + "id": "34363577027222d6ce94a92e0dc10a8935f01d44", + "message": "Add gh-pages push", + "timestamp": "2024-05-27T14:45:34+10:00", + "tree_id": "5a171c15d8a0ac83a2bb355d98e532cdebdd5828", + "url": "https://github.com/ixc/python-edtf/commit/34363577027222d6ce94a92e0dc10a8935f01d44" + }, + "date": 1716785194603, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 79958.30048203815, + "unit": "iter/sec", + "range": "stddev: 0.0000013902547894197534", + "extra": "mean: 12.506518947643718 usec\nrounds: 2243" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 8474.011269984549, + "unit": "iter/sec", + "range": "stddev: 0.000014370570670442267", + "extra": "mean: 118.00786760126923 usec\nrounds: 642" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 10427.810398046287, + "unit": "iter/sec", + "range": "stddev: 0.0000072904092992443195", + "extra": "mean: 95.8974091231421 usec\nrounds: 7037" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 6847.227622539922, + "unit": "iter/sec", + "range": "stddev: 0.000009740919924733184", + "extra": "mean: 146.04450956298984 usec\nrounds: 5124" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 12555.780097537328, + "unit": "iter/sec", + "range": "stddev: 0.000005472294798596726", + "extra": "mean: 79.64459334519076 usec\nrounds: 7874" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 8880.042879322413, + "unit": "iter/sec", + "range": "stddev: 0.000007013408444804863", + "extra": "mean: 112.61206883680099 usec\nrounds: 5898" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 5557.636889859583, + "unit": "iter/sec", + "range": "stddev: 0.00001390533642042178", + "extra": "mean: 179.93259002303506 usec\nrounds: 4310" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 7511.798070564185, + "unit": "iter/sec", + "range": "stddev: 0.00000891810723898234", + "extra": "mean: 133.12391928087246 usec\nrounds: 5451" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 47558.30685213179, + "unit": "iter/sec", + "range": "stddev: 0.0000031697692123994415", + "extra": "mean: 21.02682088975956 usec\nrounds: 2719" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 42308.84014737829, + "unit": "iter/sec", + "range": "stddev: 0.0000025628958806588395", + "extra": "mean: 23.635722381341765 usec\nrounds: 1747" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 23877.1187957652, + "unit": "iter/sec", + "range": "stddev: 0.0000032570402717625384", + "extra": "mean: 41.88110000011216 usec\nrounds: 9580" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 97.69862953680915, + "unit": "iter/sec", + "range": "stddev: 0.00024528896220694723", + "extra": "mean: 10.235558111111864 msec\nrounds: 36" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 115.90335748753797, + "unit": "iter/sec", + "range": "stddev: 0.00133160938591465", + "extra": "mean: 8.627877756755414 msec\nrounds: 111" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 143.48646401486695, + "unit": "iter/sec", + "range": "stddev: 0.00017745575776047665", + "extra": "mean: 6.969298510947958 msec\nrounds: 137" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 111.6325515831846, + "unit": "iter/sec", + "range": "stddev: 0.0001991487073228647", + "extra": "mean: 8.957960611111139 msec\nrounds: 108" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 90.31960851001091, + "unit": "iter/sec", + "range": "stddev: 0.00012143445929559794", + "extra": "mean: 11.071792897432248 msec\nrounds: 78" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 40.17832046653281, + "unit": "iter/sec", + "range": "stddev: 0.0008166436644674779", + "extra": "mean: 24.889044349998812 msec\nrounds: 40" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 100.5958777555985, + "unit": "iter/sec", + "range": "stddev: 0.00015405629892429465", + "extra": "mean: 9.940765191487646 msec\nrounds: 94" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 85.52923258058316, + "unit": "iter/sec", + "range": "stddev: 0.00017423393802174224", + "extra": "mean: 11.6919089512212 msec\nrounds: 82" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 20.93579375181425, + "unit": "iter/sec", + "range": "stddev: 0.0002589595290796208", + "extra": "mean: 47.76508652380769 msec\nrounds: 21" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 366.20661488859406, + "unit": "iter/sec", + "range": "stddev: 0.00009205783713548249", + "extra": "mean: 2.7306988987738956 msec\nrounds: 326" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 105.33547912797474, + "unit": "iter/sec", + "range": "stddev: 0.0001253303714130804", + "extra": "mean: 9.493477490001965 msec\nrounds: 100" + } + ] + }, + { + "commit": { + "author": { + "email": "alastair@interaction.net.au", + "name": "Alastair Weakley", + "username": "aweakley" + }, + "committer": { + "email": "alastair@interaction.net.au", + "name": "Alastair Weakley", + "username": "aweakley" + }, + "distinct": true, + "id": "23a3d7e1de070bb0156e06d5ac7a91cf081d00e6", + "message": "Make 2 CI paths #50", + "timestamp": "2024-05-27T15:34:42+10:00", + "tree_id": "27b841d61074c57e56bc2cecfe0f7cc25d171fdf", + "url": "https://github.com/ixc/python-edtf/commit/23a3d7e1de070bb0156e06d5ac7a91cf081d00e6" + }, + "date": 1716788132173, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 112615.66560226989, + "unit": "iter/sec", + "range": "stddev: 6.275084393992172e-7", + "extra": "mean: 8.879759264858832 usec\nrounds: 3319" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 11460.41504418109, + "unit": "iter/sec", + "range": "stddev: 0.000005467111140044315", + "extra": "mean: 87.25687474187419 usec\nrounds: 966" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 13934.30458296472, + "unit": "iter/sec", + "range": "stddev: 0.0000074130948486903684", + "extra": "mean: 71.76533238856732 usec\nrounds: 9170" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 9445.85100490562, + "unit": "iter/sec", + "range": "stddev: 0.000004434182414688578", + "extra": "mean: 105.86658623777348 usec\nrounds: 6656" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 16806.440119208735, + "unit": "iter/sec", + "range": "stddev: 0.000004033801217753863", + "extra": "mean: 59.50100038479066 usec\nrounds: 10397" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 11963.546373040152, + "unit": "iter/sec", + "range": "stddev: 0.000004462133468800213", + "extra": "mean: 83.58725488401163 usec\nrounds: 7678" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 7498.340738226578, + "unit": "iter/sec", + "range": "stddev: 0.000005070842279491912", + "extra": "mean: 133.36283784784482 usec\nrounds: 5427" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 10136.865919746037, + "unit": "iter/sec", + "range": "stddev: 0.000004865825736223747", + "extra": "mean: 98.64982016306016 usec\nrounds: 7112" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 69844.11381499983, + "unit": "iter/sec", + "range": "stddev: 0.0000015924548782767833", + "extra": "mean: 14.317598797928174 usec\nrounds: 3993" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 57074.34873171397, + "unit": "iter/sec", + "range": "stddev: 0.000001219378832653773", + "extra": "mean: 17.52100588480897 usec\nrounds: 2549" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 32421.032879521274, + "unit": "iter/sec", + "range": "stddev: 0.000003137397892469256", + "extra": "mean: 30.844174635523395 usec\nrounds: 15707" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 117.26120049667804, + "unit": "iter/sec", + "range": "stddev: 0.0005713764032269913", + "extra": "mean: 8.527970000002938 msec\nrounds: 42" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 138.1502482389584, + "unit": "iter/sec", + "range": "stddev: 0.001107134975785877", + "extra": "mean: 7.238495860465634 msec\nrounds: 129" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 169.18811425486982, + "unit": "iter/sec", + "range": "stddev: 0.00013832938980001063", + "extra": "mean: 5.910580683543593 msec\nrounds: 158" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 132.8856286806562, + "unit": "iter/sec", + "range": "stddev: 0.00010021502413021646", + "extra": "mean: 7.525268232000826 msec\nrounds: 125" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 107.98528162432066, + "unit": "iter/sec", + "range": "stddev: 0.0009646604985807", + "extra": "mean: 9.260521294735208 msec\nrounds: 95" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 47.94160022733147, + "unit": "iter/sec", + "range": "stddev: 0.0002488318980439506", + "extra": "mean: 20.858711333333858 msec\nrounds: 45" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 118.33263928190925, + "unit": "iter/sec", + "range": "stddev: 0.00011745152757657982", + "extra": "mean: 8.450753790910166 msec\nrounds: 110" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 103.62342836663393, + "unit": "iter/sec", + "range": "stddev: 0.000127816561045442", + "extra": "mean: 9.650327303029027 msec\nrounds: 99" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 22.159867286876004, + "unit": "iter/sec", + "range": "stddev: 0.0002201491328919658", + "extra": "mean: 45.12662404761971 msec\nrounds: 21" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 418.2191273351805, + "unit": "iter/sec", + "range": "stddev: 0.00006996316098605311", + "extra": "mean: 2.3910910205657645 msec\nrounds: 389" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 124.87047526156347, + "unit": "iter/sec", + "range": "stddev: 0.00011814576106395855", + "extra": "mean: 8.008298181818574 msec\nrounds: 121" + } + ] + }, + { + "commit": { + "author": { + "email": "alastair@interaction.net.au", + "name": "Alastair Weakley", + "username": "aweakley" + }, + "committer": { + "email": "alastair@interaction.net.au", + "name": "Alastair Weakley", + "username": "aweakley" + }, + "distinct": true, + "id": "23a3d7e1de070bb0156e06d5ac7a91cf081d00e6", + "message": "Make 2 CI paths #50", + "timestamp": "2024-05-27T15:34:42+10:00", + "tree_id": "27b841d61074c57e56bc2cecfe0f7cc25d171fdf", + "url": "https://github.com/ixc/python-edtf/commit/23a3d7e1de070bb0156e06d5ac7a91cf081d00e6" + }, + "date": 1716788133922, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 88767.0105010859, + "unit": "iter/sec", + "range": "stddev: 8.573537893586255e-7", + "extra": "mean: 11.265446412524694 usec\nrounds: 2258" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 8900.921850218623, + "unit": "iter/sec", + "range": "stddev: 0.000005324740092499663", + "extra": "mean: 112.34791371361587 usec\nrounds: 649" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 11265.569835090084, + "unit": "iter/sec", + "range": "stddev: 0.000004364616034069602", + "extra": "mean: 88.766037993497 usec\nrounds: 7317" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 7516.213313976455, + "unit": "iter/sec", + "range": "stddev: 0.000006317879898542234", + "extra": "mean: 133.04571839924932 usec\nrounds: 5522" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 13122.789652884505, + "unit": "iter/sec", + "range": "stddev: 0.00000453758522692099", + "extra": "mean: 76.20330939162706 usec\nrounds: 8646" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 9521.705501845247, + "unit": "iter/sec", + "range": "stddev: 0.0000052698394131647924", + "extra": "mean: 105.02320196798844 usec\nrounds: 6199" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 5973.6560992468785, + "unit": "iter/sec", + "range": "stddev: 0.000011533246410826644", + "extra": "mean: 167.40166882490504 usec\nrounds: 4478" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 8137.622346273701, + "unit": "iter/sec", + "range": "stddev: 0.000010773087490876892", + "extra": "mean: 122.8860172477665 usec\nrounds: 5566" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 51703.5208652613, + "unit": "iter/sec", + "range": "stddev: 0.000001334699111102396", + "extra": "mean: 19.341042607252742 usec\nrounds: 2746" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 46319.49863522803, + "unit": "iter/sec", + "range": "stddev: 0.0000016515359715919137", + "extra": "mean: 21.58918013934321 usec\nrounds: 1732" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 24933.635262466047, + "unit": "iter/sec", + "range": "stddev: 0.000003586808945000392", + "extra": "mean: 40.106466204122036 usec\nrounds: 9809" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 102.87160296629015, + "unit": "iter/sec", + "range": "stddev: 0.00031936237918404485", + "extra": "mean: 9.720855621620755 msec\nrounds: 37" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 124.2206362773745, + "unit": "iter/sec", + "range": "stddev: 0.0015398159050580733", + "extra": "mean: 8.050192222225316 msec\nrounds: 126" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 154.27839873473343, + "unit": "iter/sec", + "range": "stddev: 0.0001908861999065571", + "extra": "mean: 6.481788819440639 msec\nrounds: 144" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 120.67129688106473, + "unit": "iter/sec", + "range": "stddev: 0.0001611099900859099", + "extra": "mean: 8.286974830357659 msec\nrounds: 112" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 97.48834079483495, + "unit": "iter/sec", + "range": "stddev: 0.00020506021286666225", + "extra": "mean: 10.257636880952857 msec\nrounds: 84" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 42.74619676096361, + "unit": "iter/sec", + "range": "stddev: 0.00022772365688186549", + "extra": "mean: 23.393894095233595 msec\nrounds: 42" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 108.16818013432146, + "unit": "iter/sec", + "range": "stddev: 0.0003408896083751312", + "extra": "mean: 9.244862941746977 msec\nrounds: 103" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 87.98129159341842, + "unit": "iter/sec", + "range": "stddev: 0.001682863831298381", + "extra": "mean: 11.366052735634158 msec\nrounds: 87" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 23.091698914447857, + "unit": "iter/sec", + "range": "stddev: 0.0003018196458826569", + "extra": "mean: 43.30560534783029 msec\nrounds: 23" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 397.3890351525047, + "unit": "iter/sec", + "range": "stddev: 0.00007642003655173578", + "extra": "mean: 2.516425747922897 msec\nrounds: 361" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 115.3402278948763, + "unit": "iter/sec", + "range": "stddev: 0.00012660949422458527", + "extra": "mean: 8.670001943393268 msec\nrounds: 106" + } + ] + }, + { + "commit": { + "author": { + "email": "alastair@interaction.net.au", + "name": "Alastair Weakley", + "username": "aweakley" + }, + "committer": { + "email": "alastair@interaction.net.au", + "name": "Alastair Weakley", + "username": "aweakley" + }, + "distinct": true, + "id": "23a3d7e1de070bb0156e06d5ac7a91cf081d00e6", + "message": "Make 2 CI paths #50", + "timestamp": "2024-05-27T15:34:42+10:00", + "tree_id": "27b841d61074c57e56bc2cecfe0f7cc25d171fdf", + "url": "https://github.com/ixc/python-edtf/commit/23a3d7e1de070bb0156e06d5ac7a91cf081d00e6" + }, + "date": 1716788134297, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 82582.24931981423, + "unit": "iter/sec", + "range": "stddev: 9.493480230875875e-7", + "extra": "mean: 12.109139775635377 usec\nrounds: 2318" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 8495.084963218189, + "unit": "iter/sec", + "range": "stddev: 0.000006805235580173414", + "extra": "mean: 117.71512637363554 usec\nrounds: 728" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 10490.051487436283, + "unit": "iter/sec", + "range": "stddev: 0.00000416529841148147", + "extra": "mean: 95.32841675731328 usec\nrounds: 7364" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 6990.471851829893, + "unit": "iter/sec", + "range": "stddev: 0.000005238593555395348", + "extra": "mean: 143.0518599024514 usec\nrounds: 5125" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 12491.889193755884, + "unit": "iter/sec", + "range": "stddev: 0.000004300714708378163", + "extra": "mean: 80.05194286384268 usec\nrounds: 8506" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 8845.87926713937, + "unit": "iter/sec", + "range": "stddev: 0.000004723765529825692", + "extra": "mean: 113.04698716777601 usec\nrounds: 5455" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 5405.819391757616, + "unit": "iter/sec", + "range": "stddev: 0.000037283545954337615", + "extra": "mean: 184.98583240215612 usec\nrounds: 4475" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 7673.6486948110105, + "unit": "iter/sec", + "range": "stddev: 0.000005547169049473546", + "extra": "mean: 130.3161038211469 usec\nrounds: 5548" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 50157.830385315414, + "unit": "iter/sec", + "range": "stddev: 0.0000014843772971356884", + "extra": "mean: 19.937066502237855 usec\nrounds: 2842" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 42889.71012888128, + "unit": "iter/sec", + "range": "stddev: 0.0000014942816885740758", + "extra": "mean: 23.315615726827104 usec\nrounds: 674" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 24516.79458377661, + "unit": "iter/sec", + "range": "stddev: 0.000004058844901028363", + "extra": "mean: 40.78836638219116 usec\nrounds: 13707" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 99.77995580282735, + "unit": "iter/sec", + "range": "stddev: 0.0001281936085998655", + "extra": "mean: 10.022052945945122 msec\nrounds: 37" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 118.64504944129149, + "unit": "iter/sec", + "range": "stddev: 0.0012865556803151326", + "extra": "mean: 8.428501692308913 msec\nrounds: 117" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 147.24576404320553, + "unit": "iter/sec", + "range": "stddev: 0.00012646751473860158", + "extra": "mean: 6.791366845069821 msec\nrounds: 142" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 115.05564613844206, + "unit": "iter/sec", + "range": "stddev: 0.00012825037692796646", + "extra": "mean: 8.691446561403325 msec\nrounds: 114" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 92.8078184050533, + "unit": "iter/sec", + "range": "stddev: 0.0000943077038434273", + "extra": "mean: 10.77495427848082 msec\nrounds: 79" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 40.881476953475804, + "unit": "iter/sec", + "range": "stddev: 0.000205466656999473", + "extra": "mean: 24.460955780487733 msec\nrounds: 41" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 102.63266505121813, + "unit": "iter/sec", + "range": "stddev: 0.00022574889298205902", + "extra": "mean: 9.74348663265206 msec\nrounds: 98" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 87.02031546759753, + "unit": "iter/sec", + "range": "stddev: 0.00009370824208346737", + "extra": "mean: 11.491569464286247 msec\nrounds: 84" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 21.458080783304972, + "unit": "iter/sec", + "range": "stddev: 0.0005042068939737975", + "extra": "mean: 46.60249022727279 msec\nrounds: 22" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 372.6393258321324, + "unit": "iter/sec", + "range": "stddev: 0.00007350297486706885", + "extra": "mean: 2.6835600289017343 msec\nrounds: 346" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 107.17568326341869, + "unit": "iter/sec", + "range": "stddev: 0.0002913705629941769", + "extra": "mean: 9.330474689320884 msec\nrounds: 103" + } + ] + }, + { + "commit": { + "author": { + "email": "alastair@interaction.net.au", + "name": "Alastair Weakley", + "username": "aweakley" + }, + "committer": { + "email": "alastair@interaction.net.au", + "name": "Alastair Weakley", + "username": "aweakley" + }, + "distinct": true, + "id": "23a3d7e1de070bb0156e06d5ac7a91cf081d00e6", + "message": "Make 2 CI paths #50", + "timestamp": "2024-05-27T15:34:42+10:00", + "tree_id": "27b841d61074c57e56bc2cecfe0f7cc25d171fdf", + "url": "https://github.com/ixc/python-edtf/commit/23a3d7e1de070bb0156e06d5ac7a91cf081d00e6" + }, + "date": 1716788135109, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 80637.94208574825, + "unit": "iter/sec", + "range": "stddev: 0.0000011043896442961258", + "extra": "mean: 12.401110124271606 usec\nrounds: 2252" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 8341.905665295199, + "unit": "iter/sec", + "range": "stddev: 0.00001364758689069219", + "extra": "mean: 119.87668527112415 usec\nrounds: 645" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 10417.819789637768, + "unit": "iter/sec", + "range": "stddev: 0.000005854690070068201", + "extra": "mean: 95.989373994995 usec\nrounds: 7214" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 6886.515585990748, + "unit": "iter/sec", + "range": "stddev: 0.00000623345924005022", + "extra": "mean: 145.21131732197077 usec\nrounds: 4705" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 12484.54770137337, + "unit": "iter/sec", + "range": "stddev: 0.0000058829941443926245", + "extra": "mean: 80.0990171145723 usec\nrounds: 8297" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 8698.088249765118, + "unit": "iter/sec", + "range": "stddev: 0.000011886154482232475", + "extra": "mean: 114.9677919199088 usec\nrounds: 6089" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 5544.4870786285965, + "unit": "iter/sec", + "range": "stddev: 0.000008976243497641626", + "extra": "mean: 180.35933456397296 usec\nrounds: 4334" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 7444.998902374758, + "unit": "iter/sec", + "range": "stddev: 0.000007893514255000333", + "extra": "mean: 134.3183542553682 usec\nrounds: 4700" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 48852.86297216357, + "unit": "iter/sec", + "range": "stddev: 0.0000015090745392079688", + "extra": "mean: 20.469629396537137 usec\nrounds: 2701" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 42918.513103889454, + "unit": "iter/sec", + "range": "stddev: 0.000002651012578519279", + "extra": "mean: 23.29996842107225 usec\nrounds: 1805" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 24511.496710184278, + "unit": "iter/sec", + "range": "stddev: 0.0000032464293262941125", + "extra": "mean: 40.79718231096472 usec\nrounds: 10515" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 96.88586179657293, + "unit": "iter/sec", + "range": "stddev: 0.00021548593307152734", + "extra": "mean: 10.321423388890908 msec\nrounds: 36" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 116.69180385841727, + "unit": "iter/sec", + "range": "stddev: 0.0013784164801816487", + "extra": "mean: 8.569582155172654 msec\nrounds: 116" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 142.79987879432167, + "unit": "iter/sec", + "range": "stddev: 0.00038411885450562313", + "extra": "mean: 7.002807064285577 msec\nrounds: 140" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 111.70538195402993, + "unit": "iter/sec", + "range": "stddev: 0.00013426188268034613", + "extra": "mean: 8.95212014414426 msec\nrounds: 111" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 89.88053110140656, + "unit": "iter/sec", + "range": "stddev: 0.0001810424303467495", + "extra": "mean: 11.12587996250003 msec\nrounds: 80" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 39.85984485338454, + "unit": "iter/sec", + "range": "stddev: 0.0001974765034694153", + "extra": "mean: 25.087904975001152 msec\nrounds: 40" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 100.59262605960122, + "unit": "iter/sec", + "range": "stddev: 0.0001953037327707223", + "extra": "mean: 9.941086530612086 msec\nrounds: 98" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 83.87251675710827, + "unit": "iter/sec", + "range": "stddev: 0.0010575960145274095", + "extra": "mean: 11.922856719513536 msec\nrounds: 82" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 21.064135489943894, + "unit": "iter/sec", + "range": "stddev: 0.00027034343095348745", + "extra": "mean: 47.47405847619069 msec\nrounds: 21" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 362.28789437411604, + "unit": "iter/sec", + "range": "stddev: 0.00009144047297110157", + "extra": "mean: 2.76023575595201 msec\nrounds: 336" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 106.09274956949167, + "unit": "iter/sec", + "range": "stddev: 0.00009112446278783035", + "extra": "mean: 9.425714801980801 msec\nrounds: 101" + } + ] + }, + { + "commit": { + "author": { + "email": "alastair@interaction.net.au", + "name": "Alastair Weakley", + "username": "aweakley" + }, + "committer": { + "email": "alastair@interaction.net.au", + "name": "Alastair Weakley", + "username": "aweakley" + }, + "distinct": true, + "id": "23a3d7e1de070bb0156e06d5ac7a91cf081d00e6", + "message": "Make 2 CI paths #50", + "timestamp": "2024-05-27T15:34:42+10:00", + "tree_id": "27b841d61074c57e56bc2cecfe0f7cc25d171fdf", + "url": "https://github.com/ixc/python-edtf/commit/23a3d7e1de070bb0156e06d5ac7a91cf081d00e6" + }, + "date": 1716788140280, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 70086.9447005904, + "unit": "iter/sec", + "range": "stddev: 9.325218125747999e-7", + "extra": "mean: 14.26799248093884 usec\nrounds: 2128" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 8331.01398047554, + "unit": "iter/sec", + "range": "stddev: 0.000004649981673218373", + "extra": "mean: 120.0334079793393 usec\nrounds: 777" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 9967.392433596815, + "unit": "iter/sec", + "range": "stddev: 0.000005565287296047531", + "extra": "mean: 100.3271423957712 usec\nrounds: 3715" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 6740.962278756065, + "unit": "iter/sec", + "range": "stddev: 0.00001340597920483976", + "extra": "mean: 148.34677285637235 usec\nrounds: 3522" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 11701.629279061168, + "unit": "iter/sec", + "range": "stddev: 0.000004272144540201667", + "extra": "mean: 85.45818502295185 usec\nrounds: 5021" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 8468.048188822464, + "unit": "iter/sec", + "range": "stddev: 0.000008764418157665953", + "extra": "mean: 118.09096709203497 usec\nrounds: 3920" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 5684.699045819449, + "unit": "iter/sec", + "range": "stddev: 0.000007004406951009693", + "extra": "mean: 175.91080758011353 usec\nrounds: 3087" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 7376.606611845596, + "unit": "iter/sec", + "range": "stddev: 0.0000069084711193746155", + "extra": "mean: 135.5636883759217 usec\nrounds: 3639" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 50663.895271017995, + "unit": "iter/sec", + "range": "stddev: 0.0000016921349466399732", + "extra": "mean: 19.73792174191637 usec\nrounds: 2939" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 44862.1619871171, + "unit": "iter/sec", + "range": "stddev: 0.0000013737858826073448", + "extra": "mean: 22.29049951465037 usec\nrounds: 2058" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 22654.84646915091, + "unit": "iter/sec", + "range": "stddev: 0.0000027735720310472215", + "extra": "mean: 44.14066550226678 usec\nrounds: 7157" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 90.8554390718194, + "unit": "iter/sec", + "range": "stddev: 0.00018799972211284736", + "extra": "mean: 11.006495705881955 msec\nrounds: 34" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 111.47799985798436, + "unit": "iter/sec", + "range": "stddev: 0.00011778168593013262", + "extra": "mean: 8.970379817308656 msec\nrounds: 104" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 135.2161884750531, + "unit": "iter/sec", + "range": "stddev: 0.0001253433502081992", + "extra": "mean: 7.395564179687675 msec\nrounds: 128" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 105.11096940435664, + "unit": "iter/sec", + "range": "stddev: 0.0001445512352525702", + "extra": "mean: 9.513754897959794 msec\nrounds: 98" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 85.58187419852538, + "unit": "iter/sec", + "range": "stddev: 0.00010629415908098701", + "extra": "mean: 11.684717229728891 msec\nrounds: 74" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 37.07408526852491, + "unit": "iter/sec", + "range": "stddev: 0.0022557187890364775", + "extra": "mean: 26.973018828571835 msec\nrounds: 35" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 93.58810006462576, + "unit": "iter/sec", + "range": "stddev: 0.0001277733634342468", + "extra": "mean: 10.685119147727821 msec\nrounds: 88" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 82.27778304014974, + "unit": "iter/sec", + "range": "stddev: 0.00012405795713358255", + "extra": "mean: 12.153949256411321 msec\nrounds: 78" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 17.751963684368334, + "unit": "iter/sec", + "range": "stddev: 0.00037396671467820013", + "extra": "mean: 56.331796176473695 msec\nrounds: 17" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 313.69766336798654, + "unit": "iter/sec", + "range": "stddev: 0.00005539410220813157", + "extra": "mean: 3.187782750000719 msec\nrounds: 288" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 99.85520201162487, + "unit": "iter/sec", + "range": "stddev: 0.00010232034865425359", + "extra": "mean: 10.014500795697982 msec\nrounds: 93" + } + ] + }, + { + "commit": { + "author": { + "email": "alastair@interaction.net.au", + "name": "Alastair Weakley", + "username": "aweakley" + }, + "committer": { + "email": "alastair@interaction.net.au", + "name": "Alastair Weakley", + "username": "aweakley" + }, + "distinct": true, + "id": "13a8315234dae048461e8b2bd53b840f0bea8e12", + "message": "Do not auto-push when using external-data file", + "timestamp": "2024-05-27T15:44:12+10:00", + "tree_id": "10650b227293e2be84fca11b0afca9226a02d628", + "url": "https://github.com/ixc/python-edtf/commit/13a8315234dae048461e8b2bd53b840f0bea8e12" + }, + "date": 1716788702534, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 115004.3072653985, + "unit": "iter/sec", + "range": "stddev: 7.834005509215258e-7", + "extra": "mean: 8.695326494965736 usec\nrounds: 2876" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 11367.89270601968, + "unit": "iter/sec", + "range": "stddev: 0.00000568018181650373", + "extra": "mean: 87.96705122581483 usec\nrounds: 898" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 13858.415482980341, + "unit": "iter/sec", + "range": "stddev: 0.000005036422359280935", + "extra": "mean: 72.15832150710952 usec\nrounds: 8625" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 9207.257552822217, + "unit": "iter/sec", + "range": "stddev: 0.000005448450072094203", + "extra": "mean: 108.6099736281928 usec\nrounds: 5650" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 16647.04689362329, + "unit": "iter/sec", + "range": "stddev: 0.000003417371684576519", + "extra": "mean: 60.070714427016696 usec\nrounds: 10113" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 11744.91858318692, + "unit": "iter/sec", + "range": "stddev: 0.000005088100690713757", + "extra": "mean: 85.14320409436635 usec\nrounds: 6497" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 7268.383071361796, + "unit": "iter/sec", + "range": "stddev: 0.0000250321722265538", + "extra": "mean: 137.58218164643887 usec\nrounds: 5296" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 10043.168765669323, + "unit": "iter/sec", + "range": "stddev: 0.000005510047799915423", + "extra": "mean: 99.57016787553259 usec\nrounds: 6618" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 69370.15301449983, + "unit": "iter/sec", + "range": "stddev: 0.0000015625338492893047", + "extra": "mean: 14.415421568855107 usec\nrounds: 3774" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 56813.87402149433, + "unit": "iter/sec", + "range": "stddev: 0.0000011198898195914883", + "extra": "mean: 17.601334484278805 usec\nrounds: 2317" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 32781.12397643384, + "unit": "iter/sec", + "range": "stddev: 0.000002527028821982336", + "extra": "mean: 30.505360362838513 usec\nrounds: 11580" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 112.57643713557606, + "unit": "iter/sec", + "range": "stddev: 0.00017887146196569285", + "extra": "mean: 8.882853512193655 msec\nrounds: 41" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 132.46289543382264, + "unit": "iter/sec", + "range": "stddev: 0.001564837649060476", + "extra": "mean: 7.549283870965901 msec\nrounds: 124" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 167.73191436154625, + "unit": "iter/sec", + "range": "stddev: 0.00010471666434942597", + "extra": "mean: 5.96189463291106 msec\nrounds: 158" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 129.61485912975093, + "unit": "iter/sec", + "range": "stddev: 0.00013427530395995464", + "extra": "mean: 7.715164809915429 msec\nrounds: 121" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 105.47442715474781, + "unit": "iter/sec", + "range": "stddev: 0.00020622614198554927", + "extra": "mean: 9.480971141306513 msec\nrounds: 92" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 46.065056314630255, + "unit": "iter/sec", + "range": "stddev: 0.00028067275784142507", + "extra": "mean: 21.70842890476181 msec\nrounds: 42" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 114.3324859491341, + "unit": "iter/sec", + "range": "stddev: 0.00018089183908523378", + "extra": "mean: 8.746420509433293 msec\nrounds: 106" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 101.33419664219284, + "unit": "iter/sec", + "range": "stddev: 0.0001275734845104078", + "extra": "mean: 9.868336979380826 msec\nrounds: 97" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 20.827518142230037, + "unit": "iter/sec", + "range": "stddev: 0.0012186736757914636", + "extra": "mean: 48.013401941174756 msec\nrounds: 17" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 406.76572250879025, + "unit": "iter/sec", + "range": "stddev: 0.00007189850501220115", + "extra": "mean: 2.4584175722387474 msec\nrounds: 353" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 122.45513023990036, + "unit": "iter/sec", + "range": "stddev: 0.00010698356737504685", + "extra": "mean: 8.166256473215228 msec\nrounds: 112" + } + ] + }, + { + "commit": { + "author": { + "email": "alastair@interaction.net.au", + "name": "Alastair Weakley", + "username": "aweakley" + }, + "committer": { + "email": "alastair@interaction.net.au", + "name": "Alastair Weakley", + "username": "aweakley" + }, + "distinct": true, + "id": "13a8315234dae048461e8b2bd53b840f0bea8e12", + "message": "Do not auto-push when using external-data file", + "timestamp": "2024-05-27T15:44:12+10:00", + "tree_id": "10650b227293e2be84fca11b0afca9226a02d628", + "url": "https://github.com/ixc/python-edtf/commit/13a8315234dae048461e8b2bd53b840f0bea8e12" + }, + "date": 1716788702744, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 88268.55855003693, + "unit": "iter/sec", + "range": "stddev: 7.600273020746905e-7", + "extra": "mean: 11.329062311957077 usec\nrounds: 2327" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 8912.673402803035, + "unit": "iter/sec", + "range": "stddev: 0.000006155286022937561", + "extra": "mean: 112.19978056028621 usec\nrounds: 679" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 11277.189536972332, + "unit": "iter/sec", + "range": "stddev: 0.000004562551914391134", + "extra": "mean: 88.67457594123908 usec\nrounds: 7756" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 7510.107952949281, + "unit": "iter/sec", + "range": "stddev: 0.000006458508843420914", + "extra": "mean: 133.15387824848665 usec\nrounds: 5618" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 13127.952832055811, + "unit": "iter/sec", + "range": "stddev: 0.000003833203944600324", + "extra": "mean: 76.17333888938128 usec\nrounds: 8159" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 9445.757849769585, + "unit": "iter/sec", + "range": "stddev: 0.000006115348372693172", + "extra": "mean: 105.8676303060631 usec\nrounds: 6078" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 5908.524695066223, + "unit": "iter/sec", + "range": "stddev: 0.0000063997466317777695", + "extra": "mean: 169.24698661833926 usec\nrounds: 4409" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 7879.496132002836, + "unit": "iter/sec", + "range": "stddev: 0.000022442599148653908", + "extra": "mean: 126.91166836651733 usec\nrounds: 5883" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 51285.658344144955, + "unit": "iter/sec", + "range": "stddev: 0.000001037523106353699", + "extra": "mean: 19.49862851110627 usec\nrounds: 2848" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 45294.1189027515, + "unit": "iter/sec", + "range": "stddev: 0.0000020079117088294972", + "extra": "mean: 22.077921465853983 usec\nrounds: 1910" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 25328.134382378274, + "unit": "iter/sec", + "range": "stddev: 0.000002622715627446277", + "extra": "mean: 39.48178673182251 usec\nrounds: 12496" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 104.81436039679852, + "unit": "iter/sec", + "range": "stddev: 0.00021286154536388457", + "extra": "mean: 9.540677405407745 msec\nrounds: 37" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 123.9844720607691, + "unit": "iter/sec", + "range": "stddev: 0.0011162971229922577", + "extra": "mean: 8.065526137094533 msec\nrounds: 124" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 154.05969521823357, + "unit": "iter/sec", + "range": "stddev: 0.00013185663098455423", + "extra": "mean: 6.490990382549102 msec\nrounds: 149" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 119.91539212055162, + "unit": "iter/sec", + "range": "stddev: 0.00016492876546623923", + "extra": "mean: 8.339213026086712 msec\nrounds: 115" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 97.94189002808754, + "unit": "iter/sec", + "range": "stddev: 0.00014364916410441385", + "extra": "mean: 10.210135823529875 msec\nrounds: 85" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 43.41974076150884, + "unit": "iter/sec", + "range": "stddev: 0.00016316521295248984", + "extra": "mean: 23.0309988604651 msec\nrounds: 43" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 108.57630028860346, + "unit": "iter/sec", + "range": "stddev: 0.0001232459800739028", + "extra": "mean: 9.210113048077062 msec\nrounds: 104" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 92.37253203672806, + "unit": "iter/sec", + "range": "stddev: 0.0002427269702117992", + "extra": "mean: 10.825729012195877 msec\nrounds: 82" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 22.708570827958834, + "unit": "iter/sec", + "range": "stddev: 0.00018372247481421923", + "extra": "mean: 44.03623669565317 msec\nrounds: 23" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 393.93181501520615, + "unit": "iter/sec", + "range": "stddev: 0.00008001428894340238", + "extra": "mean: 2.538510376374142 msec\nrounds: 364" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 114.64331651226422, + "unit": "iter/sec", + "range": "stddev: 0.00014897591659156377", + "extra": "mean: 8.722706481480957 msec\nrounds: 108" + } + ] + }, + { + "commit": { + "author": { + "email": "alastair@interaction.net.au", + "name": "Alastair Weakley", + "username": "aweakley" + }, + "committer": { + "email": "alastair@interaction.net.au", + "name": "Alastair Weakley", + "username": "aweakley" + }, + "distinct": true, + "id": "13a8315234dae048461e8b2bd53b840f0bea8e12", + "message": "Do not auto-push when using external-data file", + "timestamp": "2024-05-27T15:44:12+10:00", + "tree_id": "10650b227293e2be84fca11b0afca9226a02d628", + "url": "https://github.com/ixc/python-edtf/commit/13a8315234dae048461e8b2bd53b840f0bea8e12" + }, + "date": 1716788704529, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 80895.25059653397, + "unit": "iter/sec", + "range": "stddev: 0.0000011158454702679946", + "extra": "mean: 12.36166514876766 usec\nrounds: 2416" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 8686.3861125646, + "unit": "iter/sec", + "range": "stddev: 0.0000048290998392474175", + "extra": "mean: 115.1226743827942 usec\nrounds: 648" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 10799.927506191993, + "unit": "iter/sec", + "range": "stddev: 0.000005038031865957768", + "extra": "mean: 92.59321411432286 usec\nrounds: 7496" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 7035.492530171884, + "unit": "iter/sec", + "range": "stddev: 0.000005406577894040264", + "extra": "mean: 142.13645963114527 usec\nrounds: 5363" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 12547.947096421412, + "unit": "iter/sec", + "range": "stddev: 0.0000087656794355028", + "extra": "mean: 79.69431113438414 usec\nrounds: 8604" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 9045.034736076355, + "unit": "iter/sec", + "range": "stddev: 0.000011749369969628539", + "extra": "mean: 110.55789493117966 usec\nrounds: 6234" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 5750.344169082376, + "unit": "iter/sec", + "range": "stddev: 0.000018786651567396208", + "extra": "mean: 173.90263445041364 usec\nrounds: 2566" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 7760.513470687217, + "unit": "iter/sec", + "range": "stddev: 0.000005751771090493778", + "extra": "mean: 128.8574530251343 usec\nrounds: 5620" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 48530.939706936355, + "unit": "iter/sec", + "range": "stddev: 0.0000027114099545493194", + "extra": "mean: 20.605411847343102 usec\nrounds: 2853" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 42890.80746578856, + "unit": "iter/sec", + "range": "stddev: 0.000001138619831323524", + "extra": "mean: 23.315019210063614 usec\nrounds: 1874" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 24783.34046957927, + "unit": "iter/sec", + "range": "stddev: 0.000003370961875943763", + "extra": "mean: 40.34968575876472 usec\nrounds: 13496" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 98.509807121932, + "unit": "iter/sec", + "range": "stddev: 0.0001869543276032091", + "extra": "mean: 10.151273555558127 msec\nrounds: 36" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 117.19487854020294, + "unit": "iter/sec", + "range": "stddev: 0.0013403340369566301", + "extra": "mean: 8.532796078259995 msec\nrounds: 115" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 143.7233576051997, + "unit": "iter/sec", + "range": "stddev: 0.0001333191609729257", + "extra": "mean: 6.9578112887325245 msec\nrounds: 142" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 112.86224082696839, + "unit": "iter/sec", + "range": "stddev: 0.0001495683081735868", + "extra": "mean: 8.860359254545745 msec\nrounds: 110" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 90.26908641051675, + "unit": "iter/sec", + "range": "stddev: 0.00010674817823486479", + "extra": "mean: 11.077989594935078 msec\nrounds: 79" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 40.29339194143696, + "unit": "iter/sec", + "range": "stddev: 0.0003052204169190156", + "extra": "mean: 24.817965225003036 msec\nrounds: 40" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 100.88763646770417, + "unit": "iter/sec", + "range": "stddev: 0.00014600013448814019", + "extra": "mean: 9.9120173195862 msec\nrounds: 97" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 85.00968666678443, + "unit": "iter/sec", + "range": "stddev: 0.00032337823360904604", + "extra": "mean: 11.76336531999861 msec\nrounds: 75" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 21.24348956339174, + "unit": "iter/sec", + "range": "stddev: 0.00024890632162062913", + "extra": "mean: 47.073245523808374 msec\nrounds: 21" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 367.4492157295492, + "unit": "iter/sec", + "range": "stddev: 0.00007273298709793496", + "extra": "mean: 2.72146451044822 msec\nrounds: 335" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 105.36885119797873, + "unit": "iter/sec", + "range": "stddev: 0.00021127552800075938", + "extra": "mean: 9.490470747575 msec\nrounds: 103" + } + ] + }, + { + "commit": { + "author": { + "email": "alastair@interaction.net.au", + "name": "Alastair Weakley", + "username": "aweakley" + }, + "committer": { + "email": "alastair@interaction.net.au", + "name": "Alastair Weakley", + "username": "aweakley" + }, + "distinct": true, + "id": "13a8315234dae048461e8b2bd53b840f0bea8e12", + "message": "Do not auto-push when using external-data file", + "timestamp": "2024-05-27T15:44:12+10:00", + "tree_id": "10650b227293e2be84fca11b0afca9226a02d628", + "url": "https://github.com/ixc/python-edtf/commit/13a8315234dae048461e8b2bd53b840f0bea8e12" + }, + "date": 1716788703620, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 82698.96272913738, + "unit": "iter/sec", + "range": "stddev: 8.948941141817517e-7", + "extra": "mean: 12.092050093485264 usec\nrounds: 2675" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 8717.271365044537, + "unit": "iter/sec", + "range": "stddev: 0.000005404016540409833", + "extra": "mean: 114.71479527526343 usec\nrounds: 762" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 10853.662304736643, + "unit": "iter/sec", + "range": "stddev: 0.000004797654651497238", + "extra": "mean: 92.13479947350032 usec\nrounds: 6837" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 7160.855932227085, + "unit": "iter/sec", + "range": "stddev: 0.000005507169361594085", + "extra": "mean: 139.64811043042332 usec\nrounds: 5225" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 12724.493268323535, + "unit": "iter/sec", + "range": "stddev: 0.000004096859614576888", + "extra": "mean: 78.58859122425007 usec\nrounds: 8660" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 8997.429527668288, + "unit": "iter/sec", + "range": "stddev: 0.000004496932508736294", + "extra": "mean: 111.14285440356798 usec\nrounds: 6154" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 5692.301239396736, + "unit": "iter/sec", + "range": "stddev: 0.000016304773353452347", + "extra": "mean: 175.6758748252717 usec\nrounds: 4298" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 7722.617093723777, + "unit": "iter/sec", + "range": "stddev: 0.000005878834831557549", + "extra": "mean: 129.48978149035858 usec\nrounds: 5716" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 50270.1167988129, + "unit": "iter/sec", + "range": "stddev: 0.0000013332070986778065", + "extra": "mean: 19.892533848730075 usec\nrounds: 3102" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 42535.15632318498, + "unit": "iter/sec", + "range": "stddev: 0.0000017718609312321423", + "extra": "mean: 23.509964143588252 usec\nrounds: 753" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 24488.899810413302, + "unit": "iter/sec", + "range": "stddev: 0.000002424908640158094", + "extra": "mean: 40.83482752356129 usec\nrounds: 13770" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 100.37121098781108, + "unit": "iter/sec", + "range": "stddev: 0.00012346931640077807", + "extra": "mean: 9.963016189188338 msec\nrounds: 37" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 119.58868255029223, + "unit": "iter/sec", + "range": "stddev: 0.0010148559816574388", + "extra": "mean: 8.361995288136539 msec\nrounds: 118" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 147.60585986039666, + "unit": "iter/sec", + "range": "stddev: 0.00012025014624097081", + "extra": "mean: 6.774798784721586 msec\nrounds: 144" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 114.27381722812592, + "unit": "iter/sec", + "range": "stddev: 0.0001251008515521271", + "extra": "mean: 8.750910963302209 msec\nrounds: 109" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 92.95589105214987, + "unit": "iter/sec", + "range": "stddev: 0.00023732689378825833", + "extra": "mean: 10.757790481928495 msec\nrounds: 83" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 40.82487943430111, + "unit": "iter/sec", + "range": "stddev: 0.00017370089289944502", + "extra": "mean: 24.49486719512021 msec\nrounds: 41" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 103.55212793410065, + "unit": "iter/sec", + "range": "stddev: 0.00016795917835967826", + "extra": "mean: 9.656971999999731 msec\nrounds: 97" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 87.85845761023317, + "unit": "iter/sec", + "range": "stddev: 0.00010702969097625384", + "extra": "mean: 11.381943494117596 msec\nrounds: 85" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 21.580378728858577, + "unit": "iter/sec", + "range": "stddev: 0.00017113980518562502", + "extra": "mean: 46.338389727272954 msec\nrounds: 22" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 376.4614229749716, + "unit": "iter/sec", + "range": "stddev: 0.00006197561199848896", + "extra": "mean: 2.6563146685722523 msec\nrounds: 350" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 109.44488333890168, + "unit": "iter/sec", + "range": "stddev: 0.00008336944627996964", + "extra": "mean: 9.137019196260175 msec\nrounds: 107" + } + ] + }, + { + "commit": { + "author": { + "email": "alastair@interaction.net.au", + "name": "Alastair Weakley", + "username": "aweakley" + }, + "committer": { + "email": "alastair@interaction.net.au", + "name": "Alastair Weakley", + "username": "aweakley" + }, + "distinct": true, + "id": "57af55917d8baba8c334ab2bf7c0bce0d465d0ed", + "message": "GH token required for comment-always", + "timestamp": "2024-05-27T15:47:14+10:00", + "tree_id": "754b0f190179195e6d5b9ecbf8f2d84629c8cc92", + "url": "https://github.com/ixc/python-edtf/commit/57af55917d8baba8c334ab2bf7c0bce0d465d0ed" + }, + "date": 1716788885359, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 83145.31123765919, + "unit": "iter/sec", + "range": "stddev: 0.0000038449208492781715", + "extra": "mean: 12.027136408710295 usec\nrounds: 1994" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 8850.006387981433, + "unit": "iter/sec", + "range": "stddev: 0.000004973784051735898", + "extra": "mean: 112.99426872256603 usec\nrounds: 681" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 11355.541438312745, + "unit": "iter/sec", + "range": "stddev: 0.000009778485917295933", + "extra": "mean: 88.062731788911 usec\nrounds: 7468" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 7584.665215630892, + "unit": "iter/sec", + "range": "stddev: 0.0000061908567080837525", + "extra": "mean: 131.84497556189368 usec\nrounds: 5606" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 13266.471761868468, + "unit": "iter/sec", + "range": "stddev: 0.000004190472598923141", + "extra": "mean: 75.37799182404159 usec\nrounds: 8684" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 9392.911299727075, + "unit": "iter/sec", + "range": "stddev: 0.000004770300207040104", + "extra": "mean: 106.46326448638523 usec\nrounds: 6299" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 6063.103704361849, + "unit": "iter/sec", + "range": "stddev: 0.000009532226807516151", + "extra": "mean: 164.93202966008835 usec\nrounds: 4619" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 8188.172551705493, + "unit": "iter/sec", + "range": "stddev: 0.000005388911526168896", + "extra": "mean: 122.12737258348477 usec\nrounds: 5121" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 51633.48372745142, + "unit": "iter/sec", + "range": "stddev: 0.0000014158548580022152", + "extra": "mean: 19.367277352009094 usec\nrounds: 2870" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 46648.85654840566, + "unit": "iter/sec", + "range": "stddev: 0.000001678939832689382", + "extra": "mean: 21.436752666431165 usec\nrounds: 1969" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 25110.70603776918, + "unit": "iter/sec", + "range": "stddev: 0.0000027165253985539826", + "extra": "mean: 39.82365125440492 usec\nrounds: 10403" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 103.90530941782221, + "unit": "iter/sec", + "range": "stddev: 0.0002540701929655922", + "extra": "mean: 9.624147270269102 msec\nrounds: 37" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 123.98609037248124, + "unit": "iter/sec", + "range": "stddev: 0.0013756340181688962", + "extra": "mean: 8.065420862903105 msec\nrounds: 124" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 155.22900405369813, + "unit": "iter/sec", + "range": "stddev: 0.00012822078019738116", + "extra": "mean: 6.442095058820782 msec\nrounds: 153" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 119.63884724319132, + "unit": "iter/sec", + "range": "stddev: 0.00014533633469374752", + "extra": "mean: 8.358489094827936 msec\nrounds: 116" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 96.41215815727729, + "unit": "iter/sec", + "range": "stddev: 0.00010859673089454983", + "extra": "mean: 10.372135829266456 msec\nrounds: 82" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 42.896736150657155, + "unit": "iter/sec", + "range": "stddev: 0.00021904463488974188", + "extra": "mean: 23.31179688095409 msec\nrounds: 42" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 108.06662062069886, + "unit": "iter/sec", + "range": "stddev: 0.00017238245175072993", + "extra": "mean: 9.253551135922743 msec\nrounds: 103" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 91.74215330161674, + "unit": "iter/sec", + "range": "stddev: 0.00030091914375046273", + "extra": "mean: 10.900114767443304 msec\nrounds: 86" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 22.718057681453455, + "unit": "iter/sec", + "range": "stddev: 0.00025388821495139183", + "extra": "mean: 44.01784756521589 msec\nrounds: 23" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 400.16195996975415, + "unit": "iter/sec", + "range": "stddev: 0.00006304255437443394", + "extra": "mean: 2.498988159883023 msec\nrounds: 344" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 115.55622728366868, + "unit": "iter/sec", + "range": "stddev: 0.00008712569876445537", + "extra": "mean: 8.653795849056142 msec\nrounds: 106" + } + ] + }, + { + "commit": { + "author": { + "email": "alastair@interaction.net.au", + "name": "Alastair Weakley", + "username": "aweakley" + }, + "committer": { + "email": "alastair@interaction.net.au", + "name": "Alastair Weakley", + "username": "aweakley" + }, + "distinct": true, + "id": "57af55917d8baba8c334ab2bf7c0bce0d465d0ed", + "message": "GH token required for comment-always", + "timestamp": "2024-05-27T15:47:14+10:00", + "tree_id": "754b0f190179195e6d5b9ecbf8f2d84629c8cc92", + "url": "https://github.com/ixc/python-edtf/commit/57af55917d8baba8c334ab2bf7c0bce0d465d0ed" + }, + "date": 1716788885536, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 112893.9854121553, + "unit": "iter/sec", + "range": "stddev: 6.798765756359516e-7", + "extra": "mean: 8.857867815979592 usec\nrounds: 2958" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 11547.422645303432, + "unit": "iter/sec", + "range": "stddev: 0.000004725692515473561", + "extra": "mean: 86.59941103019382 usec\nrounds: 961" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 14414.73539694319, + "unit": "iter/sec", + "range": "stddev: 0.0000037325996703161355", + "extra": "mean: 69.37345518059676 usec\nrounds: 9159" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 9396.432309986401, + "unit": "iter/sec", + "range": "stddev: 0.0000051719302903859005", + "extra": "mean: 106.42337080821767 usec\nrounds: 6680" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 16925.734912567274, + "unit": "iter/sec", + "range": "stddev: 0.000003219726635297415", + "extra": "mean: 59.081629552020516 usec\nrounds: 10023" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 12058.816257893588, + "unit": "iter/sec", + "range": "stddev: 0.000004121840397431902", + "extra": "mean: 82.92687927352814 usec\nrounds: 7049" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 7527.128487774745, + "unit": "iter/sec", + "range": "stddev: 0.0000057725657689765645", + "extra": "mean: 132.85278730450256 usec\nrounds: 5435" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 10011.515162590485, + "unit": "iter/sec", + "range": "stddev: 0.000012293028975123367", + "extra": "mean: 99.8849808205504 usec\nrounds: 6726" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 68902.8392062796, + "unit": "iter/sec", + "range": "stddev: 0.000001139501536105632", + "extra": "mean: 14.513190044407674 usec\nrounds: 3636" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 57086.18292849918, + "unit": "iter/sec", + "range": "stddev: 0.0000011213466289705938", + "extra": "mean: 17.517373709370382 usec\nrounds: 2518" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 33208.26779454793, + "unit": "iter/sec", + "range": "stddev: 0.000002398965786029264", + "extra": "mean: 30.112982892898074 usec\nrounds: 13854" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 118.19753121323438, + "unit": "iter/sec", + "range": "stddev: 0.0001500465500993998", + "extra": "mean: 8.460413595237863 msec\nrounds: 42" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 137.55260467564074, + "unit": "iter/sec", + "range": "stddev: 0.0013152234272262376", + "extra": "mean: 7.269945940740811 msec\nrounds: 135" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 170.08785586427507, + "unit": "iter/sec", + "range": "stddev: 0.00010276449635261066", + "extra": "mean: 5.879314516128473 msec\nrounds: 155" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 132.4814405054467, + "unit": "iter/sec", + "range": "stddev: 0.00010072507483446273", + "extra": "mean: 7.54822710399867 msec\nrounds: 125" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 109.0588649872902, + "unit": "iter/sec", + "range": "stddev: 0.00009368202665388659", + "extra": "mean: 9.169360052633417 msec\nrounds: 95" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 47.99285031951852, + "unit": "iter/sec", + "range": "stddev: 0.0002895079082215163", + "extra": "mean: 20.836436955554262 msec\nrounds: 45" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 119.64286359577682, + "unit": "iter/sec", + "range": "stddev: 0.00012392865635486112", + "extra": "mean: 8.35820850442515 msec\nrounds: 113" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 104.79082842973287, + "unit": "iter/sec", + "range": "stddev: 0.00009264823742798444", + "extra": "mean: 9.542819872547783 msec\nrounds: 102" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 22.152097705815237, + "unit": "iter/sec", + "range": "stddev: 0.0001967802097078776", + "extra": "mean: 45.14245166666477 msec\nrounds: 21" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 415.0186037787065, + "unit": "iter/sec", + "range": "stddev: 0.00005558464137820686", + "extra": "mean: 2.409530538860406 msec\nrounds: 386" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 125.44140111154775, + "unit": "iter/sec", + "range": "stddev: 0.00019946117433803696", + "extra": "mean: 7.971849733332922 msec\nrounds: 120" + } + ] + }, + { + "commit": { + "author": { + "email": "alastair@interaction.net.au", + "name": "Alastair Weakley", + "username": "aweakley" + }, + "committer": { + "email": "alastair@interaction.net.au", + "name": "Alastair Weakley", + "username": "aweakley" + }, + "distinct": true, + "id": "57af55917d8baba8c334ab2bf7c0bce0d465d0ed", + "message": "GH token required for comment-always", + "timestamp": "2024-05-27T15:47:14+10:00", + "tree_id": "754b0f190179195e6d5b9ecbf8f2d84629c8cc92", + "url": "https://github.com/ixc/python-edtf/commit/57af55917d8baba8c334ab2bf7c0bce0d465d0ed" + }, + "date": 1716788891308, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 80487.47702643998, + "unit": "iter/sec", + "range": "stddev: 9.219618708923641e-7", + "extra": "mean: 12.424293032212972 usec\nrounds: 2655" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 8550.506423150167, + "unit": "iter/sec", + "range": "stddev: 0.0000063974986947456845", + "extra": "mean: 116.95213716143626 usec\nrounds: 627" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 10534.626082041554, + "unit": "iter/sec", + "range": "stddev: 0.000005076443907166163", + "extra": "mean: 94.92505877400875 usec\nrounds: 7129" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 7019.376716524396, + "unit": "iter/sec", + "range": "stddev: 0.000005811341593889866", + "extra": "mean: 142.46279126833133 usec\nrounds: 5337" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 12681.089375048721, + "unit": "iter/sec", + "range": "stddev: 0.000004271983605641212", + "extra": "mean: 78.85757843230704 usec\nrounds: 8383" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 8439.681643402353, + "unit": "iter/sec", + "range": "stddev: 0.00004249809595666835", + "extra": "mean: 118.48788168233112 usec\nrounds: 6491" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 5684.082278804863, + "unit": "iter/sec", + "range": "stddev: 0.0000075723957846359", + "extra": "mean: 175.9298952671495 usec\nrounds: 4268" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 7643.007864391932, + "unit": "iter/sec", + "range": "stddev: 0.000006258454103189467", + "extra": "mean: 130.83854128410724 usec\nrounds: 5668" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 49772.3180144735, + "unit": "iter/sec", + "range": "stddev: 0.000001745213197279059", + "extra": "mean: 20.091489403993716 usec\nrounds: 3020" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 42562.87825109222, + "unit": "iter/sec", + "range": "stddev: 0.0000013074893161486979", + "extra": "mean: 23.4946517033147 usec\nrounds: 1938" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 24408.108549711465, + "unit": "iter/sec", + "range": "stddev: 0.0000029587686779004516", + "extra": "mean: 40.96999150767138 usec\nrounds: 12835" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 98.96116771267367, + "unit": "iter/sec", + "range": "stddev: 0.00019091423466739945", + "extra": "mean: 10.10497372973028 msec\nrounds: 37" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 117.49578910908133, + "unit": "iter/sec", + "range": "stddev: 0.0012271840664689168", + "extra": "mean: 8.510943307692626 msec\nrounds: 117" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 145.08840033007576, + "unit": "iter/sec", + "range": "stddev: 0.00029633368460420457", + "extra": "mean: 6.89234975177204 msec\nrounds: 141" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 114.67827064412367, + "unit": "iter/sec", + "range": "stddev: 0.00014173902465264472", + "extra": "mean: 8.720047785715732 msec\nrounds: 112" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 90.88970423847043, + "unit": "iter/sec", + "range": "stddev: 0.0001067751816294075", + "extra": "mean: 11.00234628749881 msec\nrounds: 80" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 40.51946631803106, + "unit": "iter/sec", + "range": "stddev: 0.0005132666823936959", + "extra": "mean: 24.679495829267687 msec\nrounds: 41" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 102.3376683332792, + "unit": "iter/sec", + "range": "stddev: 0.00018392131921062758", + "extra": "mean: 9.771573031577562 msec\nrounds: 95" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 87.12799840299708, + "unit": "iter/sec", + "range": "stddev: 0.00010279456217683726", + "extra": "mean: 11.477366843372835 msec\nrounds: 83" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 21.102804231168157, + "unit": "iter/sec", + "range": "stddev: 0.000841263691928653", + "extra": "mean: 47.387067095236205 msec\nrounds: 21" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 370.32778873152716, + "unit": "iter/sec", + "range": "stddev: 0.00006356007204136725", + "extra": "mean: 2.7003104558404067 msec\nrounds: 351" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 107.04038534805876, + "unit": "iter/sec", + "range": "stddev: 0.00013040897801741352", + "extra": "mean: 9.342268310678643 msec\nrounds: 103" + } + ] + }, + { + "commit": { + "author": { + "email": "alastair@interaction.net.au", + "name": "Alastair Weakley", + "username": "aweakley" + }, + "committer": { + "email": "alastair@interaction.net.au", + "name": "Alastair Weakley", + "username": "aweakley" + }, + "distinct": true, + "id": "57af55917d8baba8c334ab2bf7c0bce0d465d0ed", + "message": "GH token required for comment-always", + "timestamp": "2024-05-27T15:47:14+10:00", + "tree_id": "754b0f190179195e6d5b9ecbf8f2d84629c8cc92", + "url": "https://github.com/ixc/python-edtf/commit/57af55917d8baba8c334ab2bf7c0bce0d465d0ed" + }, + "date": 1716788893870, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 68434.64599536272, + "unit": "iter/sec", + "range": "stddev: 0.0000010053442461761531", + "extra": "mean: 14.612481520950107 usec\nrounds: 1867" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 8191.308232151351, + "unit": "iter/sec", + "range": "stddev: 0.000007507945149326492", + "extra": "mean: 122.08062151475914 usec\nrounds: 753" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 9939.483265145109, + "unit": "iter/sec", + "range": "stddev: 0.00000605617546942557", + "extra": "mean: 100.60885192157933 usec\nrounds: 4241" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 6750.544697617542, + "unit": "iter/sec", + "range": "stddev: 0.000005813485641448076", + "extra": "mean: 148.13619415821782 usec\nrounds: 3492" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 11650.198094518913, + "unit": "iter/sec", + "range": "stddev: 0.000004305513193610967", + "extra": "mean: 85.83545034058018 usec\nrounds: 4994" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 8489.596741094409, + "unit": "iter/sec", + "range": "stddev: 0.000006537955738353538", + "extra": "mean: 117.7912250130138 usec\nrounds: 3702" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 5675.863539131008, + "unit": "iter/sec", + "range": "stddev: 0.000009460683583238387", + "extra": "mean: 176.1846445224973 usec\nrounds: 3131" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 7386.1932920958, + "unit": "iter/sec", + "range": "stddev: 0.0000056516297166324185", + "extra": "mean: 135.38773769569931 usec\nrounds: 3576" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 50504.916209348965, + "unit": "iter/sec", + "range": "stddev: 0.0000011875187156472927", + "extra": "mean: 19.80005264942683 usec\nrounds: 2925" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 44887.15863188779, + "unit": "iter/sec", + "range": "stddev: 0.0000017179801346128252", + "extra": "mean: 22.278086438948733 usec\nrounds: 1932" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 22464.149072431643, + "unit": "iter/sec", + "range": "stddev: 0.000003147934794812018", + "extra": "mean: 44.51537410901603 usec\nrounds: 6172" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 89.23359909873324, + "unit": "iter/sec", + "range": "stddev: 0.0002077469269307148", + "extra": "mean: 11.206541147057644 msec\nrounds: 34" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 105.35846004100675, + "unit": "iter/sec", + "range": "stddev: 0.001107506046690284", + "extra": "mean: 9.491406761362953 msec\nrounds: 88" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 133.69067503168435, + "unit": "iter/sec", + "range": "stddev: 0.00011991222869326704", + "extra": "mean: 7.479953255999362 msec\nrounds: 125" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 102.75723597069889, + "unit": "iter/sec", + "range": "stddev: 0.00012675464951289838", + "extra": "mean: 9.731674762886275 msec\nrounds: 97" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 84.33269381236221, + "unit": "iter/sec", + "range": "stddev: 0.00013019847651738378", + "extra": "mean: 11.85779743055488 msec\nrounds: 72" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 36.116442783780414, + "unit": "iter/sec", + "range": "stddev: 0.003294271978844574", + "extra": "mean: 27.68821962857016 msec\nrounds: 35" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 91.0699076585793, + "unit": "iter/sec", + "range": "stddev: 0.0005960942979746735", + "extra": "mean: 10.98057553488465 msec\nrounds: 86" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 81.4315426038258, + "unit": "iter/sec", + "range": "stddev: 0.0001362918294020205", + "extra": "mean: 12.280253671051275 msec\nrounds: 76" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 17.560477750813288, + "unit": "iter/sec", + "range": "stddev: 0.00043793563692544877", + "extra": "mean: 56.9460588823494 msec\nrounds: 17" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 311.67441712879275, + "unit": "iter/sec", + "range": "stddev: 0.00008281339576975147", + "extra": "mean: 3.208476362006868 msec\nrounds: 279" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 97.90755318952674, + "unit": "iter/sec", + "range": "stddev: 0.00012130635036476241", + "extra": "mean: 10.213716586954506 msec\nrounds: 92" + } + ] + }, + { + "commit": { + "author": { + "email": "alastair@interaction.net.au", + "name": "Alastair Weakley", + "username": "aweakley" + }, + "committer": { + "email": "alastair@interaction.net.au", + "name": "Alastair Weakley", + "username": "aweakley" + }, + "distinct": true, + "id": "57af55917d8baba8c334ab2bf7c0bce0d465d0ed", + "message": "GH token required for comment-always", + "timestamp": "2024-05-27T15:47:14+10:00", + "tree_id": "754b0f190179195e6d5b9ecbf8f2d84629c8cc92", + "url": "https://github.com/ixc/python-edtf/commit/57af55917d8baba8c334ab2bf7c0bce0d465d0ed" + }, + "date": 1716788898807, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 84875.10357891285, + "unit": "iter/sec", + "range": "stddev: 0.0000010612541830930172", + "extra": "mean: 11.782018022166504 usec\nrounds: 2275" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 8684.30321655987, + "unit": "iter/sec", + "range": "stddev: 0.000006922901319409251", + "extra": "mean: 115.15028610391286 usec\nrounds: 734" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 10761.311278815432, + "unit": "iter/sec", + "range": "stddev: 0.000004661498869572352", + "extra": "mean: 92.92547851195292 usec\nrounds: 7446" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 7094.311544799572, + "unit": "iter/sec", + "range": "stddev: 0.000006306604999723977", + "extra": "mean: 140.95800468941093 usec\nrounds: 5118" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 12851.232234472725, + "unit": "iter/sec", + "range": "stddev: 0.000004959217298646781", + "extra": "mean: 77.81354984135723 usec\nrounds: 8517" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 9013.12001250216, + "unit": "iter/sec", + "range": "stddev: 0.000007045139191734287", + "extra": "mean: 110.94937142886073 usec\nrounds: 6055" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 5675.102701726033, + "unit": "iter/sec", + "range": "stddev: 0.000009792092632669285", + "extra": "mean: 176.20826486467965 usec\nrounds: 4440" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 7771.582289416133, + "unit": "iter/sec", + "range": "stddev: 0.000007099879078503407", + "extra": "mean: 128.67392543238816 usec\nrounds: 5552" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 48733.8946012003, + "unit": "iter/sec", + "range": "stddev: 0.0000017052671024514293", + "extra": "mean: 20.51959951453111 usec\nrounds: 2884" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 43064.41758677273, + "unit": "iter/sec", + "range": "stddev: 0.0000032576701019987967", + "extra": "mean: 23.221026918221945 usec\nrounds: 743" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 24676.1617401072, + "unit": "iter/sec", + "range": "stddev: 0.000002723101271355311", + "extra": "mean: 40.52494105575009 usec\nrounds: 13148" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 101.39015763494466, + "unit": "iter/sec", + "range": "stddev: 0.00015629731550976535", + "extra": "mean: 9.862890277777266 msec\nrounds: 36" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 120.6670982356324, + "unit": "iter/sec", + "range": "stddev: 0.0010892893180844542", + "extra": "mean: 8.287263177964652 msec\nrounds: 118" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 148.2218518654385, + "unit": "iter/sec", + "range": "stddev: 0.0001278849131399211", + "extra": "mean: 6.746643544218017 msec\nrounds: 147" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 115.398452868853, + "unit": "iter/sec", + "range": "stddev: 0.00018998676909527735", + "extra": "mean: 8.665627442479416 msec\nrounds: 113" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 93.1187525033988, + "unit": "iter/sec", + "range": "stddev: 0.00015759733592843393", + "extra": "mean: 10.738975481479956 msec\nrounds: 81" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 41.26875671157594, + "unit": "iter/sec", + "range": "stddev: 0.00026944857894894807", + "extra": "mean: 24.231406024390814 msec\nrounds: 41" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 104.74328005999232, + "unit": "iter/sec", + "range": "stddev: 0.00014228529101383184", + "extra": "mean: 9.547151850001683 msec\nrounds: 100" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 88.41307994044472, + "unit": "iter/sec", + "range": "stddev: 0.00014055650788732883", + "extra": "mean: 11.310543651161147 msec\nrounds: 86" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 21.690257954134843, + "unit": "iter/sec", + "range": "stddev: 0.00045489057877529934", + "extra": "mean: 46.1036471818155 msec\nrounds: 22" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 380.0322612326248, + "unit": "iter/sec", + "range": "stddev: 0.00008859477387270669", + "extra": "mean: 2.631355550595957 msec\nrounds: 336" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 109.97286284257747, + "unit": "iter/sec", + "range": "stddev: 0.0001891699712308381", + "extra": "mean: 9.093152384615713 msec\nrounds: 104" + } + ] + }, + { + "commit": { + "author": { + "email": "alastair@interaction.net.au", + "name": "Alastair Weakley", + "username": "aweakley" + }, + "committer": { + "email": "alastair@interaction.net.au", + "name": "Alastair Weakley", + "username": "aweakley" + }, + "distinct": true, + "id": "90558b6bede78d310755e303328745ad4c70c087", + "message": "Activate packrat #50", + "timestamp": "2024-05-27T16:16:32+10:00", + "tree_id": "4a09888674f4922bac6171ea174672a55a6af72c", + "url": "https://github.com/ixc/python-edtf/commit/90558b6bede78d310755e303328745ad4c70c087" + }, + "date": 1716790641325, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 112164.71808319342, + "unit": "iter/sec", + "range": "stddev: 9.98316312239759e-7", + "extra": "mean: 8.915459487521668 usec\nrounds: 2888" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 11218.250306340124, + "unit": "iter/sec", + "range": "stddev: 0.000005655589559511426", + "extra": "mean: 89.14046065052038 usec\nrounds: 953" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 13859.108314315828, + "unit": "iter/sec", + "range": "stddev: 0.0000045840588507152764", + "extra": "mean: 72.1547142370657 usec\nrounds: 8801" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 9412.95192830155, + "unit": "iter/sec", + "range": "stddev: 0.0000048255593466791135", + "extra": "mean: 106.23659906233448 usec\nrounds: 6612" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 16710.731326875968, + "unit": "iter/sec", + "range": "stddev: 0.0000036761163088080234", + "extra": "mean: 59.84178552327594 usec\nrounds: 10099" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 11767.853978595405, + "unit": "iter/sec", + "range": "stddev: 0.000004932973051450554", + "extra": "mean: 84.97726108931194 usec\nrounds: 7124" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 7495.452229289731, + "unit": "iter/sec", + "range": "stddev: 0.000005528533990848", + "extra": "mean: 133.41423164466755 usec\nrounds: 5448" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 10177.536480537576, + "unit": "iter/sec", + "range": "stddev: 0.0000046604503550862755", + "extra": "mean: 98.25560457703023 usec\nrounds: 6904" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 66946.0987691484, + "unit": "iter/sec", + "range": "stddev: 8.83602703300843e-7", + "extra": "mean: 14.93739020474248 usec\nrounds: 3757" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 57081.79515461713, + "unit": "iter/sec", + "range": "stddev: 0.0000010052924259916114", + "extra": "mean: 17.518720238060236 usec\nrounds: 2352" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 32459.851194026985, + "unit": "iter/sec", + "range": "stddev: 0.0000025985021189431517", + "extra": "mean: 30.807288487632142 usec\nrounds: 11075" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 148.98223225271286, + "unit": "iter/sec", + "range": "stddev: 0.0005516647126996291", + "extra": "mean: 6.712209804345919 msec\nrounds: 46" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 155.71903451338684, + "unit": "iter/sec", + "range": "stddev: 0.001823899760184393", + "extra": "mean: 6.421822503105951 msec\nrounds: 161" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 186.6232110656416, + "unit": "iter/sec", + "range": "stddev: 0.0020091339325668516", + "extra": "mean: 5.358390278946956 msec\nrounds: 190" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 198.0339991833603, + "unit": "iter/sec", + "range": "stddev: 0.0015395798214818234", + "extra": "mean: 5.049637961783001 msec\nrounds: 157" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 133.72845465147665, + "unit": "iter/sec", + "range": "stddev: 0.0016577613728934414", + "extra": "mean: 7.47784009473677 msec\nrounds: 95" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 119.2824071371286, + "unit": "iter/sec", + "range": "stddev: 0.0016306917363880322", + "extra": "mean: 8.38346596116548 msec\nrounds: 103" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 249.88201637495786, + "unit": "iter/sec", + "range": "stddev: 0.001074427876286091", + "extra": "mean: 4.001888629310003 msec\nrounds: 232" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 201.7584813368213, + "unit": "iter/sec", + "range": "stddev: 0.0011835255301984706", + "extra": "mean: 4.956421129729718 msec\nrounds: 185" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 21.34686499979428, + "unit": "iter/sec", + "range": "stddev: 0.0019051751241516406", + "extra": "mean: 46.84528618181813 msec\nrounds: 22" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 490.47823355150206, + "unit": "iter/sec", + "range": "stddev: 0.00010096062329948128", + "extra": "mean: 2.0388264587382476 msec\nrounds: 412" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 111.22760324991174, + "unit": "iter/sec", + "range": "stddev: 0.0024196031021744124", + "extra": "mean: 8.99057401923109 msec\nrounds: 104" + } + ] + }, + { + "commit": { + "author": { + "email": "alastair@interaction.net.au", + "name": "Alastair Weakley", + "username": "aweakley" + }, + "committer": { + "email": "alastair@interaction.net.au", + "name": "Alastair Weakley", + "username": "aweakley" + }, + "distinct": true, + "id": "90558b6bede78d310755e303328745ad4c70c087", + "message": "Activate packrat #50", + "timestamp": "2024-05-27T16:16:32+10:00", + "tree_id": "4a09888674f4922bac6171ea174672a55a6af72c", + "url": "https://github.com/ixc/python-edtf/commit/90558b6bede78d310755e303328745ad4c70c087" + }, + "date": 1716790642691, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 88191.61166838145, + "unit": "iter/sec", + "range": "stddev: 8.279615217593002e-7", + "extra": "mean: 11.338946880347365 usec\nrounds: 2372" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 8862.838941947313, + "unit": "iter/sec", + "range": "stddev: 0.000006746236646967736", + "extra": "mean: 112.83066369028289 usec\nrounds: 672" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 11274.134043488471, + "unit": "iter/sec", + "range": "stddev: 0.000004424044404927536", + "extra": "mean: 88.6986083492207 usec\nrounds: 7402" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 7476.714178616865, + "unit": "iter/sec", + "range": "stddev: 0.000005896895119455605", + "extra": "mean: 133.74859277889266 usec\nrounds: 5567" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 13281.863143225812, + "unit": "iter/sec", + "range": "stddev: 0.0000043940747117138474", + "extra": "mean: 75.29064177340459 usec\nrounds: 8503" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 9415.775488972286, + "unit": "iter/sec", + "range": "stddev: 0.000004911073504569817", + "extra": "mean: 106.20474130582187 usec\nrounds: 6096" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 6000.549371242113, + "unit": "iter/sec", + "range": "stddev: 0.0000061431404578250095", + "extra": "mean: 166.6514077515206 usec\nrounds: 4412" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 8113.145135712529, + "unit": "iter/sec", + "range": "stddev: 0.000005294043148953206", + "extra": "mean: 123.25676211537119 usec\nrounds: 5654" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 51002.2999434752, + "unit": "iter/sec", + "range": "stddev: 0.0000012772777387825146", + "extra": "mean: 19.606958923583434 usec\nrounds: 2824" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 45898.99756037655, + "unit": "iter/sec", + "range": "stddev: 0.0000012477266693657158", + "extra": "mean: 21.786968194339714 usec\nrounds: 1855" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 24900.770890654043, + "unit": "iter/sec", + "range": "stddev: 0.0000025430162538569246", + "extra": "mean: 40.15939925680485 usec\nrounds: 10224" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 163.15140581379376, + "unit": "iter/sec", + "range": "stddev: 0.00045857171688217955", + "extra": "mean: 6.129276024389943 msec\nrounds: 41" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 162.6357896107155, + "unit": "iter/sec", + "range": "stddev: 0.002773219906926742", + "extra": "mean: 6.1487081188808235 msec\nrounds: 143" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 206.5178028213172, + "unit": "iter/sec", + "range": "stddev: 0.0016023688946070669", + "extra": "mean: 4.8421975555551375 msec\nrounds: 144" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 201.32501227843784, + "unit": "iter/sec", + "range": "stddev: 0.0021476755721520444", + "extra": "mean: 4.967092705882831 msec\nrounds: 204" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 144.74276843794286, + "unit": "iter/sec", + "range": "stddev: 0.0018564257942042474", + "extra": "mean: 6.908808023999768 msec\nrounds: 125" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 134.59157030503266, + "unit": "iter/sec", + "range": "stddev: 0.001601022199104082", + "extra": "mean: 7.429885822222316 msec\nrounds: 135" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 334.20690958341163, + "unit": "iter/sec", + "range": "stddev: 0.001066929962080457", + "extra": "mean: 2.992158364548771 msec\nrounds: 299" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 225.10241067888603, + "unit": "iter/sec", + "range": "stddev: 0.0012790178590893235", + "extra": "mean: 4.442422437787767 msec\nrounds: 217" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 33.59584457662325, + "unit": "iter/sec", + "range": "stddev: 0.0006873207465757586", + "extra": "mean: 29.765585970588237 msec\nrounds: 34" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 487.7373242601351, + "unit": "iter/sec", + "range": "stddev: 0.00010303085141408528", + "extra": "mean: 2.0502839341174743 msec\nrounds: 425" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 120.83392100384182, + "unit": "iter/sec", + "range": "stddev: 0.0026339314289791113", + "extra": "mean: 8.275821819671032 msec\nrounds: 122" + } + ] + }, + { + "commit": { + "author": { + "email": "alastair@interaction.net.au", + "name": "Alastair Weakley", + "username": "aweakley" + }, + "committer": { + "email": "alastair@interaction.net.au", + "name": "Alastair Weakley", + "username": "aweakley" + }, + "distinct": true, + "id": "90558b6bede78d310755e303328745ad4c70c087", + "message": "Activate packrat #50", + "timestamp": "2024-05-27T16:16:32+10:00", + "tree_id": "4a09888674f4922bac6171ea174672a55a6af72c", + "url": "https://github.com/ixc/python-edtf/commit/90558b6bede78d310755e303328745ad4c70c087" + }, + "date": 1716790650586, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 68291.18376282329, + "unit": "iter/sec", + "range": "stddev: 9.77451997128545e-7", + "extra": "mean: 14.64317859056333 usec\nrounds: 1859" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 8178.056612382306, + "unit": "iter/sec", + "range": "stddev: 0.000009669998886114243", + "extra": "mean: 122.27843941382247 usec\nrounds: 751" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 9873.517495004311, + "unit": "iter/sec", + "range": "stddev: 0.000005075542833698197", + "extra": "mean: 101.2810278106023 usec\nrounds: 4207" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 6745.157370146363, + "unit": "iter/sec", + "range": "stddev: 0.000006337866316376015", + "extra": "mean: 148.2545098837777 usec\nrounds: 3440" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 11539.206871368146, + "unit": "iter/sec", + "range": "stddev: 0.000004502899835891876", + "extra": "mean: 86.66106874999072 usec\nrounds: 4960" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 8502.712475475675, + "unit": "iter/sec", + "range": "stddev: 0.000006567739148436873", + "extra": "mean: 117.60952788704715 usec\nrounds: 3819" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 5683.2112623309185, + "unit": "iter/sec", + "range": "stddev: 0.000006682081545485591", + "extra": "mean: 175.95685851556024 usec\nrounds: 3018" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 7376.410202757856, + "unit": "iter/sec", + "range": "stddev: 0.000005851093002867536", + "extra": "mean: 135.5672979827132 usec\nrounds: 3272" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 49756.66649997683, + "unit": "iter/sec", + "range": "stddev: 0.0000015727130532948734", + "extra": "mean: 20.097809406111754 usec\nrounds: 2828" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 44049.369687097824, + "unit": "iter/sec", + "range": "stddev: 0.0000015387420220354445", + "extra": "mean: 22.701800436724582 usec\nrounds: 1834" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 21930.931304306912, + "unit": "iter/sec", + "range": "stddev: 0.000002878096168213469", + "extra": "mean: 45.59769879921217 usec\nrounds: 5830" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 126.8696467066333, + "unit": "iter/sec", + "range": "stddev: 0.0005476923623916252", + "extra": "mean: 7.882105972221609 msec\nrounds: 36" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 132.57891094360576, + "unit": "iter/sec", + "range": "stddev: 0.0021938257961886813", + "extra": "mean: 7.542677737225973 msec\nrounds: 137" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 158.38843080220605, + "unit": "iter/sec", + "range": "stddev: 0.0017495071995687814", + "extra": "mean: 6.3135924444430565 msec\nrounds: 153" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 161.65318702155466, + "unit": "iter/sec", + "range": "stddev: 0.0032473621046318233", + "extra": "mean: 6.1860828012420255 msec\nrounds: 161" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 115.1750743595765, + "unit": "iter/sec", + "range": "stddev: 0.0005422334720679318", + "extra": "mean: 8.682434159998895 msec\nrounds: 75" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 99.6146775086257, + "unit": "iter/sec", + "range": "stddev: 0.002460843403067601", + "extra": "mean: 10.038681296874241 msec\nrounds: 64" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 217.60710555092106, + "unit": "iter/sec", + "range": "stddev: 0.00015026551194247123", + "extra": "mean: 4.595438175000197 msec\nrounds: 200" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 170.4847541025156, + "unit": "iter/sec", + "range": "stddev: 0.0015192318797024424", + "extra": "mean: 5.865627136363651 msec\nrounds: 154" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 19.022229739097053, + "unit": "iter/sec", + "range": "stddev: 0.0006348914583522445", + "extra": "mean: 52.57007268420616 msec\nrounds: 19" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 387.09759401562184, + "unit": "iter/sec", + "range": "stddev: 0.0010731011415967598", + "extra": "mean: 2.5833278621712217 msec\nrounds: 341" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 95.99036574136485, + "unit": "iter/sec", + "range": "stddev: 0.0024378917346346137", + "extra": "mean: 10.417712155555137 msec\nrounds: 90" + } + ] + }, + { + "commit": { + "author": { + "email": "alastair@interaction.net.au", + "name": "Alastair Weakley", + "username": "aweakley" + }, + "committer": { + "email": "alastair@interaction.net.au", + "name": "Alastair Weakley", + "username": "aweakley" + }, + "distinct": true, + "id": "90558b6bede78d310755e303328745ad4c70c087", + "message": "Activate packrat #50", + "timestamp": "2024-05-27T16:16:32+10:00", + "tree_id": "4a09888674f4922bac6171ea174672a55a6af72c", + "url": "https://github.com/ixc/python-edtf/commit/90558b6bede78d310755e303328745ad4c70c087" + }, + "date": 1716790654932, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 82701.39441405577, + "unit": "iter/sec", + "range": "stddev: 9.286031820433008e-7", + "extra": "mean: 12.091694548623499 usec\nrounds: 2128" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 8556.327831067805, + "unit": "iter/sec", + "range": "stddev: 0.00000542771181677855", + "extra": "mean: 116.87256726758714 usec\nrounds: 721" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 10697.566849924391, + "unit": "iter/sec", + "range": "stddev: 0.000004862788319441421", + "extra": "mean: 93.47920083407264 usec\nrounds: 6000" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 6999.214868910949, + "unit": "iter/sec", + "range": "stddev: 0.0000055864173160416835", + "extra": "mean: 142.8731677379689 usec\nrounds: 5133" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 12448.070675191606, + "unit": "iter/sec", + "range": "stddev: 0.000008782284904741616", + "extra": "mean: 80.3337341257992 usec\nrounds: 8410" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 8994.911157431747, + "unit": "iter/sec", + "range": "stddev: 0.000005298756885292276", + "extra": "mean: 111.17397187117109 usec\nrounds: 5866" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 5667.972336361572, + "unit": "iter/sec", + "range": "stddev: 0.000006684322988568267", + "extra": "mean: 176.42993660797003 usec\nrounds: 4275" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 7662.134285484298, + "unit": "iter/sec", + "range": "stddev: 0.000005444574739970643", + "extra": "mean: 130.51193867673038 usec\nrounds: 5365" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 50358.29173877961, + "unit": "iter/sec", + "range": "stddev: 9.642170144739161e-7", + "extra": "mean: 19.857702981412412 usec\nrounds: 872" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 43525.65986315693, + "unit": "iter/sec", + "range": "stddev: 0.0000023016930824304037", + "extra": "mean: 22.97495323779038 usec\nrounds: 1946" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 24989.03520412335, + "unit": "iter/sec", + "range": "stddev: 0.000002578651757332319", + "extra": "mean: 40.01755137129078 usec\nrounds: 13198" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 159.57105755974524, + "unit": "iter/sec", + "range": "stddev: 0.0008264575139810133", + "extra": "mean: 6.266800604649678 msec\nrounds: 43" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 169.11664184067456, + "unit": "iter/sec", + "range": "stddev: 0.0018117857829203369", + "extra": "mean: 5.9130786250007485 msec\nrounds: 176" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 203.24758455559348, + "unit": "iter/sec", + "range": "stddev: 0.0016494251928108154", + "extra": "mean: 4.920107671569765 msec\nrounds: 204" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 201.22825192447155, + "unit": "iter/sec", + "range": "stddev: 0.0019135136381246895", + "extra": "mean: 4.969481126215504 msec\nrounds: 206" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 143.92242180337837, + "unit": "iter/sec", + "range": "stddev: 0.0017093485260596967", + "extra": "mean: 6.948187693548987 msec\nrounds: 124" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 133.95516225825324, + "unit": "iter/sec", + "range": "stddev: 0.0017000248700983515", + "extra": "mean: 7.465184492644576 msec\nrounds: 136" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 332.5638522881671, + "unit": "iter/sec", + "range": "stddev: 0.00011992787267986627", + "extra": "mean: 3.0069413531254696 msec\nrounds: 320" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 222.79146841569334, + "unit": "iter/sec", + "range": "stddev: 0.001076207365263072", + "extra": "mean: 4.488502217392631 msec\nrounds: 207" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 33.174314296589, + "unit": "iter/sec", + "range": "stddev: 0.0005354065271013829", + "extra": "mean: 30.143803156251536 msec\nrounds: 32" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 468.3856424778429, + "unit": "iter/sec", + "range": "stddev: 0.0007469387426006073", + "extra": "mean: 2.134992854840347 msec\nrounds: 434" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 122.78657583900338, + "unit": "iter/sec", + "range": "stddev: 0.0018715507171920033", + "extra": "mean: 8.144212778693257 msec\nrounds: 122" + } + ] + }, + { + "commit": { + "author": { + "email": "alastair@interaction.net.au", + "name": "Alastair Weakley", + "username": "aweakley" + }, + "committer": { + "email": "alastair@interaction.net.au", + "name": "Alastair Weakley", + "username": "aweakley" + }, + "distinct": true, + "id": "90558b6bede78d310755e303328745ad4c70c087", + "message": "Activate packrat #50", + "timestamp": "2024-05-27T16:16:32+10:00", + "tree_id": "4a09888674f4922bac6171ea174672a55a6af72c", + "url": "https://github.com/ixc/python-edtf/commit/90558b6bede78d310755e303328745ad4c70c087" + }, + "date": 1716790661846, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 80582.48576992679, + "unit": "iter/sec", + "range": "stddev: 8.932571132018978e-7", + "extra": "mean: 12.40964448348152 usec\nrounds: 2284" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 8723.055067176152, + "unit": "iter/sec", + "range": "stddev: 0.000005514716029706042", + "extra": "mean: 114.63873520217525 usec\nrounds: 642" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 10643.250868963421, + "unit": "iter/sec", + "range": "stddev: 0.000010561377766575552", + "extra": "mean: 93.95625568838942 usec\nrounds: 7603" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 7090.9310435272455, + "unit": "iter/sec", + "range": "stddev: 0.000007013845497689025", + "extra": "mean: 141.0252044282424 usec\nrounds: 4652" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 12662.061719965792, + "unit": "iter/sec", + "range": "stddev: 0.000004414719024277194", + "extra": "mean: 78.97608005046919 usec\nrounds: 7945" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 9163.855226353196, + "unit": "iter/sec", + "range": "stddev: 0.000004940229834602092", + "extra": "mean: 109.12437781908905 usec\nrounds: 5365" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 5742.973118680105, + "unit": "iter/sec", + "range": "stddev: 0.000007478806244740097", + "extra": "mean: 174.125836798245 usec\nrounds: 4473" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 7606.170288851266, + "unit": "iter/sec", + "range": "stddev: 0.000013626892281005909", + "extra": "mean: 131.4722076977094 usec\nrounds: 5638" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 48759.16658879253, + "unit": "iter/sec", + "range": "stddev: 0.0000021467529169852325", + "extra": "mean: 20.50896415915882 usec\nrounds: 2818" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 42308.612825237535, + "unit": "iter/sec", + "range": "stddev: 0.0000011805042694386185", + "extra": "mean: 23.63584937494073 usec\nrounds: 1839" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 24377.787009148728, + "unit": "iter/sec", + "range": "stddev: 0.0000029401980981380735", + "extra": "mean: 41.02095073784632 usec\nrounds: 13215" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 158.718199255562, + "unit": "iter/sec", + "range": "stddev: 0.00048474320907967294", + "extra": "mean: 6.30047470731342 msec\nrounds: 41" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 165.6623929841403, + "unit": "iter/sec", + "range": "stddev: 0.0017180824483017394", + "extra": "mean: 6.036373023391828 msec\nrounds: 171" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 195.08085459021194, + "unit": "iter/sec", + "range": "stddev: 0.002005364563976082", + "extra": "mean: 5.126079656051365 msec\nrounds: 157" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 196.78820196904562, + "unit": "iter/sec", + "range": "stddev: 0.0015516261018943384", + "extra": "mean: 5.081605451922864 msec\nrounds: 208" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 140.11606059481684, + "unit": "iter/sec", + "range": "stddev: 0.0014596683651959548", + "extra": "mean: 7.136940588786378 msec\nrounds: 107" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 126.83060561340648, + "unit": "iter/sec", + "range": "stddev: 0.0018323765701294269", + "extra": "mean: 7.884532248060922 msec\nrounds: 129" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 324.86480513431644, + "unit": "iter/sec", + "range": "stddev: 0.00025162149046091276", + "extra": "mean: 3.0782035609753007 msec\nrounds: 287" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 218.0547041069529, + "unit": "iter/sec", + "range": "stddev: 0.0012084256807922287", + "extra": "mean: 4.586005168269671 msec\nrounds: 208" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 31.783999309794797, + "unit": "iter/sec", + "range": "stddev: 0.0027347249273083954", + "extra": "mean: 31.46237168749977 msec\nrounds: 32" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 470.384400946271, + "unit": "iter/sec", + "range": "stddev: 0.00007668406769218034", + "extra": "mean: 2.1259208383362687 msec\nrounds: 433" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 117.19777710874818, + "unit": "iter/sec", + "range": "stddev: 0.0020870244849718537", + "extra": "mean: 8.532585042735896 msec\nrounds: 117" + } + ] + }, + { + "commit": { + "author": { + "email": "alastair@interaction.net.au", + "name": "Alastair Weakley", + "username": "aweakley" + }, + "committer": { + "email": "alastair@interaction.net.au", + "name": "Alastair Weakley", + "username": "aweakley" + }, + "distinct": true, + "id": "6c0e23990a259e2bd66f41781d950940e015e379", + "message": "Include benchmark url", + "timestamp": "2024-05-27T16:30:08+10:00", + "tree_id": "30f517a2be05f28596a12a860e9c2bf3becb99d4", + "url": "https://github.com/ixc/python-edtf/commit/6c0e23990a259e2bd66f41781d950940e015e379" + }, + "date": 1716791458602, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 117003.68049318365, + "unit": "iter/sec", + "range": "stddev: 7.379838642027185e-7", + "extra": "mean: 8.546739690451512 usec\nrounds: 3492" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 11431.107684353572, + "unit": "iter/sec", + "range": "stddev: 0.000004724495405530904", + "extra": "mean: 87.48058610004686 usec\nrounds: 964" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 14173.361102479623, + "unit": "iter/sec", + "range": "stddev: 0.0000035427575764334276", + "extra": "mean: 70.55489469079077 usec\nrounds: 9116" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 9454.06749578109, + "unit": "iter/sec", + "range": "stddev: 0.000004095787277387687", + "extra": "mean: 105.77457802646887 usec\nrounds: 6799" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 16616.98830564465, + "unit": "iter/sec", + "range": "stddev: 0.0000033464325271168497", + "extra": "mean: 60.17937676831057 usec\nrounds: 10391" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 11942.142045055618, + "unit": "iter/sec", + "range": "stddev: 0.000004354964946345207", + "extra": "mean: 83.73707130824391 usec\nrounds: 7713" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 7498.620535930153, + "unit": "iter/sec", + "range": "stddev: 0.000005023716914108119", + "extra": "mean: 133.3578616504771 usec\nrounds: 5356" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 10219.018694959113, + "unit": "iter/sec", + "range": "stddev: 0.000006195004351442201", + "extra": "mean: 97.8567541414994 usec\nrounds: 7183" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 66985.86611154258, + "unit": "iter/sec", + "range": "stddev: 8.821894028269639e-7", + "extra": "mean: 14.928522359251637 usec\nrounds: 4204" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 56489.254626942355, + "unit": "iter/sec", + "range": "stddev: 8.873802242054716e-7", + "extra": "mean: 17.702481765851687 usec\nrounds: 2605" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 32815.652445838394, + "unit": "iter/sec", + "range": "stddev: 0.00000194275102407926", + "extra": "mean: 30.47326277149238 usec\nrounds: 16345" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 133.83479757861832, + "unit": "iter/sec", + "range": "stddev: 0.0015073892171360227", + "extra": "mean: 7.471898326087967 msec\nrounds: 46" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 150.8119224495673, + "unit": "iter/sec", + "range": "stddev: 0.0016474934144343463", + "extra": "mean: 6.630775496774189 msec\nrounds: 155" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 186.86064742151402, + "unit": "iter/sec", + "range": "stddev: 0.0013697404914913842", + "extra": "mean: 5.351581586593957 msec\nrounds: 179" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 190.98860140047455, + "unit": "iter/sec", + "range": "stddev: 0.0009478540747901884", + "extra": "mean: 5.235914565933438 msec\nrounds: 182" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 127.43592802961386, + "unit": "iter/sec", + "range": "stddev: 0.001402698838175663", + "extra": "mean: 7.8470806111100595 msec\nrounds: 90" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 112.66500405981427, + "unit": "iter/sec", + "range": "stddev: 0.0019995259479429445", + "extra": "mean: 8.875870624999902 msec\nrounds: 112" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 231.0504557308992, + "unit": "iter/sec", + "range": "stddev: 0.000485665066642226", + "extra": "mean: 4.32805898104215 msec\nrounds: 211" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 190.90706874049775, + "unit": "iter/sec", + "range": "stddev: 0.0012297277967062005", + "extra": "mean: 5.238150722220307 msec\nrounds: 180" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 19.622649773161598, + "unit": "iter/sec", + "range": "stddev: 0.00184430529148034", + "extra": "mean: 50.961516999998935 msec\nrounds: 20" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 479.51929882718815, + "unit": "iter/sec", + "range": "stddev: 0.00008290102026587897", + "extra": "mean: 2.0854218014703627 msec\nrounds: 408" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 108.24959533534822, + "unit": "iter/sec", + "range": "stddev: 0.0019998969304789683", + "extra": "mean: 9.237909822222278 msec\nrounds: 90" + } + ] + }, + { + "commit": { + "author": { + "email": "alastair@interaction.net.au", + "name": "Alastair Weakley", + "username": "aweakley" + }, + "committer": { + "email": "alastair@interaction.net.au", + "name": "Alastair Weakley", + "username": "aweakley" + }, + "distinct": true, + "id": "6c0e23990a259e2bd66f41781d950940e015e379", + "message": "Include benchmark url", + "timestamp": "2024-05-27T16:30:08+10:00", + "tree_id": "30f517a2be05f28596a12a860e9c2bf3becb99d4", + "url": "https://github.com/ixc/python-edtf/commit/6c0e23990a259e2bd66f41781d950940e015e379" + }, + "date": 1716791464716, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 88245.83894730097, + "unit": "iter/sec", + "range": "stddev: 0.0000010155592139044523", + "extra": "mean: 11.331979070392025 usec\nrounds: 2389" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 7173.519317947607, + "unit": "iter/sec", + "range": "stddev: 0.00004914806150192237", + "extra": "mean: 139.40159016482679 usec\nrounds: 671" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 11356.6176268943, + "unit": "iter/sec", + "range": "stddev: 0.000005955435148192683", + "extra": "mean: 88.05438668920567 usec\nrounds: 7678" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 7653.607609035423, + "unit": "iter/sec", + "range": "stddev: 0.000007820587794092021", + "extra": "mean: 130.65733848433197 usec\nrounds: 5371" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 13496.518905716015, + "unit": "iter/sec", + "range": "stddev: 0.000004292450993173198", + "extra": "mean: 74.09317965512442 usec\nrounds: 8700" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 9588.284681811136, + "unit": "iter/sec", + "range": "stddev: 0.000005007496681778731", + "extra": "mean: 104.2939413237269 usec\nrounds: 6408" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 6138.3314741275135, + "unit": "iter/sec", + "range": "stddev: 0.000007516203727533038", + "extra": "mean: 162.91071999205408 usec\nrounds: 4707" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 8281.950258024466, + "unit": "iter/sec", + "range": "stddev: 0.000008842815881308866", + "extra": "mean: 120.74450689088475 usec\nrounds: 5950" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 51778.41519401632, + "unit": "iter/sec", + "range": "stddev: 9.491299250910111e-7", + "extra": "mean: 19.313066965316526 usec\nrounds: 2688" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 46755.23242830709, + "unit": "iter/sec", + "range": "stddev: 0.0000014152483818165631", + "extra": "mean: 21.38798051177195 usec\nrounds: 1950" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 25546.013414350946, + "unit": "iter/sec", + "range": "stddev: 0.0000024165290923831225", + "extra": "mean: 39.14505108019052 usec\nrounds: 13195" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 165.6937778966742, + "unit": "iter/sec", + "range": "stddev: 0.00039830018748193946", + "extra": "mean: 6.035229642863203 msec\nrounds: 42" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 171.17582503605254, + "unit": "iter/sec", + "range": "stddev: 0.0017517567717538142", + "extra": "mean: 5.841946430165493 msec\nrounds: 179" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 204.7219232481617, + "unit": "iter/sec", + "range": "stddev: 0.0017319235603933981", + "extra": "mean: 4.884674704759445 msec\nrounds: 210" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 203.61716101342876, + "unit": "iter/sec", + "range": "stddev: 0.0017768120757401125", + "extra": "mean: 4.911177402842037 msec\nrounds: 211" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 146.24930845747824, + "unit": "iter/sec", + "range": "stddev: 0.0017302379235183878", + "extra": "mean: 6.837639169355446 msec\nrounds: 124" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 136.12681766891936, + "unit": "iter/sec", + "range": "stddev: 0.0014921299047697212", + "extra": "mean: 7.346091072459716 msec\nrounds: 138" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 331.96221127006845, + "unit": "iter/sec", + "range": "stddev: 0.0010365170390919164", + "extra": "mean: 3.0123910675677728 msec\nrounds: 296" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 224.57575008567528, + "unit": "iter/sec", + "range": "stddev: 0.0011831806254181205", + "extra": "mean: 4.452840520931141 msec\nrounds: 215" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 33.48495306952563, + "unit": "iter/sec", + "range": "stddev: 0.0006376676007611862", + "extra": "mean: 29.86416011764076 msec\nrounds: 34" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 477.28165845642087, + "unit": "iter/sec", + "range": "stddev: 0.0008656567256010204", + "extra": "mean: 2.095198887872845 msec\nrounds: 437" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 123.50144723195214, + "unit": "iter/sec", + "range": "stddev: 0.001847457521482299", + "extra": "mean: 8.09707110655851 msec\nrounds: 122" + } + ] + }, + { + "commit": { + "author": { + "email": "alastair@interaction.net.au", + "name": "Alastair Weakley", + "username": "aweakley" + }, + "committer": { + "email": "alastair@interaction.net.au", + "name": "Alastair Weakley", + "username": "aweakley" + }, + "distinct": true, + "id": "6c0e23990a259e2bd66f41781d950940e015e379", + "message": "Include benchmark url", + "timestamp": "2024-05-27T16:30:08+10:00", + "tree_id": "30f517a2be05f28596a12a860e9c2bf3becb99d4", + "url": "https://github.com/ixc/python-edtf/commit/6c0e23990a259e2bd66f41781d950940e015e379" + }, + "date": 1716791468979, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 79736.7233378459, + "unit": "iter/sec", + "range": "stddev: 9.288155323886471e-7", + "extra": "mean: 12.54127280554259 usec\nrounds: 2313" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 8592.544873852265, + "unit": "iter/sec", + "range": "stddev: 0.000005520700121837507", + "extra": "mean: 116.37995665790146 usec\nrounds: 646" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 10752.91113524361, + "unit": "iter/sec", + "range": "stddev: 0.000004196794065317875", + "extra": "mean: 92.99807163126385 usec\nrounds: 6338" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 7021.096385695988, + "unit": "iter/sec", + "range": "stddev: 0.000014214425135446613", + "extra": "mean: 142.42789801850466 usec\nrounds: 5148" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 12907.214292245882, + "unit": "iter/sec", + "range": "stddev: 0.0000041331538335428586", + "extra": "mean: 77.47605155984421 usec\nrounds: 8495" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 9118.170762550006, + "unit": "iter/sec", + "range": "stddev: 0.0000051785312267849234", + "extra": "mean: 109.67112001314811 usec\nrounds: 6091" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 5718.208713626198, + "unit": "iter/sec", + "range": "stddev: 0.000006701150272560994", + "extra": "mean: 174.87994056898472 usec\nrounds: 4459" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 7661.21649603016, + "unit": "iter/sec", + "range": "stddev: 0.0000055052697911927735", + "extra": "mean: 130.52757359332864 usec\nrounds: 5741" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 48347.94168543026, + "unit": "iter/sec", + "range": "stddev: 0.000002072333901999176", + "extra": "mean: 20.683403783895763 usec\nrounds: 2801" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 42592.867064696664, + "unit": "iter/sec", + "range": "stddev: 0.0000013015774390770715", + "extra": "mean: 23.47810957362989 usec\nrounds: 1807" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 24535.284609447248, + "unit": "iter/sec", + "range": "stddev: 0.0000024971429388196334", + "extra": "mean: 40.75762787829869 usec\nrounds: 9857" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 160.73891916360307, + "unit": "iter/sec", + "range": "stddev: 0.00046378340263224254", + "extra": "mean: 6.221268658539263 msec\nrounds: 41" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 167.59456853320168, + "unit": "iter/sec", + "range": "stddev: 0.0016091511017768873", + "extra": "mean: 5.966780479535009 msec\nrounds: 171" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 191.12240764528454, + "unit": "iter/sec", + "range": "stddev: 0.001990515342756404", + "extra": "mean: 5.232248862498423 msec\nrounds: 160" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 204.29282837622847, + "unit": "iter/sec", + "range": "stddev: 0.0009625989208194592", + "extra": "mean: 4.894934432834746 msec\nrounds: 201" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 143.81460605175585, + "unit": "iter/sec", + "range": "stddev: 0.0012922208531472932", + "extra": "mean: 6.953396650407824 msec\nrounds: 123" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 132.81447923155784, + "unit": "iter/sec", + "range": "stddev: 0.0011833780066021263", + "extra": "mean: 7.529299559700352 msec\nrounds: 134" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 322.7360262185291, + "unit": "iter/sec", + "range": "stddev: 0.0007654578317242621", + "extra": "mean: 3.098507506945896 msec\nrounds: 288" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 215.93805127434715, + "unit": "iter/sec", + "range": "stddev: 0.0010901943938594614", + "extra": "mean: 4.630957786728889 msec\nrounds: 211" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 32.64868130394781, + "unit": "iter/sec", + "range": "stddev: 0.0004325827419358625", + "extra": "mean: 30.629108437500108 msec\nrounds: 32" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 464.8670679767085, + "unit": "iter/sec", + "range": "stddev: 0.0006157102163227444", + "extra": "mean: 2.151152595842955 msec\nrounds: 433" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 120.43338771161547, + "unit": "iter/sec", + "range": "stddev: 0.0012487664509095964", + "extra": "mean: 8.30334526829517 msec\nrounds: 123" + } + ] + }, + { + "commit": { + "author": { + "email": "alastair@interaction.net.au", + "name": "Alastair Weakley", + "username": "aweakley" + }, + "committer": { + "email": "alastair@interaction.net.au", + "name": "Alastair Weakley", + "username": "aweakley" + }, + "distinct": true, + "id": "6c0e23990a259e2bd66f41781d950940e015e379", + "message": "Include benchmark url", + "timestamp": "2024-05-27T16:30:08+10:00", + "tree_id": "30f517a2be05f28596a12a860e9c2bf3becb99d4", + "url": "https://github.com/ixc/python-edtf/commit/6c0e23990a259e2bd66f41781d950940e015e379" + }, + "date": 1716791471833, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 79525.00137822666, + "unit": "iter/sec", + "range": "stddev: 0.000001581939772603948", + "extra": "mean: 12.57466183802912 usec\nrounds: 2209" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 8522.401869212488, + "unit": "iter/sec", + "range": "stddev: 0.000008797307589053898", + "extra": "mean: 117.33781337072818 usec\nrounds: 718" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 10556.853155538698, + "unit": "iter/sec", + "range": "stddev: 0.000009528858908690066", + "extra": "mean: 94.72519748703199 usec\nrounds: 6446" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 6948.679232762833, + "unit": "iter/sec", + "range": "stddev: 0.000007196632013519529", + "extra": "mean: 143.91224094573647 usec\nrounds: 5246" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 12730.467523900876, + "unit": "iter/sec", + "range": "stddev: 0.000005297883009584402", + "extra": "mean: 78.55171054185914 usec\nrounds: 8395" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 8905.453034843906, + "unit": "iter/sec", + "range": "stddev: 0.000006466938084800811", + "extra": "mean: 112.29074995818311 usec\nrounds: 5983" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 5733.618494884712, + "unit": "iter/sec", + "range": "stddev: 0.000007309138785171034", + "extra": "mean: 174.40992994077945 usec\nrounds: 4382" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 7696.677189385089, + "unit": "iter/sec", + "range": "stddev: 0.000006229106197550657", + "extra": "mean: 129.92619742181145 usec\nrounds: 5430" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 49518.49969053278, + "unit": "iter/sec", + "range": "stddev: 0.0000015586628911894236", + "extra": "mean: 20.194472899007994 usec\nrounds: 738" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 42813.46056214678, + "unit": "iter/sec", + "range": "stddev: 0.000002194621329377989", + "extra": "mean: 23.357140181378917 usec\nrounds: 1762" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 24459.853529115597, + "unit": "iter/sec", + "range": "stddev: 0.0000029768824613222287", + "extra": "mean: 40.88331922387261 usec\nrounds: 9379" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 157.49178168512358, + "unit": "iter/sec", + "range": "stddev: 0.0005794814674003579", + "extra": "mean: 6.349537666665805 msec\nrounds: 42" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 159.2187147221691, + "unit": "iter/sec", + "range": "stddev: 0.0024008803329278344", + "extra": "mean: 6.280668712500059 msec\nrounds: 160" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 192.58048997869972, + "unit": "iter/sec", + "range": "stddev: 0.0023306708740726354", + "extra": "mean: 5.192633999999713 msec\nrounds: 191" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 201.2464644433691, + "unit": "iter/sec", + "range": "stddev: 0.0018910534017154209", + "extra": "mean: 4.969031395239247 msec\nrounds: 210" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 141.41949297915707, + "unit": "iter/sec", + "range": "stddev: 0.0018417623867687015", + "extra": "mean: 7.071160976000556 msec\nrounds: 125" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 132.7858811920063, + "unit": "iter/sec", + "range": "stddev: 0.0017378251453212333", + "extra": "mean: 7.530921141789283 msec\nrounds: 134" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 331.80949230795204, + "unit": "iter/sec", + "range": "stddev: 0.0001743336467260359", + "extra": "mean: 3.0137775536327966 msec\nrounds: 289" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 218.9766701854305, + "unit": "iter/sec", + "range": "stddev: 0.0012381410525512246", + "extra": "mean: 4.566696530517133 msec\nrounds: 213" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 32.15949827981698, + "unit": "iter/sec", + "range": "stddev: 0.0047316999429168", + "extra": "mean: 31.095012468760785 msec\nrounds: 32" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 473.30244157391746, + "unit": "iter/sec", + "range": "stddev: 0.00010523909148919004", + "extra": "mean: 2.112813947620057 msec\nrounds: 420" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 115.55769699663348, + "unit": "iter/sec", + "range": "stddev: 0.002849186788621501", + "extra": "mean: 8.653685786323111 msec\nrounds: 117" + } + ] + }, + { + "commit": { + "author": { + "email": "alastair@interaction.net.au", + "name": "Alastair Weakley", + "username": "aweakley" + }, + "committer": { + "email": "alastair@interaction.net.au", + "name": "Alastair Weakley", + "username": "aweakley" + }, + "distinct": true, + "id": "6c0e23990a259e2bd66f41781d950940e015e379", + "message": "Include benchmark url", + "timestamp": "2024-05-27T16:30:08+10:00", + "tree_id": "30f517a2be05f28596a12a860e9c2bf3becb99d4", + "url": "https://github.com/ixc/python-edtf/commit/6c0e23990a259e2bd66f41781d950940e015e379" + }, + "date": 1716791473998, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 69623.3088759745, + "unit": "iter/sec", + "range": "stddev: 0.0000013849908566456315", + "extra": "mean: 14.363005955108783 usec\nrounds: 1847" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 8255.889795047835, + "unit": "iter/sec", + "range": "stddev: 0.000005961178613019849", + "extra": "mean: 121.12564784959149 usec\nrounds: 744" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 9897.171699215625, + "unit": "iter/sec", + "range": "stddev: 0.00000463407317027265", + "extra": "mean: 101.03896652406793 usec\nrounds: 4212" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 6748.667184331565, + "unit": "iter/sec", + "range": "stddev: 0.000006944707679588234", + "extra": "mean: 148.17740639540025 usec\nrounds: 3440" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 11639.134552985804, + "unit": "iter/sec", + "range": "stddev: 0.0000059887326331891594", + "extra": "mean: 85.917040949017 usec\nrounds: 4762" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 8311.522196603652, + "unit": "iter/sec", + "range": "stddev: 0.000015458063010660085", + "extra": "mean: 120.31490458012989 usec\nrounds: 3668" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 5675.264845322828, + "unit": "iter/sec", + "range": "stddev: 0.000020193912783789967", + "extra": "mean: 176.20323055480534 usec\nrounds: 2867" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 7400.349916571939, + "unit": "iter/sec", + "range": "stddev: 0.0000055515862163685545", + "extra": "mean: 135.12874543413884 usec\nrounds: 3614" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 50027.98387150724, + "unit": "iter/sec", + "range": "stddev: 0.0000015611581518258672", + "extra": "mean: 19.98881271266933 usec\nrounds: 2942" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 44575.19294034347, + "unit": "iter/sec", + "range": "stddev: 0.000001918260001514796", + "extra": "mean: 22.43400272744382 usec\nrounds: 1833" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 22193.034744723212, + "unit": "iter/sec", + "range": "stddev: 0.000003762823312923562", + "extra": "mean: 45.059182374225216 usec\nrounds: 6048" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 122.91376473906767, + "unit": "iter/sec", + "range": "stddev: 0.0006188323254610916", + "extra": "mean: 8.13578529730083 msec\nrounds: 37" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 129.04941731703363, + "unit": "iter/sec", + "range": "stddev: 0.001679261256900155", + "extra": "mean: 7.748969509434637 msec\nrounds: 106" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 157.45082443530742, + "unit": "iter/sec", + "range": "stddev: 0.0022578710745921595", + "extra": "mean: 6.351189354431579 msec\nrounds: 158" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 156.91618376763557, + "unit": "iter/sec", + "range": "stddev: 0.002312174360203822", + "extra": "mean: 6.372828958680379 msec\nrounds: 121" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 107.48377913583656, + "unit": "iter/sec", + "range": "stddev: 0.0023273187524285102", + "extra": "mean: 9.303729437501573 msec\nrounds: 80" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 98.56495242587283, + "unit": "iter/sec", + "range": "stddev: 0.001997524568329419", + "extra": "mean: 10.145594102042145 msec\nrounds: 98" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 210.85940206066465, + "unit": "iter/sec", + "range": "stddev: 0.00014844895252695344", + "extra": "mean: 4.74249661256413 msec\nrounds: 191" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 166.8221126726796, + "unit": "iter/sec", + "range": "stddev: 0.001233872218382916", + "extra": "mean: 5.994409158227677 msec\nrounds: 158" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 18.737964981086854, + "unit": "iter/sec", + "range": "stddev: 0.0006557341446106546", + "extra": "mean: 53.36758826315178 msec\nrounds: 19" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 383.3827603596974, + "unit": "iter/sec", + "range": "stddev: 0.0001941011481852602", + "extra": "mean: 2.6083593301424925 msec\nrounds: 209" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 91.79172461953596, + "unit": "iter/sec", + "range": "stddev: 0.00211764246569607", + "extra": "mean: 10.894228255813497 msec\nrounds: 86" + } + ] + }, + { + "commit": { + "author": { + "email": "alastair@interaction.net.au", + "name": "aweakley", + "username": "aweakley" + }, + "committer": { + "email": "noreply@github.com", + "name": "GitHub", + "username": "web-flow" + }, + "distinct": true, + "id": "d5502742fd3ea330b9b609959a106ae890a29d94", + "message": "Merge pull request #57 from ixc/50_add_performance_tests\n\n50 add performance tests", + "timestamp": "2024-05-28T10:33:12+10:00", + "tree_id": "30f517a2be05f28596a12a860e9c2bf3becb99d4", + "url": "https://github.com/ixc/python-edtf/commit/d5502742fd3ea330b9b609959a106ae890a29d94" + }, + "date": 1716856439742, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 118820.602122959, + "unit": "iter/sec", + "range": "stddev: 5.879749575291134e-7", + "extra": "mean: 8.416048918563558 usec\nrounds: 3005" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 11440.170052804406, + "unit": "iter/sec", + "range": "stddev: 0.000005223699361390938", + "extra": "mean: 87.41128806515103 usec\nrounds: 972" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 14073.963015410847, + "unit": "iter/sec", + "range": "stddev: 0.0000047980723045282624", + "extra": "mean: 71.05319226041806 usec\nrounds: 8941" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 9405.665977132232, + "unit": "iter/sec", + "range": "stddev: 0.0000049766544214081825", + "extra": "mean: 106.31889357237178 usec\nrounds: 6643" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 16729.471825407996, + "unit": "iter/sec", + "range": "stddev: 0.000003343756185421422", + "extra": "mean: 59.774750239349665 usec\nrounds: 9397" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 11755.63224352206, + "unit": "iter/sec", + "range": "stddev: 0.000004732447883893759", + "extra": "mean: 85.06560764105647 usec\nrounds: 7172" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 7434.433759517973, + "unit": "iter/sec", + "range": "stddev: 0.000006069773121525858", + "extra": "mean: 134.50923531597073 usec\nrounds: 5363" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 10248.163923601813, + "unit": "iter/sec", + "range": "stddev: 0.000004869653438371242", + "extra": "mean: 97.57845478027255 usec\nrounds: 6966" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 66813.77697393876, + "unit": "iter/sec", + "range": "stddev: 0.0000010322913630051904", + "extra": "mean: 14.966973059913347 usec\nrounds: 3749" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 56606.90431454123, + "unit": "iter/sec", + "range": "stddev: 9.498208461992206e-7", + "extra": "mean: 17.665689585203467 usec\nrounds: 2458" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 32671.928892714455, + "unit": "iter/sec", + "range": "stddev: 0.0000021452155293833698", + "extra": "mean: 30.60731440998548 usec\nrounds: 13775" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 152.53373016501564, + "unit": "iter/sec", + "range": "stddev: 0.0005518283912429752", + "extra": "mean: 6.555927000003012 msec\nrounds: 46" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 157.67573506289054, + "unit": "iter/sec", + "range": "stddev: 0.0018769487138548485", + "extra": "mean: 6.342129939024163 msec\nrounds: 164" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 192.42524972291878, + "unit": "iter/sec", + "range": "stddev: 0.001888079639615709", + "extra": "mean: 5.196823189471974 msec\nrounds: 190" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 195.8663190577094, + "unit": "iter/sec", + "range": "stddev: 0.0019249621626913748", + "extra": "mean: 5.105523015957446 msec\nrounds: 188" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 132.8189362923735, + "unit": "iter/sec", + "range": "stddev: 0.0020073482812867516", + "extra": "mean: 7.529046895833484 msec\nrounds: 96" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 119.0178036319311, + "unit": "iter/sec", + "range": "stddev: 0.0020534048789457326", + "extra": "mean: 8.402104302752495 msec\nrounds: 109" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 252.74922056244225, + "unit": "iter/sec", + "range": "stddev: 0.0011464213104177997", + "extra": "mean: 3.9564909350648136 msec\nrounds: 231" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 201.8566586919196, + "unit": "iter/sec", + "range": "stddev: 0.0006373808881074358", + "extra": "mean: 4.9540104670326155 msec\nrounds: 182" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 21.591407486618095, + "unit": "iter/sec", + "range": "stddev: 0.00386000001105658", + "extra": "mean: 46.31472036363442 msec\nrounds: 22" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 498.9626899087608, + "unit": "iter/sec", + "range": "stddev: 0.00007658855766406677", + "extra": "mean: 2.00415786635842 msec\nrounds: 434" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 114.71918539214317, + "unit": "iter/sec", + "range": "stddev: 0.00170992741084812", + "extra": "mean: 8.716937769229379 msec\nrounds: 104" + } + ] + }, + { + "commit": { + "author": { + "email": "alastair@interaction.net.au", + "name": "aweakley", + "username": "aweakley" + }, + "committer": { + "email": "noreply@github.com", + "name": "GitHub", + "username": "web-flow" + }, + "distinct": true, + "id": "d5502742fd3ea330b9b609959a106ae890a29d94", + "message": "Merge pull request #57 from ixc/50_add_performance_tests\n\n50 add performance tests", + "timestamp": "2024-05-28T10:33:12+10:00", + "tree_id": "30f517a2be05f28596a12a860e9c2bf3becb99d4", + "url": "https://github.com/ixc/python-edtf/commit/d5502742fd3ea330b9b609959a106ae890a29d94" + }, + "date": 1716856445791, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 73153.572432203, + "unit": "iter/sec", + "range": "stddev: 0.0000010489031645404416", + "extra": "mean: 13.669872389715163 usec\nrounds: 2155" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 8722.301174187907, + "unit": "iter/sec", + "range": "stddev: 0.000008115054843687149", + "extra": "mean: 114.64864375003714 usec\nrounds: 800" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 10326.676245675102, + "unit": "iter/sec", + "range": "stddev: 0.000005483253911906605", + "extra": "mean: 96.8365789930529 usec\nrounds: 4627" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 6751.744531549716, + "unit": "iter/sec", + "range": "stddev: 0.000016317505866863735", + "extra": "mean: 148.1098692829943 usec\nrounds: 3542" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 11581.77436465761, + "unit": "iter/sec", + "range": "stddev: 0.000018357206606071773", + "extra": "mean: 86.34255585668741 usec\nrounds: 4064" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 8680.444263686772, + "unit": "iter/sec", + "range": "stddev: 0.000006664449056003675", + "extra": "mean: 115.20147697777838 usec\nrounds: 3931" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 5848.519805655939, + "unit": "iter/sec", + "range": "stddev: 0.000009683116974778127", + "extra": "mean: 170.98343396784395 usec\nrounds: 3203" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 7545.936044449497, + "unit": "iter/sec", + "range": "stddev: 0.000009806845703431812", + "extra": "mean: 132.52166386111395 usec\nrounds: 3683" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 49756.45968822588, + "unit": "iter/sec", + "range": "stddev: 0.0000013254408868709497", + "extra": "mean: 20.097892942263236 usec\nrounds: 2933" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 45814.92040341234, + "unit": "iter/sec", + "range": "stddev: 0.0000016523420978149456", + "extra": "mean: 21.82695050421869 usec\nrounds: 2182" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 22535.265530059474, + "unit": "iter/sec", + "range": "stddev: 0.000003344052642502045", + "extra": "mean: 44.37489314985502 usec\nrounds: 7197" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 127.18117556884573, + "unit": "iter/sec", + "range": "stddev: 0.0005741142671976892", + "extra": "mean: 7.862798842102854 msec\nrounds: 38" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 133.8438309036469, + "unit": "iter/sec", + "range": "stddev: 0.0016929097666600035", + "extra": "mean: 7.47139403623236 msec\nrounds: 138" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 168.9105906497566, + "unit": "iter/sec", + "range": "stddev: 0.0010929379073341173", + "extra": "mean: 5.920291890243538 msec\nrounds: 164" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 166.35961803189517, + "unit": "iter/sec", + "range": "stddev: 0.0015454447437266998", + "extra": "mean: 6.0110741526725295 msec\nrounds: 131" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 116.27737105573823, + "unit": "iter/sec", + "range": "stddev: 0.0005754769288325661", + "extra": "mean: 8.600125638553044 msec\nrounds: 83" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 103.0110160796474, + "unit": "iter/sec", + "range": "stddev: 0.0012680566789270505", + "extra": "mean: 9.70769960396087 msec\nrounds: 101" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 216.00220794811426, + "unit": "iter/sec", + "range": "stddev: 0.0008086460823481986", + "extra": "mean: 4.629582306122581 msec\nrounds: 196" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 175.0150751719073, + "unit": "iter/sec", + "range": "stddev: 0.000854047824506577", + "extra": "mean: 5.7137935061751515 msec\nrounds: 162" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 19.580206434583392, + "unit": "iter/sec", + "range": "stddev: 0.0013861247959179352", + "extra": "mean: 51.07198452380755 msec\nrounds: 21" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 405.56145814501315, + "unit": "iter/sec", + "range": "stddev: 0.00012760161484188785", + "extra": "mean: 2.465717537790385 msec\nrounds: 344" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 98.1765130003023, + "unit": "iter/sec", + "range": "stddev: 0.0018588803031387587", + "extra": "mean: 10.185735563830027 msec\nrounds: 94" + } + ] + }, + { + "commit": { + "author": { + "email": "alastair@interaction.net.au", + "name": "aweakley", + "username": "aweakley" + }, + "committer": { + "email": "noreply@github.com", + "name": "GitHub", + "username": "web-flow" + }, + "distinct": true, + "id": "d5502742fd3ea330b9b609959a106ae890a29d94", + "message": "Merge pull request #57 from ixc/50_add_performance_tests\n\n50 add performance tests", + "timestamp": "2024-05-28T10:33:12+10:00", + "tree_id": "30f517a2be05f28596a12a860e9c2bf3becb99d4", + "url": "https://github.com/ixc/python-edtf/commit/d5502742fd3ea330b9b609959a106ae890a29d94" + }, + "date": 1716856445861, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 88171.3995986346, + "unit": "iter/sec", + "range": "stddev: 8.784392317387399e-7", + "extra": "mean: 11.341546176561836 usec\nrounds: 2393" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 8666.00387737506, + "unit": "iter/sec", + "range": "stddev: 0.000006878010888860342", + "extra": "mean: 115.39344017728513 usec\nrounds: 677" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 10384.11708097221, + "unit": "iter/sec", + "range": "stddev: 0.00002217023031824006", + "extra": "mean: 96.30091727609597 usec\nrounds: 7386" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 7396.9959664000635, + "unit": "iter/sec", + "range": "stddev: 0.0000053713015784352", + "extra": "mean: 135.19001558772993 usec\nrounds: 5453" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 13098.981081735037, + "unit": "iter/sec", + "range": "stddev: 0.000003901126514773051", + "extra": "mean: 76.34181573056705 usec\nrounds: 8493" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 9214.91434796836, + "unit": "iter/sec", + "range": "stddev: 0.000005435768762067458", + "extra": "mean: 108.51972815357455 usec\nrounds: 6088" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 5917.685547221729, + "unit": "iter/sec", + "range": "stddev: 0.000007250379871350478", + "extra": "mean: 168.98498442004683 usec\nrounds: 4493" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 8042.331759695074, + "unit": "iter/sec", + "range": "stddev: 0.000006074328778394688", + "extra": "mean: 124.34204778912468 usec\nrounds: 5608" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 52664.09171512095, + "unit": "iter/sec", + "range": "stddev: 0.0000011770105770645222", + "extra": "mean: 18.98827013687733 usec\nrounds: 2632" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 45667.16481023882, + "unit": "iter/sec", + "range": "stddev: 0.0000013630904270574329", + "extra": "mean: 21.897571354720814 usec\nrounds: 1934" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 24912.653287504836, + "unit": "iter/sec", + "range": "stddev: 0.0000026739810033484397", + "extra": "mean: 40.140244736659945 usec\nrounds: 12397" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 165.4112621391998, + "unit": "iter/sec", + "range": "stddev: 0.0003983632249840716", + "extra": "mean: 6.045537571428857 msec\nrounds: 42" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 171.15191202385557, + "unit": "iter/sec", + "range": "stddev: 0.0017963861363448658", + "extra": "mean: 5.842762655556063 msec\nrounds: 180" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 204.56043835166113, + "unit": "iter/sec", + "range": "stddev: 0.0017401379495018438", + "extra": "mean: 4.8885307836547245 msec\nrounds: 208" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 207.72339847225777, + "unit": "iter/sec", + "range": "stddev: 0.0014901883941638532", + "extra": "mean: 4.814094162500204 msec\nrounds: 160" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 144.55036536963527, + "unit": "iter/sec", + "range": "stddev: 0.00227054487350442", + "extra": "mean: 6.918003959677733 msec\nrounds: 124" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 136.9897737133823, + "unit": "iter/sec", + "range": "stddev: 0.0015250874183775822", + "extra": "mean: 7.299814963504183 msec\nrounds: 137" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 330.67673907411927, + "unit": "iter/sec", + "range": "stddev: 0.0010491359214628423", + "extra": "mean: 3.024101431506665 msec\nrounds: 292" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 226.53457809517386, + "unit": "iter/sec", + "range": "stddev: 0.0012522255524747721", + "extra": "mean: 4.414337133026423 msec\nrounds: 218" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 33.884917670663754, + "unit": "iter/sec", + "range": "stddev: 0.0009785194071024199", + "extra": "mean: 29.51165499999905 msec\nrounds: 34" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 483.83148810890566, + "unit": "iter/sec", + "range": "stddev: 0.00006838907669783264", + "extra": "mean: 2.0668353023251558 msec\nrounds: 430" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 122.55118688785305, + "unit": "iter/sec", + "range": "stddev: 0.0023227515877570254", + "extra": "mean: 8.159855692912243 msec\nrounds: 127" + } + ] + }, + { + "commit": { + "author": { + "email": "alastair@interaction.net.au", + "name": "aweakley", + "username": "aweakley" + }, + "committer": { + "email": "noreply@github.com", + "name": "GitHub", + "username": "web-flow" + }, + "distinct": true, + "id": "d5502742fd3ea330b9b609959a106ae890a29d94", + "message": "Merge pull request #57 from ixc/50_add_performance_tests\n\n50 add performance tests", + "timestamp": "2024-05-28T10:33:12+10:00", + "tree_id": "30f517a2be05f28596a12a860e9c2bf3becb99d4", + "url": "https://github.com/ixc/python-edtf/commit/d5502742fd3ea330b9b609959a106ae890a29d94" + }, + "date": 1716856449659, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 81163.63372123877, + "unit": "iter/sec", + "range": "stddev: 7.965885268953069e-7", + "extra": "mean: 12.320788931586753 usec\nrounds: 2331" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 8739.435327028586, + "unit": "iter/sec", + "range": "stddev: 0.000004993823861630893", + "extra": "mean: 114.4238686574274 usec\nrounds: 670" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 10945.377611171254, + "unit": "iter/sec", + "range": "stddev: 0.000007568937809434162", + "extra": "mean: 91.36276842375574 usec\nrounds: 7531" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 7170.922498239467, + "unit": "iter/sec", + "range": "stddev: 0.000005963564478132597", + "extra": "mean: 139.4520719259635 usec\nrounds: 5172" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 12955.67906939417, + "unit": "iter/sec", + "range": "stddev: 0.000004362416177063508", + "extra": "mean: 77.1862281122993 usec\nrounds: 8715" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 9190.38241228251, + "unit": "iter/sec", + "range": "stddev: 0.000005179750556963184", + "extra": "mean: 108.80940042968696 usec\nrounds: 6518" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 5719.608691566644, + "unit": "iter/sec", + "range": "stddev: 0.000007149717654609308", + "extra": "mean: 174.83713553244715 usec\nrounds: 4486" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 7712.157465338484, + "unit": "iter/sec", + "range": "stddev: 0.000005712848574085785", + "extra": "mean: 129.66540225538697 usec\nrounds: 4967" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 50012.86057469382, + "unit": "iter/sec", + "range": "stddev: 0.0000028263624887115314", + "extra": "mean: 19.99485709293728 usec\nrounds: 2848" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 42964.9006050019, + "unit": "iter/sec", + "range": "stddev: 0.0000015546245544907737", + "extra": "mean: 23.274812368205076 usec\nrounds: 1892" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 25042.426371148173, + "unit": "iter/sec", + "range": "stddev: 0.0000028487841865080073", + "extra": "mean: 39.932232810799746 usec\nrounds: 13715" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 161.3158896622928, + "unit": "iter/sec", + "range": "stddev: 0.0004815099901972496", + "extra": "mean: 6.199017357145988 msec\nrounds: 42" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 167.5829585062012, + "unit": "iter/sec", + "range": "stddev: 0.0016079833082672048", + "extra": "mean: 5.9671938538010485 msec\nrounds: 171" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 199.64426665353568, + "unit": "iter/sec", + "range": "stddev: 0.0019520361927063187", + "extra": "mean: 5.008909180123907 msec\nrounds: 161" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 202.75572264318063, + "unit": "iter/sec", + "range": "stddev: 0.001312982388597033", + "extra": "mean: 4.932043283236196 msec\nrounds: 173" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 141.9951861518736, + "unit": "iter/sec", + "range": "stddev: 0.0019312107846640827", + "extra": "mean: 7.042492264001339 msec\nrounds: 125" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 133.65318484518332, + "unit": "iter/sec", + "range": "stddev: 0.0014400574986738624", + "extra": "mean: 7.482051409087979 msec\nrounds: 132" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 328.1876631840526, + "unit": "iter/sec", + "range": "stddev: 0.00012883155868265216", + "extra": "mean: 3.0470371442304485 msec\nrounds: 208" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 220.63680310242586, + "unit": "iter/sec", + "range": "stddev: 0.0010848079486404782", + "extra": "mean: 4.532335430620664 msec\nrounds: 209" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 32.29119897940656, + "unit": "iter/sec", + "range": "stddev: 0.003078165317686501", + "extra": "mean: 30.968190454548978 msec\nrounds: 33" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 470.8330695137969, + "unit": "iter/sec", + "range": "stddev: 0.00007202264547062383", + "extra": "mean: 2.1238949953805166 msec\nrounds: 433" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 116.99120237855473, + "unit": "iter/sec", + "range": "stddev: 0.002437118434049644", + "extra": "mean: 8.547651273505558 msec\nrounds: 117" + } + ] + }, + { + "commit": { + "author": { + "email": "alastair@interaction.net.au", + "name": "aweakley", + "username": "aweakley" + }, + "committer": { + "email": "noreply@github.com", + "name": "GitHub", + "username": "web-flow" + }, + "distinct": true, + "id": "d5502742fd3ea330b9b609959a106ae890a29d94", + "message": "Merge pull request #57 from ixc/50_add_performance_tests\n\n50 add performance tests", + "timestamp": "2024-05-28T10:33:12+10:00", + "tree_id": "30f517a2be05f28596a12a860e9c2bf3becb99d4", + "url": "https://github.com/ixc/python-edtf/commit/d5502742fd3ea330b9b609959a106ae890a29d94" + }, + "date": 1716856451234, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 82535.56787296855, + "unit": "iter/sec", + "range": "stddev: 0.0000010078962624879046", + "extra": "mean: 12.115988606743601 usec\nrounds: 2282" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 8645.999738534196, + "unit": "iter/sec", + "range": "stddev: 0.000011265293666369967", + "extra": "mean: 115.66042450164768 usec\nrounds: 702" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 10952.756036235593, + "unit": "iter/sec", + "range": "stddev: 0.000005240427710201407", + "extra": "mean: 91.30122105264155 usec\nrounds: 7125" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 7048.883308811026, + "unit": "iter/sec", + "range": "stddev: 0.000007157051529382251", + "extra": "mean: 141.86644269596732 usec\nrounds: 5148" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 12756.442986095128, + "unit": "iter/sec", + "range": "stddev: 0.000004588352550492114", + "extra": "mean: 78.3917586657995 usec\nrounds: 8453" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 8986.630337254512, + "unit": "iter/sec", + "range": "stddev: 0.000008235577738692793", + "extra": "mean: 111.27641423665236 usec\nrounds: 5830" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 5744.400239709143, + "unit": "iter/sec", + "range": "stddev: 0.0000078123241257205", + "extra": "mean: 174.08257751389434 usec\nrounds: 4296" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 7681.897896548731, + "unit": "iter/sec", + "range": "stddev: 0.000005452071376552357", + "extra": "mean: 130.17616394631762 usec\nrounds: 5575" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 50197.46390626085, + "unit": "iter/sec", + "range": "stddev: 0.0000010958753251934646", + "extra": "mean: 19.92132514637409 usec\nrounds: 855" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 43203.81855521334, + "unit": "iter/sec", + "range": "stddev: 0.000001568144846181918", + "extra": "mean: 23.146102206730326 usec\nrounds: 1722" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 24259.752761371914, + "unit": "iter/sec", + "range": "stddev: 0.0000030103162544902437", + "extra": "mean: 41.220535503241834 usec\nrounds: 9985" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 156.28506529866405, + "unit": "iter/sec", + "range": "stddev: 0.0005626952095537637", + "extra": "mean: 6.398564047620155 msec\nrounds: 42" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 163.72358760223312, + "unit": "iter/sec", + "range": "stddev: 0.002264199426244651", + "extra": "mean: 6.1078554082842516 msec\nrounds: 169" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 189.53126779009347, + "unit": "iter/sec", + "range": "stddev: 0.002426213463589815", + "extra": "mean: 5.27617427804843 msec\nrounds: 205" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 199.61813313403985, + "unit": "iter/sec", + "range": "stddev: 0.0018783191918705683", + "extra": "mean: 5.009564934306437 msec\nrounds: 137" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 135.085855478056, + "unit": "iter/sec", + "range": "stddev: 0.0025625931131327702", + "extra": "mean: 7.402699538460893 msec\nrounds: 91" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 128.5872964981493, + "unit": "iter/sec", + "range": "stddev: 0.002615314869635075", + "extra": "mean: 7.77681798461633 msec\nrounds: 130" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 330.74361805221474, + "unit": "iter/sec", + "range": "stddev: 0.000337110575727405", + "extra": "mean: 3.0234899342551467 msec\nrounds: 289" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 220.13324044947495, + "unit": "iter/sec", + "range": "stddev: 0.0014591543364528786", + "extra": "mean: 4.5427033098598315 msec\nrounds: 213" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 32.746611658442596, + "unit": "iter/sec", + "range": "stddev: 0.0008438619857916163", + "extra": "mean: 30.537510580646106 msec\nrounds: 31" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 465.6138340758296, + "unit": "iter/sec", + "range": "stddev: 0.0009444374455410944", + "extra": "mean: 2.147702509709238 msec\nrounds: 412" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 116.5001285392887, + "unit": "iter/sec", + "range": "stddev: 0.00219781131059198", + "extra": "mean: 8.583681516392133 msec\nrounds: 122" + } + ] + }, + { + "commit": { + "author": { + "email": "alastair@interaction.net.au", + "name": "aweakley", + "username": "aweakley" + }, + "committer": { + "email": "noreply@github.com", + "name": "GitHub", + "username": "web-flow" + }, + "distinct": true, + "id": "8c571b06ea682c9dfdd593c3db604528afc65231", + "message": "Merge pull request #58 from artshumrc/38_unspecified_and_qualified\n\nHandle unspecified + qualified EDTF strings", + "timestamp": "2024-05-30T13:25:23+10:00", + "tree_id": "3636362ad61ce4f6fccbe5f68ee35b1192a83583", + "url": "https://github.com/ixc/python-edtf/commit/8c571b06ea682c9dfdd593c3db604528afc65231" + }, + "date": 1717039572754, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 115473.28247708819, + "unit": "iter/sec", + "range": "stddev: 6.892217226180227e-7", + "extra": "mean: 8.660011896677629 usec\nrounds: 2942" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 11239.693362139922, + "unit": "iter/sec", + "range": "stddev: 0.0000062995755467124265", + "extra": "mean: 88.9703987271064 usec\nrounds: 943" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 14199.144153269403, + "unit": "iter/sec", + "range": "stddev: 0.000004070462840967704", + "extra": "mean: 70.42677989643106 usec\nrounds: 8496" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 9455.59831235901, + "unit": "iter/sec", + "range": "stddev: 0.000005623000075420308", + "extra": "mean: 105.75745362331462 usec\nrounds: 6803" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 16743.094508806415, + "unit": "iter/sec", + "range": "stddev: 0.0000035892662869897017", + "extra": "mean: 59.7261157114073 usec\nrounds: 10362" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 11889.476127421716, + "unit": "iter/sec", + "range": "stddev: 0.000004273841808583704", + "extra": "mean: 84.10799511120717 usec\nrounds: 7364" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 7297.001298847354, + "unit": "iter/sec", + "range": "stddev: 0.000013008418162100413", + "extra": "mean: 137.0425958616674 usec\nrounds: 5461" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 10213.512330468131, + "unit": "iter/sec", + "range": "stddev: 0.000004474343440981806", + "extra": "mean: 97.90951120868384 usec\nrounds: 6602" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 69650.12362417835, + "unit": "iter/sec", + "range": "stddev: 0.000001159741238040356", + "extra": "mean: 14.357476311109663 usec\nrounds: 3947" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 57354.65822843898, + "unit": "iter/sec", + "range": "stddev: 9.90296317102358e-7", + "extra": "mean: 17.4353754496641 usec\nrounds: 2501" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 33041.229140187716, + "unit": "iter/sec", + "range": "stddev: 0.0000033462695990736427", + "extra": "mean: 30.26521791175468 usec\nrounds: 12863" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 140.79008517429807, + "unit": "iter/sec", + "range": "stddev: 0.0005742656397720291", + "extra": "mean: 7.102772888886319 msec\nrounds: 45" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 149.33618548102538, + "unit": "iter/sec", + "range": "stddev: 0.0017877336651241852", + "extra": "mean: 6.696300677420609 msec\nrounds: 155" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 182.11509709764061, + "unit": "iter/sec", + "range": "stddev: 0.001789198261135137", + "extra": "mean: 5.491032956283971 msec\nrounds: 183" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 184.9315330641581, + "unit": "iter/sec", + "range": "stddev: 0.001932658300256475", + "extra": "mean: 5.4074066408840675 msec\nrounds: 181" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 128.9487929086597, + "unit": "iter/sec", + "range": "stddev: 0.0005701507961519228", + "extra": "mean: 7.755016370787943 msec\nrounds: 89" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 99.63586479037822, + "unit": "iter/sec", + "range": "stddev: 0.00197504485807701", + "extra": "mean: 10.0365466000007 msec\nrounds: 95" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 236.97575077583576, + "unit": "iter/sec", + "range": "stddev: 0.00016958956343277954", + "extra": "mean: 4.219841045871134 msec\nrounds: 218" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 193.40269878640743, + "unit": "iter/sec", + "range": "stddev: 0.0011523680272047042", + "extra": "mean: 5.1705586647702 msec\nrounds: 176" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 19.034387555964127, + "unit": "iter/sec", + "range": "stddev: 0.0020161986609378403", + "extra": "mean: 52.53649465000336 msec\nrounds: 20" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 408.7536574482525, + "unit": "iter/sec", + "range": "stddev: 0.00010381520587162339", + "extra": "mean: 2.4464612897723077 msec\nrounds: 352" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 107.03202662605699, + "unit": "iter/sec", + "range": "stddev: 0.0025653094167466545", + "extra": "mean: 9.34299790000005 msec\nrounds: 90" + } + ] + }, + { + "commit": { + "author": { + "email": "alastair@interaction.net.au", + "name": "aweakley", + "username": "aweakley" + }, + "committer": { + "email": "noreply@github.com", + "name": "GitHub", + "username": "web-flow" + }, + "distinct": true, + "id": "8c571b06ea682c9dfdd593c3db604528afc65231", + "message": "Merge pull request #58 from artshumrc/38_unspecified_and_qualified\n\nHandle unspecified + qualified EDTF strings", + "timestamp": "2024-05-30T13:25:23+10:00", + "tree_id": "3636362ad61ce4f6fccbe5f68ee35b1192a83583", + "url": "https://github.com/ixc/python-edtf/commit/8c571b06ea682c9dfdd593c3db604528afc65231" + }, + "date": 1717039576896, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 77630.15869463485, + "unit": "iter/sec", + "range": "stddev: 9.532488953649598e-7", + "extra": "mean: 12.881591598100284 usec\nrounds: 2309" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 8562.827782663562, + "unit": "iter/sec", + "range": "stddev: 0.000005890487212241515", + "extra": "mean: 116.78385054346369 usec\nrounds: 736" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 10638.283162590493, + "unit": "iter/sec", + "range": "stddev: 0.000010150909086859222", + "extra": "mean: 94.00012997553013 usec\nrounds: 7386" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 7001.018396118417, + "unit": "iter/sec", + "range": "stddev: 0.00000633874299818531", + "extra": "mean: 142.83636228615416 usec\nrounds: 5319" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 12543.828394647502, + "unit": "iter/sec", + "range": "stddev: 0.000010677404233182202", + "extra": "mean: 79.72047835306036 usec\nrounds: 8477" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 8827.86430939172, + "unit": "iter/sec", + "range": "stddev: 0.000011023073365087437", + "extra": "mean: 113.27768132277791 usec\nrounds: 5686" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 5672.425128051711, + "unit": "iter/sec", + "range": "stddev: 0.000006841684598898733", + "extra": "mean: 176.29144103722473 usec\nrounds: 4435" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 7494.617621801088, + "unit": "iter/sec", + "range": "stddev: 0.00001579902647925606", + "extra": "mean: 133.42908877580368 usec\nrounds: 5114" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 50062.584528723266, + "unit": "iter/sec", + "range": "stddev: 0.000001341790578819711", + "extra": "mean: 19.974997483924405 usec\nrounds: 2782" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 43114.01576137538, + "unit": "iter/sec", + "range": "stddev: 0.0000013018284253157786", + "extra": "mean: 23.19431355071943 usec\nrounds: 1904" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 24494.963389278204, + "unit": "iter/sec", + "range": "stddev: 0.0000026253622906564036", + "extra": "mean: 40.824719110938304 usec\nrounds: 10214" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 164.22004283018052, + "unit": "iter/sec", + "range": "stddev: 0.0003931099430395793", + "extra": "mean: 6.089390690478001 msec\nrounds: 42" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 167.13379086504494, + "unit": "iter/sec", + "range": "stddev: 0.0022112498799979007", + "extra": "mean: 5.983230529411418 msec\nrounds: 170" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 204.1525094584021, + "unit": "iter/sec", + "range": "stddev: 0.0015942696093719177", + "extra": "mean: 4.898298838710865 msec\nrounds: 155" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 197.44806503454407, + "unit": "iter/sec", + "range": "stddev: 0.0019906773321384276", + "extra": "mean: 5.064622941860925 msec\nrounds: 172" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 144.24625762718858, + "unit": "iter/sec", + "range": "stddev: 0.0017543021037471976", + "extra": "mean: 6.9325888688533475 msec\nrounds: 122" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 121.09553614351807, + "unit": "iter/sec", + "range": "stddev: 0.0017072066931886852", + "extra": "mean: 8.257942710743986 msec\nrounds: 121" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 323.67550221505735, + "unit": "iter/sec", + "range": "stddev: 0.001033612812087955", + "extra": "mean: 3.089514013746945 msec\nrounds: 291" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 221.9518591243202, + "unit": "iter/sec", + "range": "stddev: 0.0013481207704537468", + "extra": "mean: 4.505481521737908 msec\nrounds: 207" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 32.504127423901686, + "unit": "iter/sec", + "range": "stddev: 0.0004688147362672703", + "extra": "mean: 30.765323645164425 msec\nrounds: 31" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 447.51664846255244, + "unit": "iter/sec", + "range": "stddev: 0.00006378647789237606", + "extra": "mean: 2.2345537388061634 msec\nrounds: 402" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 118.23086698094892, + "unit": "iter/sec", + "range": "stddev: 0.002535503865553342", + "extra": "mean: 8.45802814049511 msec\nrounds: 121" + } + ] + }, + { + "commit": { + "author": { + "email": "alastair@interaction.net.au", + "name": "aweakley", + "username": "aweakley" + }, + "committer": { + "email": "noreply@github.com", + "name": "GitHub", + "username": "web-flow" + }, + "distinct": true, + "id": "8c571b06ea682c9dfdd593c3db604528afc65231", + "message": "Merge pull request #58 from artshumrc/38_unspecified_and_qualified\n\nHandle unspecified + qualified EDTF strings", + "timestamp": "2024-05-30T13:25:23+10:00", + "tree_id": "3636362ad61ce4f6fccbe5f68ee35b1192a83583", + "url": "https://github.com/ixc/python-edtf/commit/8c571b06ea682c9dfdd593c3db604528afc65231" + }, + "date": 1717039578806, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 70377.46304053394, + "unit": "iter/sec", + "range": "stddev: 0.0000010431992410921063", + "extra": "mean: 14.209094173003216 usec\nrounds: 1922" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 8117.020311468955, + "unit": "iter/sec", + "range": "stddev: 0.00000608785296473572", + "extra": "mean: 123.19791766284591 usec\nrounds: 753" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 9815.38443996785, + "unit": "iter/sec", + "range": "stddev: 0.000005128026648545201", + "extra": "mean: 101.88087956372249 usec\nrounds: 4218" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 6657.454499121609, + "unit": "iter/sec", + "range": "stddev: 0.000006605589332217527", + "extra": "mean: 150.20756058219263 usec\nrounds: 3227" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 11412.291154824388, + "unit": "iter/sec", + "range": "stddev: 0.0000047465604556007605", + "extra": "mean: 87.62482366016957 usec\nrounds: 4497" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 8368.135389861027, + "unit": "iter/sec", + "range": "stddev: 0.000006985066674024882", + "extra": "mean: 119.50093460624655 usec\nrounds: 3823" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 5635.75928318168, + "unit": "iter/sec", + "range": "stddev: 0.000008443690669484734", + "extra": "mean: 177.4383804830372 usec\nrounds: 3146" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 7282.077174031033, + "unit": "iter/sec", + "range": "stddev: 0.000007101032851289587", + "extra": "mean: 137.32345539623614 usec\nrounds: 3632" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 50142.31612759601, + "unit": "iter/sec", + "range": "stddev: 0.0000011903015554502781", + "extra": "mean: 19.94323512011936 usec\nrounds: 3041" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 44115.0379436738, + "unit": "iter/sec", + "range": "stddev: 0.0000018883626131213955", + "extra": "mean: 22.668007251332362 usec\nrounds: 1379" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 21608.197429498137, + "unit": "iter/sec", + "range": "stddev: 0.000007344324846058169", + "extra": "mean: 46.27873302540561 usec\nrounds: 7143" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 126.60766195283503, + "unit": "iter/sec", + "range": "stddev: 0.000563686524152733", + "extra": "mean: 7.89841613513508 msec\nrounds: 37" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 134.56856057900393, + "unit": "iter/sec", + "range": "stddev: 0.0013709453963450676", + "extra": "mean: 7.431156249998746 msec\nrounds: 112" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 162.99461019447486, + "unit": "iter/sec", + "range": "stddev: 0.0015033079891112232", + "extra": "mean: 6.135172192545896 msec\nrounds: 161" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 166.77008896362474, + "unit": "iter/sec", + "range": "stddev: 0.0011376163746327453", + "extra": "mean: 5.99627910624978 msec\nrounds: 160" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 112.92884647813096, + "unit": "iter/sec", + "range": "stddev: 0.0012693542819258025", + "extra": "mean: 8.85513339759167 msec\nrounds: 83" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 91.10517502436545, + "unit": "iter/sec", + "range": "stddev: 0.0013745222742781225", + "extra": "mean: 10.976324887500155 msec\nrounds: 80" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 212.6588561913261, + "unit": "iter/sec", + "range": "stddev: 0.0007609775853322179", + "extra": "mean: 4.702367058253687 msec\nrounds: 206" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 174.13764322848422, + "unit": "iter/sec", + "range": "stddev: 0.00020214438199745043", + "extra": "mean: 5.742583748465633 msec\nrounds: 163" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 18.046961853526202, + "unit": "iter/sec", + "range": "stddev: 0.0031043052120966123", + "extra": "mean: 55.410988736844345 msec\nrounds: 19" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 345.03689272472576, + "unit": "iter/sec", + "range": "stddev: 0.00008712062191644135", + "extra": "mean: 2.8982407999999324 msec\nrounds: 315" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 95.70514475033563, + "unit": "iter/sec", + "range": "stddev: 0.0014528695705479575", + "extra": "mean: 10.448759077776673 msec\nrounds: 90" + } + ] + }, + { + "commit": { + "author": { + "email": "alastair@interaction.net.au", + "name": "aweakley", + "username": "aweakley" + }, + "committer": { + "email": "noreply@github.com", + "name": "GitHub", + "username": "web-flow" + }, + "distinct": true, + "id": "8c571b06ea682c9dfdd593c3db604528afc65231", + "message": "Merge pull request #58 from artshumrc/38_unspecified_and_qualified\n\nHandle unspecified + qualified EDTF strings", + "timestamp": "2024-05-30T13:25:23+10:00", + "tree_id": "3636362ad61ce4f6fccbe5f68ee35b1192a83583", + "url": "https://github.com/ixc/python-edtf/commit/8c571b06ea682c9dfdd593c3db604528afc65231" + }, + "date": 1717039580861, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 82108.35216809128, + "unit": "iter/sec", + "range": "stddev: 7.735852371383678e-7", + "extra": "mean: 12.179028973237845 usec\nrounds: 2278" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 8433.370065990212, + "unit": "iter/sec", + "range": "stddev: 0.000011658399084075656", + "extra": "mean: 118.57655862070652 usec\nrounds: 725" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 10671.784471328569, + "unit": "iter/sec", + "range": "stddev: 0.0000055023742756277", + "extra": "mean: 93.70504086609486 usec\nrounds: 6974" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 7014.559895601894, + "unit": "iter/sec", + "range": "stddev: 0.000009582342207772162", + "extra": "mean: 142.56061889599044 usec\nrounds: 5345" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 12758.5441121223, + "unit": "iter/sec", + "range": "stddev: 0.000005400039159652064", + "extra": "mean: 78.37884881001965 usec\nrounds: 8572" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 8928.143052880607, + "unit": "iter/sec", + "range": "stddev: 0.000005510369666375872", + "extra": "mean: 112.00537380249038 usec\nrounds: 5741" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 5638.387591114458, + "unit": "iter/sec", + "range": "stddev: 0.000007566655971578114", + "extra": "mean: 177.3556684141227 usec\nrounds: 3815" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 7611.458782372489, + "unit": "iter/sec", + "range": "stddev: 0.000007962379829607028", + "extra": "mean: 131.3808599103128 usec\nrounds: 5575" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 49402.98615214202, + "unit": "iter/sec", + "range": "stddev: 0.0000018889456776811555", + "extra": "mean: 20.241691401414244 usec\nrounds: 2803" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 41800.49305088466, + "unit": "iter/sec", + "range": "stddev: 0.0000016601623474034887", + "extra": "mean: 23.923162790990958 usec\nrounds: 1634" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 24509.41666763281, + "unit": "iter/sec", + "range": "stddev: 0.000003113348751963193", + "extra": "mean: 40.80064464857714 usec\nrounds: 9689" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 153.57165986138358, + "unit": "iter/sec", + "range": "stddev: 0.0006795570311113636", + "extra": "mean: 6.511618099997207 msec\nrounds: 40" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 161.42837486708365, + "unit": "iter/sec", + "range": "stddev: 0.0024103575694355717", + "extra": "mean: 6.194697808383294 msec\nrounds: 167" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 195.98441003006536, + "unit": "iter/sec", + "range": "stddev: 0.0019984961938390618", + "extra": "mean: 5.1024466683171035 msec\nrounds: 202" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 197.2891047919362, + "unit": "iter/sec", + "range": "stddev: 0.0014931277224440765", + "extra": "mean: 5.068703621797128 msec\nrounds: 156" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 140.55988451674907, + "unit": "iter/sec", + "range": "stddev: 0.001807083651951392", + "extra": "mean: 7.114405389831124 msec\nrounds: 118" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 120.3484714059126, + "unit": "iter/sec", + "range": "stddev: 0.0014661210799720137", + "extra": "mean: 8.309204000000875 msec\nrounds: 119" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 317.745812714271, + "unit": "iter/sec", + "range": "stddev: 0.0010555120074197003", + "extra": "mean: 3.1471697186431147 msec\nrounds: 295" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 216.853159842871, + "unit": "iter/sec", + "range": "stddev: 0.0011535139046581285", + "extra": "mean: 4.611415396135279 msec\nrounds: 207" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 31.666475765486677, + "unit": "iter/sec", + "range": "stddev: 0.0004493945596866302", + "extra": "mean: 31.579137741936567 msec\nrounds: 31" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 422.78952964814164, + "unit": "iter/sec", + "range": "stddev: 0.0004454535812789434", + "extra": "mean: 2.365243058010993 msec\nrounds: 362" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 115.29908762244492, + "unit": "iter/sec", + "range": "stddev: 0.00260346386271708", + "extra": "mean: 8.67309551723923 msec\nrounds: 116" + } + ] + }, + { + "commit": { + "author": { + "email": "alastair@interaction.net.au", + "name": "aweakley", + "username": "aweakley" + }, + "committer": { + "email": "noreply@github.com", + "name": "GitHub", + "username": "web-flow" + }, + "distinct": true, + "id": "8c571b06ea682c9dfdd593c3db604528afc65231", + "message": "Merge pull request #58 from artshumrc/38_unspecified_and_qualified\n\nHandle unspecified + qualified EDTF strings", + "timestamp": "2024-05-30T13:25:23+10:00", + "tree_id": "3636362ad61ce4f6fccbe5f68ee35b1192a83583", + "url": "https://github.com/ixc/python-edtf/commit/8c571b06ea682c9dfdd593c3db604528afc65231" + }, + "date": 1717039581007, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 86935.54190741367, + "unit": "iter/sec", + "range": "stddev: 8.801351312055946e-7", + "extra": "mean: 11.5027752523243 usec\nrounds: 2376" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 8871.250916535719, + "unit": "iter/sec", + "range": "stddev: 0.000006170533054955764", + "extra": "mean: 112.72367441845581 usec\nrounds: 516" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 11292.512453597992, + "unit": "iter/sec", + "range": "stddev: 0.000006285789742846082", + "extra": "mean: 88.55425257302971 usec\nrounds: 7190" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 7549.978591732842, + "unit": "iter/sec", + "range": "stddev: 0.000005876983775780713", + "extra": "mean: 132.45070669405487 usec\nrounds: 5363" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 12936.725208274147, + "unit": "iter/sec", + "range": "stddev: 0.000012666981444328682", + "extra": "mean: 77.29931523631763 usec\nrounds: 8086" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 9424.857320878093, + "unit": "iter/sec", + "range": "stddev: 0.0000058642857514609236", + "extra": "mean: 106.10240197321441 usec\nrounds: 6284" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 6077.713959723717, + "unit": "iter/sec", + "range": "stddev: 0.000006937932015900124", + "extra": "mean: 164.53554850176897 usec\nrounds: 4505" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 8213.645609693585, + "unit": "iter/sec", + "range": "stddev: 0.0000064998136694677345", + "extra": "mean: 121.74861779035358 usec\nrounds: 5947" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 51452.332000218776, + "unit": "iter/sec", + "range": "stddev: 0.0000014305935571446778", + "extra": "mean: 19.435465043562033 usec\nrounds: 2875" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 45922.4966193415, + "unit": "iter/sec", + "range": "stddev: 0.0000015788419936961112", + "extra": "mean: 21.77581955722379 usec\nrounds: 1851" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 24937.94683976795, + "unit": "iter/sec", + "range": "stddev: 0.0000030011544247201534", + "extra": "mean: 40.09953210764424 usec\nrounds: 10823" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 165.36847658209376, + "unit": "iter/sec", + "range": "stddev: 0.00038541761067305324", + "extra": "mean: 6.047101724998782 msec\nrounds: 40" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 169.41717431307598, + "unit": "iter/sec", + "range": "stddev: 0.002010022722081676", + "extra": "mean: 5.902589298013206 msec\nrounds: 151" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 210.6033384312808, + "unit": "iter/sec", + "range": "stddev: 0.0012366861130870522", + "extra": "mean: 4.748262812207495 msec\nrounds: 213" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 202.47874479380712, + "unit": "iter/sec", + "range": "stddev: 0.0018942275022620898", + "extra": "mean: 4.9387899999989795 msec\nrounds: 210" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 147.00507524179153, + "unit": "iter/sec", + "range": "stddev: 0.0018282458353072648", + "extra": "mean: 6.802486229507496 msec\nrounds: 122" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 125.91576445493938, + "unit": "iter/sec", + "range": "stddev: 0.0017271233420462812", + "extra": "mean: 7.941817327868134 msec\nrounds: 122" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 337.34774453386945, + "unit": "iter/sec", + "range": "stddev: 0.00013720999161622756", + "extra": "mean: 2.964300239747418 msec\nrounds: 317" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 226.95544995852498, + "unit": "iter/sec", + "range": "stddev: 0.0011509342010363613", + "extra": "mean: 4.406151075828958 msec\nrounds: 211" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 32.429203557428934, + "unit": "iter/sec", + "range": "stddev: 0.003395677909733358", + "extra": "mean: 30.836403312498817 msec\nrounds: 32" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 457.37605744003304, + "unit": "iter/sec", + "range": "stddev: 0.00007655377782067135", + "extra": "mean: 2.1863846690993674 msec\nrounds: 411" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 122.30268409990637, + "unit": "iter/sec", + "range": "stddev: 0.002483795001362941", + "extra": "mean: 8.176435434426951 msec\nrounds: 122" + } + ] + }, + { + "commit": { + "author": { + "email": "alastair@interaction.net.au", + "name": "aweakley", + "username": "aweakley" + }, + "committer": { + "email": "noreply@github.com", + "name": "GitHub", + "username": "web-flow" + }, + "distinct": true, + "id": "d779dea0301ace7557dd92112ed508deaa420f48", + "message": "Merge pull request #59 from artshumrc/30_improve_exceptions\n\nImprove exceptions", + "timestamp": "2024-06-11T09:46:22+10:00", + "tree_id": "f824d71d68f294ec4ccc975060fdc525c6bce289", + "url": "https://github.com/ixc/python-edtf/commit/d779dea0301ace7557dd92112ed508deaa420f48" + }, + "date": 1718063233315, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 111005.63683471343, + "unit": "iter/sec", + "range": "stddev: 0.0000017682682176122463", + "extra": "mean: 9.008551534090046 usec\nrounds: 2901" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 11527.049523833446, + "unit": "iter/sec", + "range": "stddev: 0.00000696274694724977", + "extra": "mean: 86.75246843803262 usec\nrounds: 903" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 14254.600310800304, + "unit": "iter/sec", + "range": "stddev: 0.000004171374347488453", + "extra": "mean: 70.15279125310363 usec\nrounds: 8963" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 9492.852176537901, + "unit": "iter/sec", + "range": "stddev: 0.0000049421127908965", + "extra": "mean: 105.34241779004569 usec\nrounds: 6824" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 16757.389733104177, + "unit": "iter/sec", + "range": "stddev: 0.000005789960308121746", + "extra": "mean: 59.675165161582576 usec\nrounds: 9966" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 11366.497349357842, + "unit": "iter/sec", + "range": "stddev: 0.00001685585653437466", + "extra": "mean: 87.97785010318026 usec\nrounds: 7265" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 7565.309539663209, + "unit": "iter/sec", + "range": "stddev: 0.000006333742116734396", + "extra": "mean: 132.1822979955051 usec\nrounds: 5188" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 10281.974119491722, + "unit": "iter/sec", + "range": "stddev: 0.000005685894741382306", + "extra": "mean: 97.25758773349584 usec\nrounds: 6799" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 68293.37375977173, + "unit": "iter/sec", + "range": "stddev: 0.0000015277564740450068", + "extra": "mean: 14.642709020608539 usec\nrounds: 3880" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 56457.11584605515, + "unit": "iter/sec", + "range": "stddev: 0.0000013775247465895603", + "extra": "mean: 17.712559081600222 usec\nrounds: 2395" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 32791.422863402906, + "unit": "iter/sec", + "range": "stddev: 0.000002322618862403658", + "extra": "mean: 30.49577946543018 usec\nrounds: 11785" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 143.76257483714818, + "unit": "iter/sec", + "range": "stddev: 0.0005744237587077905", + "extra": "mean: 6.955913255816287 msec\nrounds: 43" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 150.3612533892027, + "unit": "iter/sec", + "range": "stddev: 0.002118574842319749", + "extra": "mean: 6.650649535432836 msec\nrounds: 127" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 183.96503515596967, + "unit": "iter/sec", + "range": "stddev: 0.002042248208139641", + "extra": "mean: 5.435815556756085 msec\nrounds: 185" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 184.52193671007785, + "unit": "iter/sec", + "range": "stddev: 0.0015797212485958547", + "extra": "mean: 5.41940984269641 msec\nrounds: 178" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 124.0054830892155, + "unit": "iter/sec", + "range": "stddev: 0.002651854613621762", + "extra": "mean: 8.064159544304601 msec\nrounds: 79" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 101.09448387669151, + "unit": "iter/sec", + "range": "stddev: 0.0017434150030809575", + "extra": "mean: 9.891736538461734 msec\nrounds: 104" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 230.8840765355795, + "unit": "iter/sec", + "range": "stddev: 0.0011766118290818851", + "extra": "mean: 4.331177857758844 msec\nrounds: 232" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 195.02695994500073, + "unit": "iter/sec", + "range": "stddev: 0.0004080168133067918", + "extra": "mean: 5.127496220430285 msec\nrounds: 186" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 19.217922899334646, + "unit": "iter/sec", + "range": "stddev: 0.0038690581918563597", + "extra": "mean: 52.03475969999971 msec\nrounds: 20" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 407.6574222826331, + "unit": "iter/sec", + "range": "stddev: 0.00009371461743442357", + "extra": "mean: 2.4530400903793423 msec\nrounds: 343" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 108.34927744937332, + "unit": "iter/sec", + "range": "stddev: 0.0018375314022531799", + "extra": "mean: 9.229410878787398 msec\nrounds: 99" + } + ] + }, + { + "commit": { + "author": { + "email": "alastair@interaction.net.au", + "name": "aweakley", + "username": "aweakley" + }, + "committer": { + "email": "noreply@github.com", + "name": "GitHub", + "username": "web-flow" + }, + "distinct": true, + "id": "d779dea0301ace7557dd92112ed508deaa420f48", + "message": "Merge pull request #59 from artshumrc/30_improve_exceptions\n\nImprove exceptions", + "timestamp": "2024-06-11T09:46:22+10:00", + "tree_id": "f824d71d68f294ec4ccc975060fdc525c6bce289", + "url": "https://github.com/ixc/python-edtf/commit/d779dea0301ace7557dd92112ed508deaa420f48" + }, + "date": 1718063235484, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 68565.70186519259, + "unit": "iter/sec", + "range": "stddev: 8.684546637475877e-7", + "extra": "mean: 14.584551354350687 usec\nrounds: 1957" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 8251.641887390035, + "unit": "iter/sec", + "range": "stddev: 0.000006147149319770127", + "extra": "mean: 121.188002781383 usec\nrounds: 719" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 9893.095505289712, + "unit": "iter/sec", + "range": "stddev: 0.000007540126092277109", + "extra": "mean: 101.0805970148891 usec\nrounds: 4288" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 6683.548631438719, + "unit": "iter/sec", + "range": "stddev: 0.00001910523673765663", + "extra": "mean: 149.62111524050317 usec\nrounds: 3471" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 11749.935405959652, + "unit": "iter/sec", + "range": "stddev: 0.000004897789718904393", + "extra": "mean: 85.10685084215807 usec\nrounds: 4988" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 8531.993371124214, + "unit": "iter/sec", + "range": "stddev: 0.0000066463839587187185", + "extra": "mean: 117.20590447062614 usec\nrounds: 3758" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 5691.669833937218, + "unit": "iter/sec", + "range": "stddev: 0.000006984496120375181", + "extra": "mean: 175.69536343049768 usec\nrounds: 3090" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 7252.879987386495, + "unit": "iter/sec", + "range": "stddev: 0.00001657618125870849", + "extra": "mean: 137.87626456512487 usec\nrounds: 3553" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 50653.86389440689, + "unit": "iter/sec", + "range": "stddev: 0.0000011152606591618344", + "extra": "mean: 19.74183059528492 usec\nrounds: 2922" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 44763.72795136897, + "unit": "iter/sec", + "range": "stddev: 0.0000013043977803572041", + "extra": "mean: 22.33951562493619 usec\nrounds: 1920" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 22703.702107256147, + "unit": "iter/sec", + "range": "stddev: 0.0000028659089261372303", + "extra": "mean: 44.04568009551174 usec\nrounds: 6280" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 125.31480009177066, + "unit": "iter/sec", + "range": "stddev: 0.000583768564734624", + "extra": "mean: 7.979903405405258 msec\nrounds: 37" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 132.14243996328395, + "unit": "iter/sec", + "range": "stddev: 0.0016059737083343073", + "extra": "mean: 7.567591458715702 msec\nrounds: 109" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 159.2495633459142, + "unit": "iter/sec", + "range": "stddev: 0.002014305525718852", + "extra": "mean: 6.27945206874978 msec\nrounds: 160" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 163.34214355772326, + "unit": "iter/sec", + "range": "stddev: 0.0016528368454771514", + "extra": "mean: 6.1221187515921835 msec\nrounds: 157" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 111.04722654651461, + "unit": "iter/sec", + "range": "stddev: 0.0019616365981145393", + "extra": "mean: 9.005177626666145 msec\nrounds: 75" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 89.57090155140065, + "unit": "iter/sec", + "range": "stddev: 0.0019311473948054158", + "extra": "mean: 11.16434001087 msec\nrounds: 92" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 204.11067176192637, + "unit": "iter/sec", + "range": "stddev: 0.0010662401236431378", + "extra": "mean: 4.899302870191887 msec\nrounds: 208" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 171.93176127283851, + "unit": "iter/sec", + "range": "stddev: 0.00023012912768933047", + "extra": "mean: 5.816261013071924 msec\nrounds: 153" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 17.83109549784465, + "unit": "iter/sec", + "range": "stddev: 0.004266520247171723", + "extra": "mean: 56.08180384210694 msec\nrounds: 19" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 341.27847183684713, + "unit": "iter/sec", + "range": "stddev: 0.00010151926671948867", + "extra": "mean: 2.9301584556967417 msec\nrounds: 316" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 94.6344677750013, + "unit": "iter/sec", + "range": "stddev: 0.0020684961804681577", + "extra": "mean: 10.566974417582774 msec\nrounds: 91" + } + ] + }, + { + "commit": { + "author": { + "email": "alastair@interaction.net.au", + "name": "aweakley", + "username": "aweakley" + }, + "committer": { + "email": "noreply@github.com", + "name": "GitHub", + "username": "web-flow" + }, + "distinct": true, + "id": "d779dea0301ace7557dd92112ed508deaa420f48", + "message": "Merge pull request #59 from artshumrc/30_improve_exceptions\n\nImprove exceptions", + "timestamp": "2024-06-11T09:46:22+10:00", + "tree_id": "f824d71d68f294ec4ccc975060fdc525c6bce289", + "url": "https://github.com/ixc/python-edtf/commit/d779dea0301ace7557dd92112ed508deaa420f48" + }, + "date": 1718063235579, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 80010.82057818951, + "unit": "iter/sec", + "range": "stddev: 0.000001852545251907599", + "extra": "mean: 12.498309513308431 usec\nrounds: 2281" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 8084.8068481477785, + "unit": "iter/sec", + "range": "stddev: 0.000030349699900587895", + "extra": "mean: 123.68879291520723 usec\nrounds: 734" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 10709.034003263638, + "unit": "iter/sec", + "range": "stddev: 0.000006845186086995401", + "extra": "mean: 93.37910400650931 usec\nrounds: 7413" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 7088.951914508556, + "unit": "iter/sec", + "range": "stddev: 0.0000055900965671259004", + "extra": "mean: 141.06457654951174 usec\nrounds: 5356" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 11985.163264525669, + "unit": "iter/sec", + "range": "stddev: 0.000019120783515650353", + "extra": "mean: 83.43649376557546 usec\nrounds: 8421" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 8747.241558395557, + "unit": "iter/sec", + "range": "stddev: 0.000014586828969524309", + "extra": "mean: 114.3217542723746 usec\nrounds: 6027" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 5581.634439332814, + "unit": "iter/sec", + "range": "stddev: 0.000017471578781529484", + "extra": "mean: 179.1589920244817 usec\nrounds: 4263" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 7580.051738664867, + "unit": "iter/sec", + "range": "stddev: 0.000009542788131120004", + "extra": "mean: 131.92522089250775 usec\nrounds: 4011" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 51137.34550580195, + "unit": "iter/sec", + "range": "stddev: 0.0000019749523810492436", + "extra": "mean: 19.555180076496967 usec\nrounds: 2871" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 43507.15940502727, + "unit": "iter/sec", + "range": "stddev: 0.0000033239747561749536", + "extra": "mean: 22.984722828961566 usec\nrounds: 1923" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 24651.13509176513, + "unit": "iter/sec", + "range": "stddev: 0.0000031575008238663923", + "extra": "mean: 40.566083317358334 usec\nrounds: 10418" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 162.12207607046724, + "unit": "iter/sec", + "range": "stddev: 0.000412908550996007", + "extra": "mean: 6.168191428571052 msec\nrounds: 42" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 168.93918927928488, + "unit": "iter/sec", + "range": "stddev: 0.0016491563422614311", + "extra": "mean: 5.919289682081 msec\nrounds: 173" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 203.0759593372801, + "unit": "iter/sec", + "range": "stddev: 0.0015908104154013566", + "extra": "mean: 4.924265793269715 msec\nrounds: 208" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 200.59535247021878, + "unit": "iter/sec", + "range": "stddev: 0.0015551915941360215", + "extra": "mean: 4.985160362319282 msec\nrounds: 207" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 144.03995766930578, + "unit": "iter/sec", + "range": "stddev: 0.0016567787722809866", + "extra": "mean: 6.942518008064475 msec\nrounds: 124" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 124.80842345376387, + "unit": "iter/sec", + "range": "stddev: 0.00017042468152964519", + "extra": "mean: 8.012279719008363 msec\nrounds: 121" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 325.04132629597086, + "unit": "iter/sec", + "range": "stddev: 0.0008847208643065698", + "extra": "mean: 3.0765318717947765 msec\nrounds: 312" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 223.23079218713698, + "unit": "iter/sec", + "range": "stddev: 0.0011438808260475265", + "extra": "mean: 4.47966873298415 msec\nrounds: 191" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 32.773017088519445, + "unit": "iter/sec", + "range": "stddev: 0.000672994046300672", + "extra": "mean: 30.512906312501364 msec\nrounds: 32" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 442.81560288292786, + "unit": "iter/sec", + "range": "stddev: 0.00006599285547089867", + "extra": "mean: 2.2582763423184553 msec\nrounds: 371" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 119.93274768246496, + "unit": "iter/sec", + "range": "stddev: 0.0023126477564336585", + "extra": "mean: 8.338006252033923 msec\nrounds: 123" + } + ] + }, + { + "commit": { + "author": { + "email": "alastair@interaction.net.au", + "name": "aweakley", + "username": "aweakley" + }, + "committer": { + "email": "noreply@github.com", + "name": "GitHub", + "username": "web-flow" + }, + "distinct": true, + "id": "d779dea0301ace7557dd92112ed508deaa420f48", + "message": "Merge pull request #59 from artshumrc/30_improve_exceptions\n\nImprove exceptions", + "timestamp": "2024-06-11T09:46:22+10:00", + "tree_id": "f824d71d68f294ec4ccc975060fdc525c6bce289", + "url": "https://github.com/ixc/python-edtf/commit/d779dea0301ace7557dd92112ed508deaa420f48" + }, + "date": 1718063237693, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 86556.75449393514, + "unit": "iter/sec", + "range": "stddev: 0.0000019784953189788867", + "extra": "mean: 11.553113397638633 usec\nrounds: 2284" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 8670.096986621742, + "unit": "iter/sec", + "range": "stddev: 0.00001761219031452322", + "extra": "mean: 115.33896351367632 usec\nrounds: 740" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 11266.624552402978, + "unit": "iter/sec", + "range": "stddev: 0.00000831898441910508", + "extra": "mean: 88.75772822186723 usec\nrounds: 6704" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 7503.175442389738, + "unit": "iter/sec", + "range": "stddev: 0.000007677405071129311", + "extra": "mean: 133.27690491554108 usec\nrounds: 5269" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 12996.145773778564, + "unit": "iter/sec", + "range": "stddev: 0.000005253516920446241", + "extra": "mean: 76.9458897589185 usec\nrounds: 3320" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 9353.06503408347, + "unit": "iter/sec", + "range": "stddev: 0.000005846476547500055", + "extra": "mean: 106.9168231329413 usec\nrounds: 5637" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 6012.844173366893, + "unit": "iter/sec", + "range": "stddev: 0.000007470707801391458", + "extra": "mean: 166.31064620456473 usec\nrounds: 4268" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 8099.935487454162, + "unit": "iter/sec", + "range": "stddev: 0.0000063936461357170806", + "extra": "mean: 123.45777340435379 usec\nrounds: 5437" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 52982.61293827539, + "unit": "iter/sec", + "range": "stddev: 0.0000014073694334867505", + "extra": "mean: 18.87411632878502 usec\nrounds: 2811" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 46289.4941363723, + "unit": "iter/sec", + "range": "stddev: 0.0000016567722790671474", + "extra": "mean: 21.603174082091403 usec\nrounds: 1798" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 25238.40642759065, + "unit": "iter/sec", + "range": "stddev: 0.000003589463738838075", + "extra": "mean: 39.62215296235182 usec\nrounds: 9486" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 159.65659847042832, + "unit": "iter/sec", + "range": "stddev: 0.0004835673468739362", + "extra": "mean: 6.263442974361128 msec\nrounds: 39" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 157.98601433201807, + "unit": "iter/sec", + "range": "stddev: 0.0028104129697043897", + "extra": "mean: 6.329674207100597 msec\nrounds: 169" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 200.45762238933855, + "unit": "iter/sec", + "range": "stddev: 0.0016761999023262454", + "extra": "mean: 4.9885855577881255 msec\nrounds: 199" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 191.6049279901953, + "unit": "iter/sec", + "range": "stddev: 0.0023977207499726707", + "extra": "mean: 5.219072445000847 msec\nrounds: 200" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 137.084600300301, + "unit": "iter/sec", + "range": "stddev: 0.0029256446325601716", + "extra": "mean: 7.29476540624822 msec\nrounds: 96" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 118.8121062374945, + "unit": "iter/sec", + "range": "stddev: 0.00225926067242271", + "extra": "mean: 8.416650724136577 msec\nrounds: 116" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 326.30357424829464, + "unit": "iter/sec", + "range": "stddev: 0.00014782593818195", + "extra": "mean: 3.064630849673343 msec\nrounds: 306" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 214.80153087774667, + "unit": "iter/sec", + "range": "stddev: 0.0016951267623196156", + "extra": "mean: 4.655460302883714 msec\nrounds: 208" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 31.14927207568051, + "unit": "iter/sec", + "range": "stddev: 0.004585274256172595", + "extra": "mean: 32.103478937497876 msec\nrounds: 32" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 448.97394846317405, + "unit": "iter/sec", + "range": "stddev: 0.00011295371945595824", + "extra": "mean: 2.227300722955026 msec\nrounds: 379" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 114.15481178211515, + "unit": "iter/sec", + "range": "stddev: 0.00266252918856045", + "extra": "mean: 8.760033715518523 msec\nrounds: 116" + } + ] + }, + { + "commit": { + "author": { + "email": "alastair@interaction.net.au", + "name": "aweakley", + "username": "aweakley" + }, + "committer": { + "email": "noreply@github.com", + "name": "GitHub", + "username": "web-flow" + }, + "distinct": true, + "id": "d779dea0301ace7557dd92112ed508deaa420f48", + "message": "Merge pull request #59 from artshumrc/30_improve_exceptions\n\nImprove exceptions", + "timestamp": "2024-06-11T09:46:22+10:00", + "tree_id": "f824d71d68f294ec4ccc975060fdc525c6bce289", + "url": "https://github.com/ixc/python-edtf/commit/d779dea0301ace7557dd92112ed508deaa420f48" + }, + "date": 1718063239121, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 81414.82700989813, + "unit": "iter/sec", + "range": "stddev: 8.103109607304797e-7", + "extra": "mean: 12.282774977565493 usec\nrounds: 2222" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 8554.458432034517, + "unit": "iter/sec", + "range": "stddev: 0.000005499672218626371", + "extra": "mean: 116.89810733724833 usec\nrounds: 736" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 10338.807117492768, + "unit": "iter/sec", + "range": "stddev: 0.000022415883723524668", + "extra": "mean: 96.72295736207784 usec\nrounds: 7036" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 7032.795202965987, + "unit": "iter/sec", + "range": "stddev: 0.000006230951100412437", + "extra": "mean: 142.1909740210071 usec\nrounds: 5235" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 12289.396641312786, + "unit": "iter/sec", + "range": "stddev: 0.000020491057286703536", + "extra": "mean: 81.37095979458738 usec\nrounds: 7984" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 8500.439216176936, + "unit": "iter/sec", + "range": "stddev: 0.00003119773177772948", + "extra": "mean: 117.6409800210005 usec\nrounds: 2853" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 5570.911177617347, + "unit": "iter/sec", + "range": "stddev: 0.00000731883646189396", + "extra": "mean: 179.5038492119157 usec\nrounds: 4251" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 7329.709567617568, + "unit": "iter/sec", + "range": "stddev: 0.000027945273256771032", + "extra": "mean: 136.43105375115672 usec\nrounds: 5265" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 48818.552947007745, + "unit": "iter/sec", + "range": "stddev: 0.0000012119443427279483", + "extra": "mean: 20.484015597215553 usec\nrounds: 2821" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 42646.61017902271, + "unit": "iter/sec", + "range": "stddev: 0.00000117240851596917", + "extra": "mean: 23.44852253912285 usec\nrounds: 1087" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 23873.597133254403, + "unit": "iter/sec", + "range": "stddev: 0.000007205466375283395", + "extra": "mean: 41.88727800081134 usec\nrounds: 10464" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 158.08928055986613, + "unit": "iter/sec", + "range": "stddev: 0.0005150374919036013", + "extra": "mean: 6.325539571427896 msec\nrounds: 42" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 163.2689719866068, + "unit": "iter/sec", + "range": "stddev: 0.0018574084470516557", + "extra": "mean: 6.124862475902841 msec\nrounds: 166" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 196.12854990835632, + "unit": "iter/sec", + "range": "stddev: 0.0017572996359509884", + "extra": "mean: 5.09869675000026 msec\nrounds: 196" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 194.55409494439965, + "unit": "iter/sec", + "range": "stddev: 0.0013875683883445757", + "extra": "mean: 5.139958633539857 msec\nrounds: 161" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 141.30566467408556, + "unit": "iter/sec", + "range": "stddev: 0.0015323208921021218", + "extra": "mean: 7.076857126049759 msec\nrounds: 119" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 120.80407345423382, + "unit": "iter/sec", + "range": "stddev: 0.0016256619369747578", + "extra": "mean: 8.27786656034282 msec\nrounds: 116" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 313.34489802390414, + "unit": "iter/sec", + "range": "stddev: 0.0009622773006893344", + "extra": "mean: 3.191371572687017 msec\nrounds: 227" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 217.49964361885702, + "unit": "iter/sec", + "range": "stddev: 0.0009633707465953877", + "extra": "mean: 4.597708682927244 msec\nrounds: 205" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 31.33642617929424, + "unit": "iter/sec", + "range": "stddev: 0.0016357799189671111", + "extra": "mean: 31.911743677418997 msec\nrounds: 31" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 430.8339383813955, + "unit": "iter/sec", + "range": "stddev: 0.00006404420882109838", + "extra": "mean: 2.3210799124992576 msec\nrounds: 400" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 117.84013327049315, + "unit": "iter/sec", + "range": "stddev: 0.0018799161584027641", + "extra": "mean: 8.486073226891007 msec\nrounds: 119" + } + ] + }, + { + "commit": { + "author": { + "name": "ixc", + "username": "ixc" + }, + "committer": { + "name": "ixc", + "username": "ixc" + }, + "id": "952949156289cb1da8b1a9af59f32687cbdada8e", + "message": "Anticipate None for date_display #62", + "timestamp": "2024-05-27T15:20:37Z", + "url": "https://github.com/ixc/python-edtf/pull/63/commits/952949156289cb1da8b1a9af59f32687cbdada8e" + }, + "date": 1718277375604, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 108711.09334210803, + "unit": "iter/sec", + "range": "stddev: 0.00000198073167726282", + "extra": "mean: 9.198693245159932 usec\nrounds: 2872" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 11177.246520473505, + "unit": "iter/sec", + "range": "stddev: 0.000005688723181183998", + "extra": "mean: 89.46747288505154 usec\nrounds: 922" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 13888.1562370813, + "unit": "iter/sec", + "range": "stddev: 0.000004054300876109966", + "extra": "mean: 72.00379826733267 usec\nrounds: 8888" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 9389.34038398142, + "unit": "iter/sec", + "range": "stddev: 0.000004975984025150707", + "extra": "mean: 106.5037541621176 usec\nrounds: 6667" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 16507.9904708096, + "unit": "iter/sec", + "range": "stddev: 0.0000035689125873464977", + "extra": "mean: 60.57672505737503 usec\nrounds: 10013" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 11679.60210643645, + "unit": "iter/sec", + "range": "stddev: 0.000004510844688448565", + "extra": "mean: 85.61935508478626 usec\nrounds: 7218" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 7424.872902218249, + "unit": "iter/sec", + "range": "stddev: 0.00000523208482724532", + "extra": "mean: 134.6824401130477 usec\nrounds: 5310" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 10162.404569074988, + "unit": "iter/sec", + "range": "stddev: 0.000005069948603875579", + "extra": "mean: 98.4019080526552 usec\nrounds: 6917" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 66249.65622274563, + "unit": "iter/sec", + "range": "stddev: 0.0000010345322659527582", + "extra": "mean: 15.094417948944283 usec\nrounds: 3900" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 55506.43218169052, + "unit": "iter/sec", + "range": "stddev: 9.913650188315959e-7", + "extra": "mean: 18.0159300588205 usec\nrounds: 2545" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 32504.217437341973, + "unit": "iter/sec", + "range": "stddev: 0.0000020679899500089643", + "extra": "mean: 30.765238447216557 usec\nrounds: 14477" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 148.15030541166186, + "unit": "iter/sec", + "range": "stddev: 0.0005432817988212739", + "extra": "mean: 6.749901711112393 msec\nrounds: 45" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 154.02611793310425, + "unit": "iter/sec", + "range": "stddev: 0.002077417591389651", + "extra": "mean: 6.492405401234059 msec\nrounds: 162" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 182.57211668449128, + "unit": "iter/sec", + "range": "stddev: 0.002295469553393916", + "extra": "mean: 5.477287650272094 msec\nrounds: 183" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 191.1469039919262, + "unit": "iter/sec", + "range": "stddev: 0.001652805986402277", + "extra": "mean: 5.231578325967752 msec\nrounds: 181" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 129.89040446896496, + "unit": "iter/sec", + "range": "stddev: 0.0019975761675792305", + "extra": "mean: 7.698798106667937 msec\nrounds: 75" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 104.29272928481606, + "unit": "iter/sec", + "range": "stddev: 0.002600159669252231", + "extra": "mean: 9.58839611214959 msec\nrounds: 107" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 255.90174414627396, + "unit": "iter/sec", + "range": "stddev: 0.00018068275018971654", + "extra": "mean: 3.90774984100303 msec\nrounds: 239" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 196.66183741729014, + "unit": "iter/sec", + "range": "stddev: 0.001416038865713511", + "extra": "mean: 5.084870624279451 msec\nrounds: 173" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 21.23155521789749, + "unit": "iter/sec", + "range": "stddev: 0.001674180427768245", + "extra": "mean: 47.09970559090431 msec\nrounds: 22" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 428.2001414048061, + "unit": "iter/sec", + "range": "stddev: 0.00008791160690734474", + "extra": "mean: 2.3353565384618435 msec\nrounds: 390" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 112.86356668217397, + "unit": "iter/sec", + "range": "stddev: 0.0022030446708196263", + "extra": "mean: 8.860255168224658 msec\nrounds: 107" + } + ] + }, + { + "commit": { + "author": { + "name": "ixc", + "username": "ixc" + }, + "committer": { + "name": "ixc", + "username": "ixc" + }, + "id": "952949156289cb1da8b1a9af59f32687cbdada8e", + "message": "Anticipate None for date_display #62", + "timestamp": "2024-05-27T15:20:37Z", + "url": "https://github.com/ixc/python-edtf/pull/63/commits/952949156289cb1da8b1a9af59f32687cbdada8e" + }, + "date": 1718277376024, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 88694.38471624344, + "unit": "iter/sec", + "range": "stddev: 9.196768873247571e-7", + "extra": "mean: 11.274670918562228 usec\nrounds: 2273" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 8847.021114743176, + "unit": "iter/sec", + "range": "stddev: 0.000006665184401030136", + "extra": "mean: 113.03239667118501 usec\nrounds: 721" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 11112.044038387648, + "unit": "iter/sec", + "range": "stddev: 0.000004680034181220665", + "extra": "mean: 89.99244392349435 usec\nrounds: 7677" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 7499.3605801565645, + "unit": "iter/sec", + "range": "stddev: 0.000006949463122132995", + "extra": "mean: 133.34470176644354 usec\nrounds: 5546" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 13024.995263468329, + "unit": "iter/sec", + "range": "stddev: 0.000004128337390470319", + "extra": "mean: 76.77545978114371 usec\nrounds: 7310" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 9362.18651895691, + "unit": "iter/sec", + "range": "stddev: 0.000005148715673887071", + "extra": "mean: 106.812655139391 usec\nrounds: 6188" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 6025.170517757247, + "unit": "iter/sec", + "range": "stddev: 0.0000074393572764635285", + "extra": "mean: 165.97040648938028 usec\nrounds: 4438" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 8143.960014251709, + "unit": "iter/sec", + "range": "stddev: 0.00000513325929371048", + "extra": "mean: 122.79038677130377 usec\nrounds: 5851" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 46671.26280342094, + "unit": "iter/sec", + "range": "stddev: 0.000006834730790936964", + "extra": "mean: 21.42646116544979 usec\nrounds: 2884" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 39321.099880918286, + "unit": "iter/sec", + "range": "stddev: 0.0000073139564411707776", + "extra": "mean: 25.43163856119089 usec\nrounds: 1862" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 25194.31410613387, + "unit": "iter/sec", + "range": "stddev: 0.0000033795456543300847", + "extra": "mean: 39.69149530276506 usec\nrounds: 11603" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 165.32938509809605, + "unit": "iter/sec", + "range": "stddev: 0.00034340324356277134", + "extra": "mean: 6.048531538459802 msec\nrounds: 39" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 170.2330883968041, + "unit": "iter/sec", + "range": "stddev: 0.0015816658479576712", + "extra": "mean: 5.8742986420422225 msec\nrounds: 176" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 208.35394514037228, + "unit": "iter/sec", + "range": "stddev: 0.0010557666594217246", + "extra": "mean: 4.799525150945809 msec\nrounds: 212" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 201.59217076976503, + "unit": "iter/sec", + "range": "stddev: 0.0016907043934054088", + "extra": "mean: 4.960510104046069 msec\nrounds: 173" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 144.7799142669082, + "unit": "iter/sec", + "range": "stddev: 0.0015467879332296925", + "extra": "mean: 6.907035448000443 msec\nrounds: 125" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 124.17303096037054, + "unit": "iter/sec", + "range": "stddev: 0.0014455824062104548", + "extra": "mean: 8.053278495868778 msec\nrounds: 121" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 328.12939971714667, + "unit": "iter/sec", + "range": "stddev: 0.0008356227175348622", + "extra": "mean: 3.0475781836739335 msec\nrounds: 294" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 227.5155915085004, + "unit": "iter/sec", + "range": "stddev: 0.0003386567620630399", + "extra": "mean: 4.39530316744309 msec\nrounds: 215" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 32.415038443156796, + "unit": "iter/sec", + "range": "stddev: 0.003179203119439404", + "extra": "mean: 30.849878575760627 msec\nrounds: 33" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 456.0766420375953, + "unit": "iter/sec", + "range": "stddev: 0.00010428406728214504", + "extra": "mean: 2.192613933334407 msec\nrounds: 420" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 121.39954116756603, + "unit": "iter/sec", + "range": "stddev: 0.002087237854372022", + "extra": "mean: 8.237263422764626 msec\nrounds: 123" + } + ] + }, + { + "commit": { + "author": { + "name": "ixc", + "username": "ixc" + }, + "committer": { + "name": "ixc", + "username": "ixc" + }, + "id": "952949156289cb1da8b1a9af59f32687cbdada8e", + "message": "Anticipate None for date_display #62", + "timestamp": "2024-05-27T15:20:37Z", + "url": "https://github.com/ixc/python-edtf/pull/63/commits/952949156289cb1da8b1a9af59f32687cbdada8e" + }, + "date": 1718277378887, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 80118.78135432093, + "unit": "iter/sec", + "range": "stddev: 6.909850294254891e-7", + "extra": "mean: 12.481467929193213 usec\nrounds: 2323" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 8616.196215886079, + "unit": "iter/sec", + "range": "stddev: 0.0000052580069319717", + "extra": "mean: 116.06049525151874 usec\nrounds: 737" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 10671.613842246865, + "unit": "iter/sec", + "range": "stddev: 0.000005614377629517409", + "extra": "mean: 93.70653912168304 usec\nrounds: 7106" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 6478.103301691718, + "unit": "iter/sec", + "range": "stddev: 0.00006664113789053272", + "extra": "mean: 154.36617068746895 usec\nrounds: 4974" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 12609.185547706364, + "unit": "iter/sec", + "range": "stddev: 0.0000071467039900521145", + "extra": "mean: 79.30726344033394 usec\nrounds: 8389" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 8806.877363488235, + "unit": "iter/sec", + "range": "stddev: 0.000011670390320862513", + "extra": "mean: 113.54762405865038 usec\nrounds: 5711" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 5655.159197572556, + "unit": "iter/sec", + "range": "stddev: 0.00001033281205561833", + "extra": "mean: 176.829681546232 usec\nrounds: 4346" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 7623.314863780411, + "unit": "iter/sec", + "range": "stddev: 0.000006316955732641022", + "extra": "mean: 131.1765311900155 usec\nrounds: 5194" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 48898.066757585075, + "unit": "iter/sec", + "range": "stddev: 0.0000012388055012021686", + "extra": "mean: 20.45070626120162 usec\nrounds: 2795" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 42268.908239167424, + "unit": "iter/sec", + "range": "stddev: 0.0000019794337606797928", + "extra": "mean: 23.658051311421737 usec\nrounds: 1754" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 23612.79079423059, + "unit": "iter/sec", + "range": "stddev: 0.000010212226079155725", + "extra": "mean: 42.34992842287554 usec\nrounds: 9612" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 156.68681405599062, + "unit": "iter/sec", + "range": "stddev: 0.0005800894816891941", + "extra": "mean: 6.382157975607691 msec\nrounds: 41" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 161.34674939654252, + "unit": "iter/sec", + "range": "stddev: 0.0020846699084403203", + "extra": "mean: 6.197831711764432 msec\nrounds: 170" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 195.79797130344434, + "unit": "iter/sec", + "range": "stddev: 0.0020090887332454305", + "extra": "mean: 5.107305215385593 msec\nrounds: 195" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 192.83200517330508, + "unit": "iter/sec", + "range": "stddev: 0.0019725118195088967", + "extra": "mean: 5.18586112871286 msec\nrounds: 202" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 139.7337295300206, + "unit": "iter/sec", + "range": "stddev: 0.0020163604823487213", + "extra": "mean: 7.15646825833242 msec\nrounds: 120" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 118.34309252300731, + "unit": "iter/sec", + "range": "stddev: 0.001925611321885508", + "extra": "mean: 8.45000733613234 msec\nrounds: 119" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 321.3208546874269, + "unit": "iter/sec", + "range": "stddev: 0.00014270739703347947", + "extra": "mean: 3.1121540522876288 msec\nrounds: 306" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 212.57112636301895, + "unit": "iter/sec", + "range": "stddev: 0.0013603851852089827", + "extra": "mean: 4.704307763286003 msec\nrounds: 207" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 31.196832538170256, + "unit": "iter/sec", + "range": "stddev: 0.003379820674380943", + "extra": "mean: 32.0545362666697 msec\nrounds: 30" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 444.1442856214814, + "unit": "iter/sec", + "range": "stddev: 0.00006251330219015528", + "extra": "mean: 2.2515205809767918 msec\nrounds: 389" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 116.23388928359267, + "unit": "iter/sec", + "range": "stddev: 0.0027380569258525548", + "extra": "mean: 8.603342847456089 msec\nrounds: 118" + } + ] + }, + { + "commit": { + "author": { + "name": "ixc", + "username": "ixc" + }, + "committer": { + "name": "ixc", + "username": "ixc" + }, + "id": "952949156289cb1da8b1a9af59f32687cbdada8e", + "message": "Anticipate None for date_display #62", + "timestamp": "2024-05-27T15:20:37Z", + "url": "https://github.com/ixc/python-edtf/pull/63/commits/952949156289cb1da8b1a9af59f32687cbdada8e" + }, + "date": 1718277379909, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 79584.64921154433, + "unit": "iter/sec", + "range": "stddev: 0.0000012893776252134054", + "extra": "mean: 12.565237265064717 usec\nrounds: 2179" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 8464.855827426303, + "unit": "iter/sec", + "range": "stddev: 0.000006678772500967724", + "extra": "mean: 118.13550288239759 usec\nrounds: 694" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 10565.282729700686, + "unit": "iter/sec", + "range": "stddev: 0.000005092200538766433", + "extra": "mean: 94.64962042036426 usec\nrounds: 7042" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 6795.438097929308, + "unit": "iter/sec", + "range": "stddev: 0.000018369439377089355", + "extra": "mean: 147.15754681139956 usec\nrounds: 5159" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 12635.132620051763, + "unit": "iter/sec", + "range": "stddev: 0.0000048684088481746774", + "extra": "mean: 79.14440078080503 usec\nrounds: 8199" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 8789.019116681007, + "unit": "iter/sec", + "range": "stddev: 0.000005729109376567058", + "extra": "mean: 113.7783393942178 usec\nrounds: 2145" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 5612.0851422032065, + "unit": "iter/sec", + "range": "stddev: 0.000009503054217583765", + "extra": "mean: 178.18689037340897 usec\nrounds: 4041" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 7542.207141702622, + "unit": "iter/sec", + "range": "stddev: 0.0000080569717189528", + "extra": "mean: 132.58718319611864 usec\nrounds: 5344" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 49737.620769078414, + "unit": "iter/sec", + "range": "stddev: 0.0000016601622954489047", + "extra": "mean: 20.10550534057098 usec\nrounds: 2715" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 43130.83819387352, + "unit": "iter/sec", + "range": "stddev: 0.000001946280054975382", + "extra": "mean: 23.185267012548906 usec\nrounds: 1734" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 24180.091970119774, + "unit": "iter/sec", + "range": "stddev: 0.0000031710189916436965", + "extra": "mean: 41.35633566802544 usec\nrounds: 9852" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 155.6007195288425, + "unit": "iter/sec", + "range": "stddev: 0.0005553756514756203", + "extra": "mean: 6.426705500000196 msec\nrounds: 40" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 156.60605052677843, + "unit": "iter/sec", + "range": "stddev: 0.0023730796626708767", + "extra": "mean: 6.385449327380923 msec\nrounds: 168" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 195.26196347094438, + "unit": "iter/sec", + "range": "stddev: 0.0015813140895970144", + "extra": "mean: 5.12132512766012 msec\nrounds: 188" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 184.15012164933754, + "unit": "iter/sec", + "range": "stddev: 0.0024993501946316823", + "extra": "mean: 5.430352101011482 msec\nrounds: 198" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 134.14630744734308, + "unit": "iter/sec", + "range": "stddev: 0.002416480678584227", + "extra": "mean: 7.454547344827465 msec\nrounds: 116" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 116.05305797588188, + "unit": "iter/sec", + "range": "stddev: 0.002275669829163516", + "extra": "mean: 8.616748385965149 msec\nrounds: 114" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 320.70310594777453, + "unit": "iter/sec", + "range": "stddev: 0.0001295448974576841", + "extra": "mean: 3.1181487845111384 msec\nrounds: 297" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 211.7504790827727, + "unit": "iter/sec", + "range": "stddev: 0.0014168367529884404", + "extra": "mean: 4.722539492385765 msec\nrounds: 197" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 30.616292340567615, + "unit": "iter/sec", + "range": "stddev: 0.004420020624866167", + "extra": "mean: 32.6623481666644 msec\nrounds: 30" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 434.41162827220006, + "unit": "iter/sec", + "range": "stddev: 0.00009008740977473413", + "extra": "mean: 2.3019641623713745 msec\nrounds: 388" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 112.86638514191597, + "unit": "iter/sec", + "range": "stddev: 0.002556097566423525", + "extra": "mean: 8.86003391304346 msec\nrounds: 115" + } + ] + }, + { + "commit": { + "author": { + "name": "ixc", + "username": "ixc" + }, + "committer": { + "name": "ixc", + "username": "ixc" + }, + "id": "952949156289cb1da8b1a9af59f32687cbdada8e", + "message": "Anticipate None for date_display #62", + "timestamp": "2024-05-27T15:20:37Z", + "url": "https://github.com/ixc/python-edtf/pull/63/commits/952949156289cb1da8b1a9af59f32687cbdada8e" + }, + "date": 1718277381201, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 69470.30558312619, + "unit": "iter/sec", + "range": "stddev: 8.902008998970827e-7", + "extra": "mean: 14.39463943056114 usec\nrounds: 1897" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 8324.483693962113, + "unit": "iter/sec", + "range": "stddev: 0.000005991359125301758", + "extra": "mean: 120.1275702810634 usec\nrounds: 747" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 9717.911445770509, + "unit": "iter/sec", + "range": "stddev: 0.00001721606231510305", + "extra": "mean: 102.90276934301829 usec\nrounds: 4110" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 6822.616414423156, + "unit": "iter/sec", + "range": "stddev: 0.000008709373046464409", + "extra": "mean: 146.57133557823636 usec\nrounds: 3415" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 11776.525563412784, + "unit": "iter/sec", + "range": "stddev: 0.000006066431715301031", + "extra": "mean: 84.91468851447934 usec\nrounds: 4928" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 8520.893668185601, + "unit": "iter/sec", + "range": "stddev: 0.000005729463127209827", + "extra": "mean: 117.35858220290821 usec\nrounds: 3686" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 5689.570069738053, + "unit": "iter/sec", + "range": "stddev: 0.000009183288579123991", + "extra": "mean: 175.7602046802879 usec\nrounds: 3034" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 7416.340178119332, + "unit": "iter/sec", + "range": "stddev: 0.0000065048393546042904", + "extra": "mean: 134.837396341437 usec\nrounds: 3444" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 51164.57645435527, + "unit": "iter/sec", + "range": "stddev: 0.000001591067852670383", + "extra": "mean: 19.544772365937902 usec\nrounds: 2895" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 44996.8496097705, + "unit": "iter/sec", + "range": "stddev: 0.0000015738948584567202", + "extra": "mean: 22.2237780794072 usec\nrounds: 1843" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 22144.988916227463, + "unit": "iter/sec", + "range": "stddev: 0.0000037402949863596445", + "extra": "mean: 45.156942899493494 usec\nrounds: 6077" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 125.12658851673503, + "unit": "iter/sec", + "range": "stddev: 0.0005927338231648203", + "extra": "mean: 7.991906531250592 msec\nrounds: 32" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 131.2769148354411, + "unit": "iter/sec", + "range": "stddev: 0.0020734015216580088", + "extra": "mean: 7.61748553623099 msec\nrounds: 138" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 162.20932109809524, + "unit": "iter/sec", + "range": "stddev: 0.0014420585113181126", + "extra": "mean: 6.164873838509288 msec\nrounds: 161" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 159.50057446999088, + "unit": "iter/sec", + "range": "stddev: 0.0020867593024949714", + "extra": "mean: 6.269569895424698 msec\nrounds: 153" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 113.03387093388542, + "unit": "iter/sec", + "range": "stddev: 0.0005962281406209244", + "extra": "mean: 8.846905726027106 msec\nrounds: 73" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 87.53957873255497, + "unit": "iter/sec", + "range": "stddev: 0.0023153269130372464", + "extra": "mean: 11.42340429870165 msec\nrounds: 77" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 206.53492897715108, + "unit": "iter/sec", + "range": "stddev: 0.001222742962075483", + "extra": "mean: 4.841796033980431 msec\nrounds: 206" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 172.0683210752796, + "unit": "iter/sec", + "range": "stddev: 0.00028320710690097305", + "extra": "mean: 5.811645012579054 msec\nrounds: 159" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 18.046458654990015, + "unit": "iter/sec", + "range": "stddev: 0.002266747315036186", + "extra": "mean: 55.41253378947512 msec\nrounds: 19" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 333.3482802875758, + "unit": "iter/sec", + "range": "stddev: 0.0010104680755753123", + "extra": "mean: 2.999865483443656 msec\nrounds: 302" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 94.51995837255105, + "unit": "iter/sec", + "range": "stddev: 0.002159318346976914", + "extra": "mean: 10.579776136363638 msec\nrounds: 88" + } + ] + }, + { + "commit": { + "author": { + "name": "ixc", + "username": "ixc" + }, + "committer": { + "name": "ixc", + "username": "ixc" + }, + "id": "1a5ebd53e0f78c17f4e037569a089a082cf6b8fb", + "message": "62 verify related fields", + "timestamp": "2024-05-27T15:20:37Z", + "url": "https://github.com/ixc/python-edtf/pull/68/commits/1a5ebd53e0f78c17f4e037569a089a082cf6b8fb" + }, + "date": 1719488294867, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 81410.7735682034, + "unit": "iter/sec", + "range": "stddev: 8.741751819078173e-7", + "extra": "mean: 12.28338653682281 usec\nrounds: 2362" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 8622.615723942637, + "unit": "iter/sec", + "range": "stddev: 0.000005177098067387589", + "extra": "mean: 115.97408860785416 usec\nrounds: 711" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 10661.207197974483, + "unit": "iter/sec", + "range": "stddev: 0.000021214403983121163", + "extra": "mean: 93.79800818334995 usec\nrounds: 7332" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 7148.598321106746, + "unit": "iter/sec", + "range": "stddev: 0.000006036464215260514", + "extra": "mean: 139.88756327900376 usec\nrounds: 5294" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 12470.53406914542, + "unit": "iter/sec", + "range": "stddev: 0.00001897752164661342", + "extra": "mean: 80.18902754728032 usec\nrounds: 8567" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 8687.321907331538, + "unit": "iter/sec", + "range": "stddev: 0.000022605500411850955", + "extra": "mean: 115.11027341533928 usec\nrounds: 5947" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 5725.467693829883, + "unit": "iter/sec", + "range": "stddev: 0.000012176396575372366", + "extra": "mean: 174.6582206860868 usec\nrounds: 4196" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 7550.742774359275, + "unit": "iter/sec", + "range": "stddev: 0.000024358082278388576", + "extra": "mean: 132.4373018500628 usec\nrounds: 5675" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 49054.34159291555, + "unit": "iter/sec", + "range": "stddev: 0.0000012335474213694587", + "extra": "mean: 20.385555437654073 usec\nrounds: 2823" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 42111.72489858874, + "unit": "iter/sec", + "range": "stddev: 0.000002805330550047997", + "extra": "mean: 23.74635573366201 usec\nrounds: 1875" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 24697.24995827114, + "unit": "iter/sec", + "range": "stddev: 0.0000024431549685753796", + "extra": "mean: 40.490338061509505 usec\nrounds: 6768" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 143.2042146374839, + "unit": "iter/sec", + "range": "stddev: 0.0017013476034513392", + "extra": "mean: 6.9830347000014115 msec\nrounds: 40" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 163.85275670054708, + "unit": "iter/sec", + "range": "stddev: 0.0019280270628272223", + "extra": "mean: 6.103040437870528 msec\nrounds: 169" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 196.0923561758974, + "unit": "iter/sec", + "range": "stddev: 0.0018351549771044064", + "extra": "mean: 5.099637841584131 msec\nrounds: 202" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 191.25129609687505, + "unit": "iter/sec", + "range": "stddev: 0.0017713978899100763", + "extra": "mean: 5.228722735000275 msec\nrounds: 200" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 140.22371298179488, + "unit": "iter/sec", + "range": "stddev: 0.001754454633631539", + "extra": "mean: 7.131461425000414 msec\nrounds: 120" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 117.38759917906, + "unit": "iter/sec", + "range": "stddev: 0.001937976321364489", + "extra": "mean: 8.518787393160888 msec\nrounds: 117" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 319.25899054592065, + "unit": "iter/sec", + "range": "stddev: 0.0001340407457448909", + "extra": "mean: 3.132253216393494 msec\nrounds: 305" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 215.0554951393855, + "unit": "iter/sec", + "range": "stddev: 0.0012151054819580735", + "extra": "mean: 4.649962556650146 msec\nrounds: 203" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 30.963726953747926, + "unit": "iter/sec", + "range": "stddev: 0.0032515557482147694", + "extra": "mean: 32.295853838711025 msec\nrounds: 31" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 430.60311472721946, + "unit": "iter/sec", + "range": "stddev: 0.00017898994067935763", + "extra": "mean: 2.3223241212119072 msec\nrounds: 363" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 117.9023065351961, + "unit": "iter/sec", + "range": "stddev: 0.0018734261231961435", + "extra": "mean: 8.481598277311742 msec\nrounds: 119" + } + ] + }, + { + "commit": { + "author": { + "name": "ixc", + "username": "ixc" + }, + "committer": { + "name": "ixc", + "username": "ixc" + }, + "id": "1a5ebd53e0f78c17f4e037569a089a082cf6b8fb", + "message": "62 verify related fields", + "timestamp": "2024-05-27T15:20:37Z", + "url": "https://github.com/ixc/python-edtf/pull/68/commits/1a5ebd53e0f78c17f4e037569a089a082cf6b8fb" + }, + "date": 1719488298477, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 87942.00019437485, + "unit": "iter/sec", + "range": "stddev: 9.352593511638958e-7", + "extra": "mean: 11.371130947553365 usec\nrounds: 2291" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 9020.277734447276, + "unit": "iter/sec", + "range": "stddev: 0.000005935800800389476", + "extra": "mean: 110.86133148440975 usec\nrounds: 721" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 11268.553168494807, + "unit": "iter/sec", + "range": "stddev: 0.0000045700614525000205", + "extra": "mean: 88.74253731134276 usec\nrounds: 7156" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 7548.781144941183, + "unit": "iter/sec", + "range": "stddev: 0.000007092643488851133", + "extra": "mean: 132.4717170625817 usec\nrounds: 5556" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 13068.360039920091, + "unit": "iter/sec", + "range": "stddev: 0.000007844732589059043", + "extra": "mean: 76.52069555363387 usec\nrounds: 8389" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 9611.709888694846, + "unit": "iter/sec", + "range": "stddev: 0.000005529573664266412", + "extra": "mean: 104.03976103941564 usec\nrounds: 6273" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 6082.582920321193, + "unit": "iter/sec", + "range": "stddev: 0.000007119564935983865", + "extra": "mean: 164.40384177240196 usec\nrounds: 4108" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 8180.032555829552, + "unit": "iter/sec", + "range": "stddev: 0.000009372576842672688", + "extra": "mean: 122.2489022109507 usec\nrounds: 5880" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 52722.29508083871, + "unit": "iter/sec", + "range": "stddev: 0.0000011513720637608623", + "extra": "mean: 18.967307824264996 usec\nrounds: 2914" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 46635.08341581579, + "unit": "iter/sec", + "range": "stddev: 0.0000013373333460255913", + "extra": "mean: 21.443083763432504 usec\nrounds: 1743" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 25371.586693896857, + "unit": "iter/sec", + "range": "stddev: 0.000002707664723834624", + "extra": "mean: 39.41416877331327 usec\nrounds: 10126" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 163.75043310414694, + "unit": "iter/sec", + "range": "stddev: 0.0003742343837104432", + "extra": "mean: 6.106854076923203 msec\nrounds: 39" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 164.21114377526777, + "unit": "iter/sec", + "range": "stddev: 0.0024861321316858435", + "extra": "mean: 6.0897206913591475 msec\nrounds: 162" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 206.44985272783939, + "unit": "iter/sec", + "range": "stddev: 0.0012226463708810383", + "extra": "mean: 4.8437912974357475 msec\nrounds: 195" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 194.2233119252782, + "unit": "iter/sec", + "range": "stddev: 0.002780743139239636", + "extra": "mean: 5.148712531401591 msec\nrounds: 207" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 142.11275673250387, + "unit": "iter/sec", + "range": "stddev: 0.002102335371654386", + "extra": "mean: 7.036665975611753 msec\nrounds: 123" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 118.1556338462771, + "unit": "iter/sec", + "range": "stddev: 0.0022932567861321997", + "extra": "mean: 8.463413613446656 msec\nrounds: 119" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 322.41522757724783, + "unit": "iter/sec", + "range": "stddev: 0.001096653744673159", + "extra": "mean: 3.1015904785713286 msec\nrounds: 280" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 219.56312474890046, + "unit": "iter/sec", + "range": "stddev: 0.0013038894009500647", + "extra": "mean: 4.554498853774433 msec\nrounds: 212" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 32.20033412113224, + "unit": "iter/sec", + "range": "stddev: 0.000565511935987414", + "extra": "mean: 31.055578374999726 msec\nrounds: 32" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 451.5863995437489, + "unit": "iter/sec", + "range": "stddev: 0.00007141812334396636", + "extra": "mean: 2.2144156710882563 msec\nrounds: 377" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 119.31693190155073, + "unit": "iter/sec", + "range": "stddev: 0.0024474562417158307", + "extra": "mean: 8.381040176469734 msec\nrounds: 119" + } + ] + }, + { + "commit": { + "author": { + "name": "ixc", + "username": "ixc" + }, + "committer": { + "name": "ixc", + "username": "ixc" + }, + "id": "1a5ebd53e0f78c17f4e037569a089a082cf6b8fb", + "message": "62 verify related fields", + "timestamp": "2024-05-27T15:20:37Z", + "url": "https://github.com/ixc/python-edtf/pull/68/commits/1a5ebd53e0f78c17f4e037569a089a082cf6b8fb" + }, + "date": 1719488299438, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 113548.3061037898, + "unit": "iter/sec", + "range": "stddev: 7.172841270185966e-7", + "extra": "mean: 8.806824463642297 usec\nrounds: 3589" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 12043.79954068092, + "unit": "iter/sec", + "range": "stddev: 0.0000062131803235955175", + "extra": "mean: 83.03027600403445 usec\nrounds: 971" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 14499.034561262859, + "unit": "iter/sec", + "range": "stddev: 0.000014512886548243928", + "extra": "mean: 68.9701094079536 usec\nrounds: 9981" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 9561.685270721728, + "unit": "iter/sec", + "range": "stddev: 0.000006863940485643424", + "extra": "mean: 104.58407400858935 usec\nrounds: 6783" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 17526.036903573917, + "unit": "iter/sec", + "range": "stddev: 0.000003966471690764208", + "extra": "mean: 57.05796498671526 usec\nrounds: 11310" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 12494.57149683673, + "unit": "iter/sec", + "range": "stddev: 0.000004442999580973568", + "extra": "mean: 80.03475751474723 usec\nrounds: 7951" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 7699.386801549148, + "unit": "iter/sec", + "range": "stddev: 0.000007323049998082061", + "extra": "mean: 129.88047305258075 usec\nrounds: 5418" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 10613.34226326957, + "unit": "iter/sec", + "range": "stddev: 0.000004945863790594484", + "extra": "mean: 94.2210262511536 usec\nrounds: 7314" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 68888.9250242966, + "unit": "iter/sec", + "range": "stddev: 9.745293606538554e-7", + "extra": "mean: 14.516121417881141 usec\nrounds: 3978" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 55902.399734552404, + "unit": "iter/sec", + "range": "stddev: 9.553576940281213e-7", + "extra": "mean: 17.888319727747135 usec\nrounds: 2646" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 32682.721374825192, + "unit": "iter/sec", + "range": "stddev: 0.000002124450689188434", + "extra": "mean: 30.597207268372664 usec\nrounds: 14006" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 147.98435005643017, + "unit": "iter/sec", + "range": "stddev: 0.0005358762589236087", + "extra": "mean: 6.757471311112795 msec\nrounds: 45" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 156.98644066891336, + "unit": "iter/sec", + "range": "stddev: 0.0014624014294921444", + "extra": "mean: 6.369976895705371 msec\nrounds: 163" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 190.2206452146052, + "unit": "iter/sec", + "range": "stddev: 0.001362380034596983", + "extra": "mean: 5.257052928570445 msec\nrounds: 154" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 196.30710125453086, + "unit": "iter/sec", + "range": "stddev: 0.0009884794509751082", + "extra": "mean: 5.094059224599342 msec\nrounds: 187" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 132.0047017652022, + "unit": "iter/sec", + "range": "stddev: 0.0013878782427450167", + "extra": "mean: 7.575487741176884 msec\nrounds: 85" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 106.70035790605493, + "unit": "iter/sec", + "range": "stddev: 0.0011782135545178958", + "extra": "mean: 9.372039790911074 msec\nrounds: 110" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 249.63364199144252, + "unit": "iter/sec", + "range": "stddev: 0.0006460156470205878", + "extra": "mean: 4.00587033070759 msec\nrounds: 254" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 195.8716074417867, + "unit": "iter/sec", + "range": "stddev: 0.0006693162152105811", + "extra": "mean: 5.105385170728235 msec\nrounds: 82" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 20.821222404921098, + "unit": "iter/sec", + "range": "stddev: 0.002645805434384225", + "extra": "mean: 48.02791980953289 msec\nrounds: 21" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 419.4295401576624, + "unit": "iter/sec", + "range": "stddev: 0.00007191736237685775", + "extra": "mean: 2.3841906786634595 msec\nrounds: 389" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 112.42053876366614, + "unit": "iter/sec", + "range": "stddev: 0.0014289912159715832", + "extra": "mean: 8.895171745282507 msec\nrounds: 106" + } + ] + }, + { + "commit": { + "author": { + "name": "ixc", + "username": "ixc" + }, + "committer": { + "name": "ixc", + "username": "ixc" + }, + "id": "1a5ebd53e0f78c17f4e037569a089a082cf6b8fb", + "message": "62 verify related fields", + "timestamp": "2024-05-27T15:20:37Z", + "url": "https://github.com/ixc/python-edtf/pull/68/commits/1a5ebd53e0f78c17f4e037569a089a082cf6b8fb" + }, + "date": 1719488301873, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 77788.21852096295, + "unit": "iter/sec", + "range": "stddev: 0.0000011308200512519635", + "extra": "mean: 12.855417170024436 usec\nrounds: 2318" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 8451.900987138859, + "unit": "iter/sec", + "range": "stddev: 0.000006780267464061454", + "extra": "mean: 118.31657771685755 usec\nrounds: 727" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 10652.71239947451, + "unit": "iter/sec", + "range": "stddev: 0.00000441956781293022", + "extra": "mean: 93.87280558229745 usec\nrounds: 7273" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 6993.52048442993, + "unit": "iter/sec", + "range": "stddev: 0.000006162750978331507", + "extra": "mean: 142.98950038487146 usec\nrounds: 5194" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 12539.72652773668, + "unit": "iter/sec", + "range": "stddev: 0.000004147394570395711", + "extra": "mean: 79.7465556994481 usec\nrounds: 8492" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 8839.804598906623, + "unit": "iter/sec", + "range": "stddev: 0.000004623950550458612", + "extra": "mean: 113.12467247564362 usec\nrounds: 2525" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 5623.092327265848, + "unit": "iter/sec", + "range": "stddev: 0.000006531928099073001", + "extra": "mean: 177.83809011121755 usec\nrounds: 4217" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 7549.086940823316, + "unit": "iter/sec", + "range": "stddev: 0.000011289238255456708", + "extra": "mean: 132.46635094269274 usec\nrounds: 5622" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 47795.023676204466, + "unit": "iter/sec", + "range": "stddev: 0.0000013167823056650957", + "extra": "mean: 20.922680293552535 usec\nrounds: 2862" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 42957.626910199164, + "unit": "iter/sec", + "range": "stddev: 0.0000012395564890837345", + "extra": "mean: 23.278753318716873 usec\nrounds: 1808" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 23969.523981145918, + "unit": "iter/sec", + "range": "stddev: 0.000002688986943620552", + "extra": "mean: 41.71964369365806 usec\nrounds: 10331" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 162.21980468358333, + "unit": "iter/sec", + "range": "stddev: 0.00039392237088790876", + "extra": "mean: 6.1644754285738586 msec\nrounds: 42" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 166.23128647065, + "unit": "iter/sec", + "range": "stddev: 0.0016904408553811991", + "extra": "mean: 6.015714738371837 msec\nrounds: 172" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 200.45940112128153, + "unit": "iter/sec", + "range": "stddev: 0.0016123836363068056", + "extra": "mean: 4.988541292682911 msec\nrounds: 205" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 202.16204099164193, + "unit": "iter/sec", + "range": "stddev: 0.001179765257622655", + "extra": "mean: 4.9465270289853445 msec\nrounds: 207" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 141.24201523283597, + "unit": "iter/sec", + "range": "stddev: 0.0022340904430968693", + "extra": "mean: 7.080046247934869 msec\nrounds: 121" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 119.446011960252, + "unit": "iter/sec", + "range": "stddev: 0.0016908699051046453", + "extra": "mean: 8.371983154471241 msec\nrounds: 123" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 327.5309415610728, + "unit": "iter/sec", + "range": "stddev: 0.00011755019049584445", + "extra": "mean: 3.0531466591639123 msec\nrounds: 311" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 220.69609133656965, + "unit": "iter/sec", + "range": "stddev: 0.001021931782063013", + "extra": "mean: 4.531117855073216 msec\nrounds: 207" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 31.702117933310653, + "unit": "iter/sec", + "range": "stddev: 0.003274903047108637", + "extra": "mean: 31.543633838711475 msec\nrounds: 31" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 443.8856033203096, + "unit": "iter/sec", + "range": "stddev: 0.00006860404713792705", + "extra": "mean: 2.252832695000464 msec\nrounds: 400" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 121.30589100003402, + "unit": "iter/sec", + "range": "stddev: 0.0017060651162263388", + "extra": "mean: 8.24362272727315 msec\nrounds: 121" + } + ] + }, + { + "commit": { + "author": { + "name": "ixc", + "username": "ixc" + }, + "committer": { + "name": "ixc", + "username": "ixc" + }, + "id": "1a5ebd53e0f78c17f4e037569a089a082cf6b8fb", + "message": "62 verify related fields", + "timestamp": "2024-05-27T15:20:37Z", + "url": "https://github.com/ixc/python-edtf/pull/68/commits/1a5ebd53e0f78c17f4e037569a089a082cf6b8fb" + }, + "date": 1719488307710, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 70908.05993591757, + "unit": "iter/sec", + "range": "stddev: 9.336401373974975e-7", + "extra": "mean: 14.102769147875993 usec\nrounds: 1854" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 8081.312658856538, + "unit": "iter/sec", + "range": "stddev: 0.000007619156669014199", + "extra": "mean: 123.74227334269413 usec\nrounds: 739" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 9656.201214299597, + "unit": "iter/sec", + "range": "stddev: 0.0000058122713925155625", + "extra": "mean: 103.56039376221034 usec\nrounds: 4104" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 6652.449123393891, + "unit": "iter/sec", + "range": "stddev: 0.000006904746593308474", + "extra": "mean: 150.32057839922697 usec\nrounds: 3361" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 11498.54538461711, + "unit": "iter/sec", + "range": "stddev: 0.00000493408016541802", + "extra": "mean: 86.96752211265017 usec\nrounds: 4771" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 8370.392302524268, + "unit": "iter/sec", + "range": "stddev: 0.00000553850252740975", + "extra": "mean: 119.46871351518723 usec\nrounds: 3707" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 5682.908434183922, + "unit": "iter/sec", + "range": "stddev: 0.000007648465545337454", + "extra": "mean: 175.96623482173038 usec\nrounds: 3113" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 7211.885201598034, + "unit": "iter/sec", + "range": "stddev: 0.000011366674332750247", + "extra": "mean: 138.65999971525014 usec\nrounds: 3508" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 49807.41416902325, + "unit": "iter/sec", + "range": "stddev: 0.0000014962297096935839", + "extra": "mean: 20.077332194087894 usec\nrounds: 2926" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 44095.45879572501, + "unit": "iter/sec", + "range": "stddev: 0.0000015617715863917242", + "extra": "mean: 22.678072239424083 usec\nrounds: 1938" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 21807.319599248884, + "unit": "iter/sec", + "range": "stddev: 0.000002798861518096165", + "extra": "mean: 45.856162902039706 usec\nrounds: 6065" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 124.01091520648583, + "unit": "iter/sec", + "range": "stddev: 0.0006448552256745901", + "extra": "mean: 8.063806305557364 msec\nrounds: 36" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 128.36248456288072, + "unit": "iter/sec", + "range": "stddev: 0.0028400206829592386", + "extra": "mean: 7.790438175182966 msec\nrounds: 137" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 161.03773548946023, + "unit": "iter/sec", + "range": "stddev: 0.0016489937904663149", + "extra": "mean: 6.209724677018008 msec\nrounds: 161" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 159.3818083252433, + "unit": "iter/sec", + "range": "stddev: 0.002639994681455629", + "extra": "mean: 6.274241775192718 msec\nrounds: 129" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 106.31511465424398, + "unit": "iter/sec", + "range": "stddev: 0.002716914997564173", + "extra": "mean: 9.406000296873884 msec\nrounds: 64" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 87.04773799144041, + "unit": "iter/sec", + "range": "stddev: 0.0027618461789397355", + "extra": "mean: 11.4879492916672 msec\nrounds: 72" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 212.47132987123555, + "unit": "iter/sec", + "range": "stddev: 0.000154256817795709", + "extra": "mean: 4.706517348039531 msec\nrounds: 204" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 163.0027497205315, + "unit": "iter/sec", + "range": "stddev: 0.0018175537934075712", + "extra": "mean: 6.134865833334111 msec\nrounds: 156" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 18.16706819138367, + "unit": "iter/sec", + "range": "stddev: 0.0006011220180233923", + "extra": "mean: 55.04465494736696 msec\nrounds: 19" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 326.9720390767507, + "unit": "iter/sec", + "range": "stddev: 0.00033695307092477844", + "extra": "mean: 3.0583654884485956 msec\nrounds: 303" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 90.18575123804419, + "unit": "iter/sec", + "range": "stddev: 0.0038441798996662548", + "extra": "mean: 11.08822609195229 msec\nrounds: 87" + } + ] + }, + { + "commit": { + "author": { + "name": "ixc", + "username": "ixc" + }, + "committer": { + "name": "ixc", + "username": "ixc" + }, + "id": "36fa3462d79d0497960bbd4f425ccb147b9bb4a1", + "message": "85 parameter remapping", + "timestamp": "2025-07-16T04:48:54Z", + "url": "https://github.com/ixc/python-edtf/pull/86/commits/36fa3462d79d0497960bbd4f425ccb147b9bb4a1" + }, + "date": 1754538655025, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 5379713.418312739, + "unit": "iter/sec", + "range": "stddev: 1.0497613767649252e-7", + "extra": "mean: 185.8835075853602 nsec\nrounds: 22465" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 5150691.174024414, + "unit": "iter/sec", + "range": "stddev: 2.8540678898469164e-7", + "extra": "mean: 194.14870086623057 nsec\nrounds: 3618" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 5307231.669854414, + "unit": "iter/sec", + "range": "stddev: 1.6724065207270197e-7", + "extra": "mean: 188.42214966422065 nsec\nrounds: 5517" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 5186347.964965862, + "unit": "iter/sec", + "range": "stddev: 1.1817356129128012e-8", + "extra": "mean: 192.81390426463264 nsec\nrounds: 4718" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 5261453.155929846, + "unit": "iter/sec", + "range": "stddev: 9.023960279966295e-8", + "extra": "mean: 190.06156101056686 nsec\nrounds: 8252" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 5355044.802808693, + "unit": "iter/sec", + "range": "stddev: 1.514409514430474e-7", + "extra": "mean: 186.73980084639166 nsec\nrounds: 5319" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 5279334.653566116, + "unit": "iter/sec", + "range": "stddev: 1.6105930453453668e-8", + "extra": "mean: 189.4178084210885 nsec\nrounds: 1898" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 5290245.793112475, + "unit": "iter/sec", + "range": "stddev: 1.9783483629181866e-7", + "extra": "mean: 189.02713391917044 nsec\nrounds: 5307" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 5304105.472329077, + "unit": "iter/sec", + "range": "stddev: 8.325351409774285e-8", + "extra": "mean: 188.53320417870415 nsec\nrounds: 24786" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 5224243.254162866, + "unit": "iter/sec", + "range": "stddev: 1.05530041132831e-7", + "extra": "mean: 191.4152828169255 nsec\nrounds: 19329" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 5327496.984524668, + "unit": "iter/sec", + "range": "stddev: 1.9469616206379838e-7", + "extra": "mean: 187.70540891994938 nsec\nrounds: 9318" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 159.07981036415413, + "unit": "iter/sec", + "range": "stddev: 0.0004255816445108872", + "extra": "mean: 6.286152829267721 msec\nrounds: 41" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 166.8855413701713, + "unit": "iter/sec", + "range": "stddev: 0.0018867917261683811", + "extra": "mean: 5.992130844827864 msec\nrounds: 174" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 206.78445723139546, + "unit": "iter/sec", + "range": "stddev: 0.0012239341343667836", + "extra": "mean: 4.835953404761859 msec\nrounds: 210" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 198.9956525537498, + "unit": "iter/sec", + "range": "stddev: 0.0016395817339363776", + "extra": "mean: 5.025235411763051 msec\nrounds: 204" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 141.6373541806805, + "unit": "iter/sec", + "range": "stddev: 0.0017359522793088747", + "extra": "mean: 7.060284384614699 msec\nrounds: 130" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 120.11172961246939, + "unit": "iter/sec", + "range": "stddev: 0.0016278380200471768", + "extra": "mean: 8.325581549998635 msec\nrounds: 120" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 317.6309742357924, + "unit": "iter/sec", + "range": "stddev: 0.0009576084581474063", + "extra": "mean: 3.1483075679440917 msec\nrounds: 287" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 219.55536733229482, + "unit": "iter/sec", + "range": "stddev: 0.0011139348028391689", + "extra": "mean: 4.554659775119549 msec\nrounds: 209" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 32.01054945450449, + "unit": "iter/sec", + "range": "stddev: 0.0012565441651583853", + "extra": "mean: 31.239701193547653 msec\nrounds: 31" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 435.12677792645974, + "unit": "iter/sec", + "range": "stddev: 0.00009044853404174011", + "extra": "mean: 2.298180784840157 msec\nrounds: 409" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 118.05491503737272, + "unit": "iter/sec", + "range": "stddev: 0.002544700410899207", + "extra": "mean: 8.470634193277165 msec\nrounds: 119" + } + ] + }, + { + "commit": { + "author": { + "name": "ixc", + "username": "ixc" + }, + "committer": { + "name": "ixc", + "username": "ixc" + }, + "id": "36fa3462d79d0497960bbd4f425ccb147b9bb4a1", + "message": "85 parameter remapping", + "timestamp": "2025-07-16T04:48:54Z", + "url": "https://github.com/ixc/python-edtf/pull/86/commits/36fa3462d79d0497960bbd4f425ccb147b9bb4a1" + }, + "date": 1754538656865, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 4180472.5575746074, + "unit": "iter/sec", + "range": "stddev: 1.5392193183899935e-7", + "extra": "mean: 239.2074068727225 nsec\nrounds: 15202" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 3571008.5607054094, + "unit": "iter/sec", + "range": "stddev: 5.591854555682179e-7", + "extra": "mean: 280.0329327136819 nsec\nrounds: 1913" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 3892682.221358184, + "unit": "iter/sec", + "range": "stddev: 5.091483579066782e-8", + "extra": "mean: 256.8922771330389 nsec\nrounds: 4985" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 3797774.8452215735, + "unit": "iter/sec", + "range": "stddev: 1.5202358201341616e-7", + "extra": "mean: 263.31208161490076 nsec\nrounds: 4031" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 3804150.5400426504, + "unit": "iter/sec", + "range": "stddev: 1.4405987997439567e-7", + "extra": "mean: 262.8707748218577 nsec\nrounds: 5858" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 3837350.7014481197, + "unit": "iter/sec", + "range": "stddev: 2.020499466073797e-7", + "extra": "mean: 260.5964577651516 nsec\nrounds: 4178" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 3894576.827241832, + "unit": "iter/sec", + "range": "stddev: 3.7994643590889144e-8", + "extra": "mean: 256.76730601517176 nsec\nrounds: 3597" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 3887746.772166244, + "unit": "iter/sec", + "range": "stddev: 5.155378142234725e-8", + "extra": "mean: 257.2183988832179 nsec\nrounds: 4272" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 3948986.8706268887, + "unit": "iter/sec", + "range": "stddev: 1.644545289704212e-7", + "extra": "mean: 253.22950740559267 nsec\nrounds: 17860" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 3916959.671250075, + "unit": "iter/sec", + "range": "stddev: 9.302512444572162e-8", + "extra": "mean: 255.300050020902 nsec\nrounds: 15994" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 3924016.102268848, + "unit": "iter/sec", + "range": "stddev: 1.321553619660101e-7", + "extra": "mean: 254.84095221265898 nsec\nrounds: 7350" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 168.21269553364158, + "unit": "iter/sec", + "range": "stddev: 0.0005673278493310523", + "extra": "mean: 5.944854499998222 msec\nrounds: 42" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 173.04710768248677, + "unit": "iter/sec", + "range": "stddev: 0.00208187226388452", + "extra": "mean: 5.778773268114004 msec\nrounds: 138" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 212.87289725543815, + "unit": "iter/sec", + "range": "stddev: 0.0014055936280690446", + "extra": "mean: 4.697638886363461 msec\nrounds: 176" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 202.50050347664697, + "unit": "iter/sec", + "range": "stddev: 0.001960219172569456", + "extra": "mean: 4.938259326922234 msec\nrounds: 208" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 147.53866674376187, + "unit": "iter/sec", + "range": "stddev: 0.001829164633532568", + "extra": "mean: 6.777884212121507 msec\nrounds: 99" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 114.75462840018791, + "unit": "iter/sec", + "range": "stddev: 0.0024370688033193933", + "extra": "mean: 8.714245463918584 msec\nrounds: 97" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 260.9219251233659, + "unit": "iter/sec", + "range": "stddev: 0.00011131026499621463", + "extra": "mean: 3.8325640880013907 msec\nrounds: 250" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 225.03252187858, + "unit": "iter/sec", + "range": "stddev: 0.0010677768415278258", + "extra": "mean: 4.443802129807559 msec\nrounds: 208" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 19.985647367300388, + "unit": "iter/sec", + "range": "stddev: 0.0014103158809354972", + "extra": "mean: 50.03590734999932 msec\nrounds: 20" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 433.24313471348694, + "unit": "iter/sec", + "range": "stddev: 0.00007233369550900578", + "extra": "mean: 2.3081727553774662 msec\nrounds: 372" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 118.21846000704817, + "unit": "iter/sec", + "range": "stddev: 0.0021398326542591524", + "extra": "mean: 8.458915806722404 msec\nrounds: 119" + } + ] + }, + { + "commit": { + "author": { + "name": "ixc", + "username": "ixc" + }, + "committer": { + "name": "ixc", + "username": "ixc" + }, + "id": "36fa3462d79d0497960bbd4f425ccb147b9bb4a1", + "message": "85 parameter remapping", + "timestamp": "2025-07-16T04:48:54Z", + "url": "https://github.com/ixc/python-edtf/pull/86/commits/36fa3462d79d0497960bbd4f425ccb147b9bb4a1" + }, + "date": 1754538654771, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 5638996.831564789, + "unit": "iter/sec", + "range": "stddev: 9.222289186394619e-8", + "extra": "mean: 177.33650680603517 nsec\nrounds: 21952" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 5732234.840969681, + "unit": "iter/sec", + "range": "stddev: 1.5709498824306463e-8", + "extra": "mean: 174.4520292247547 nsec\nrounds: 3179" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 5740276.8227789905, + "unit": "iter/sec", + "range": "stddev: 1.1932450616536893e-8", + "extra": "mean: 174.20762636946813 nsec\nrounds: 5009" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 5567004.469973086, + "unit": "iter/sec", + "range": "stddev: 2.5524508358731726e-7", + "extra": "mean: 179.62981804554477 nsec\nrounds: 4125" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 5542540.076010676, + "unit": "iter/sec", + "range": "stddev: 1.4540010398108978e-7", + "extra": "mean: 180.42269181385234 nsec\nrounds: 5588" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 5712049.07549863, + "unit": "iter/sec", + "range": "stddev: 1.94585357552637e-7", + "extra": "mean: 175.06852388391033 nsec\nrounds: 4451" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 5849873.161380674, + "unit": "iter/sec", + "range": "stddev: 6.7128684201407e-8", + "extra": "mean: 170.9438773137403 nsec\nrounds: 3920" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 5820537.274048033, + "unit": "iter/sec", + "range": "stddev: 1.482165559085647e-7", + "extra": "mean: 171.805445600132 nsec\nrounds: 5325" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 5880919.395145655, + "unit": "iter/sec", + "range": "stddev: 5.7645923314175e-8", + "extra": "mean: 170.04143957923313 nsec\nrounds: 17978" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 5447029.93777358, + "unit": "iter/sec", + "range": "stddev: 2.4657327401631484e-7", + "extra": "mean: 183.58628673312197 nsec\nrounds: 17691" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 5758462.60230261, + "unit": "iter/sec", + "range": "stddev: 4.335488379778011e-8", + "extra": "mean: 173.65746190660937 nsec\nrounds: 8691" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 175.79790138744528, + "unit": "iter/sec", + "range": "stddev: 0.0006933757934969027", + "extra": "mean: 5.6883500434744985 msec\nrounds: 46" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 174.93102429652473, + "unit": "iter/sec", + "range": "stddev: 0.002778065314689243", + "extra": "mean: 5.716538870228673 msec\nrounds: 131" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 212.18459064559514, + "unit": "iter/sec", + "range": "stddev: 0.0023625914333720638", + "extra": "mean: 4.712877579646048 msec\nrounds: 226" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 207.61682684802338, + "unit": "iter/sec", + "range": "stddev: 0.0017920217668252567", + "extra": "mean: 4.816565281252494 msec\nrounds: 160" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 146.31876799043687, + "unit": "iter/sec", + "range": "stddev: 0.003466091147752322", + "extra": "mean: 6.834393247934935 msec\nrounds: 121" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 118.01799703043224, + "unit": "iter/sec", + "range": "stddev: 0.002197438959222852", + "extra": "mean: 8.473283949583884 msec\nrounds: 119" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 271.78462509940476, + "unit": "iter/sec", + "range": "stddev: 0.00020820417271012038", + "extra": "mean: 3.679383996185405 msec\nrounds: 262" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 234.93844646870534, + "unit": "iter/sec", + "range": "stddev: 0.0014794161016319879", + "extra": "mean: 4.2564340363645154 msec\nrounds: 220" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 19.45511308804208, + "unit": "iter/sec", + "range": "stddev: 0.005929843241600029", + "extra": "mean: 51.40036942857153 msec\nrounds: 21" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 471.49523141694897, + "unit": "iter/sec", + "range": "stddev: 0.00009016079279453525", + "extra": "mean: 2.1209122242758967 msec\nrounds: 379" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 121.26264432823646, + "unit": "iter/sec", + "range": "stddev: 0.003076215991214216", + "extra": "mean: 8.246562703128735 msec\nrounds: 128" + } + ] + }, + { + "commit": { + "author": { + "name": "ixc", + "username": "ixc" + }, + "committer": { + "name": "ixc", + "username": "ixc" + }, + "id": "36fa3462d79d0497960bbd4f425ccb147b9bb4a1", + "message": "85 parameter remapping", + "timestamp": "2025-07-16T04:48:54Z", + "url": "https://github.com/ixc/python-edtf/pull/86/commits/36fa3462d79d0497960bbd4f425ccb147b9bb4a1" + }, + "date": 1754538658206, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 4045828.090756116, + "unit": "iter/sec", + "range": "stddev: 4.5525769498448756e-8", + "extra": "mean: 247.16818845684378 nsec\nrounds: 17742" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 3627412.410458349, + "unit": "iter/sec", + "range": "stddev: 1.6005526960808885e-7", + "extra": "mean: 275.6786069091171 nsec\nrounds: 3015" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 3623835.2967353514, + "unit": "iter/sec", + "range": "stddev: 1.5849056815471277e-7", + "extra": "mean: 275.9507312324272 nsec\nrounds: 5744" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 3637589.0437032995, + "unit": "iter/sec", + "range": "stddev: 1.1522462998676079e-7", + "extra": "mean: 274.90735978848664 nsec\nrounds: 4674" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 3626241.3627181253, + "unit": "iter/sec", + "range": "stddev: 4.012117454455803e-8", + "extra": "mean: 275.76763374913054 nsec\nrounds: 7273" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 3660710.8166115824, + "unit": "iter/sec", + "range": "stddev: 1.1970693132718216e-7", + "extra": "mean: 273.1709905798069 nsec\nrounds: 5088" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 3329160.4932871717, + "unit": "iter/sec", + "range": "stddev: 4.352953943794583e-8", + "extra": "mean: 300.3760263334774 nsec\nrounds: 4263" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 3695510.081302484, + "unit": "iter/sec", + "range": "stddev: 1.300653813278426e-7", + "extra": "mean: 270.5986394299186 nsec\nrounds: 5586" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 3758071.4994793693, + "unit": "iter/sec", + "range": "stddev: 1.7706240056339501e-7", + "extra": "mean: 266.09392613699254 nsec\nrounds: 17386" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 3769485.3068561037, + "unit": "iter/sec", + "range": "stddev: 1.856047419092188e-7", + "extra": "mean: 265.2882074327645 nsec\nrounds: 21488" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 3718318.787899858, + "unit": "iter/sec", + "range": "stddev: 1.3913192900032567e-7", + "extra": "mean: 268.93874813913135 nsec\nrounds: 9714" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 172.12621043455135, + "unit": "iter/sec", + "range": "stddev: 0.0005996820802580561", + "extra": "mean: 5.809690444444174 msec\nrounds: 45" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 182.10775640705626, + "unit": "iter/sec", + "range": "stddev: 0.001409129218154591", + "extra": "mean: 5.491254297618991 msec\nrounds: 168" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 230.49180147321488, + "unit": "iter/sec", + "range": "stddev: 0.0004826480048373334", + "extra": "mean: 4.338549109375626 msec\nrounds: 192" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 215.9400104061111, + "unit": "iter/sec", + "range": "stddev: 0.0013886473250614064", + "extra": "mean: 4.6309157720208205 msec\nrounds: 193" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 153.00340336159826, + "unit": "iter/sec", + "range": "stddev: 0.0003564231898353574", + "extra": "mean: 6.535802328766931 msec\nrounds: 73" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 119.6065419515741, + "unit": "iter/sec", + "range": "stddev: 0.00017539061544201887", + "extra": "mean: 8.360746692307822 msec\nrounds: 104" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 261.97749687330264, + "unit": "iter/sec", + "range": "stddev: 0.0011747201812811168", + "extra": "mean: 3.817121744939869 msec\nrounds: 247" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 236.91317649435496, + "unit": "iter/sec", + "range": "stddev: 0.00032756775185827195", + "extra": "mean: 4.2209556040620955 msec\nrounds: 197" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 18.236448447287632, + "unit": "iter/sec", + "range": "stddev: 0.002044393069779871", + "extra": "mean: 54.83523850000154 msec\nrounds: 20" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 445.8229272981294, + "unit": "iter/sec", + "range": "stddev: 0.0001084781927643624", + "extra": "mean: 2.243043008264317 msec\nrounds: 363" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 127.22914393879928, + "unit": "iter/sec", + "range": "stddev: 0.001826311363375489", + "extra": "mean: 7.859834382608339 msec\nrounds: 115" + } + ] + }, + { + "commit": { + "author": { + "name": "ixc", + "username": "ixc" + }, + "committer": { + "name": "ixc", + "username": "ixc" + }, + "id": "83c8ba2d07f1f63bdb666397cb118ee59b2fc3f1", + "message": "85 parameter remapping", + "timestamp": "2025-07-16T04:48:54Z", + "url": "https://github.com/ixc/python-edtf/pull/86/commits/83c8ba2d07f1f63bdb666397cb118ee59b2fc3f1" + }, + "date": 1754611725139, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 5861025.889870783, + "unit": "iter/sec", + "range": "stddev: 5.449410149250888e-8", + "extra": "mean: 170.61859455837464 nsec\nrounds: 23749" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 5832900.16947413, + "unit": "iter/sec", + "range": "stddev: 1.2086182801914243e-8", + "extra": "mean: 171.441302087321 nsec\nrounds: 3748" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 5784736.868981105, + "unit": "iter/sec", + "range": "stddev: 9.171655019949305e-8", + "extra": "mean: 172.86870996020517 nsec\nrounds: 7015" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 5242276.717673207, + "unit": "iter/sec", + "range": "stddev: 3.1281692134839944e-7", + "extra": "mean: 190.7568130901437 nsec\nrounds: 4807" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 5897942.218077371, + "unit": "iter/sec", + "range": "stddev: 1.3033543046683716e-8", + "extra": "mean: 169.55066072620545 nsec\nrounds: 7264" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 5661282.711204485, + "unit": "iter/sec", + "range": "stddev: 1.6681427823789085e-7", + "extra": "mean: 176.6384141213894 nsec\nrounds: 5852" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 5708727.339446372, + "unit": "iter/sec", + "range": "stddev: 1.208378325622177e-7", + "extra": "mean: 175.17039097141028 nsec\nrounds: 5012" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 5274566.946993104, + "unit": "iter/sec", + "range": "stddev: 2.046592494006737e-7", + "extra": "mean: 189.58902409421012 nsec\nrounds: 6487" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 5630342.688105477, + "unit": "iter/sec", + "range": "stddev: 5.4355402464347765e-8", + "extra": "mean: 177.60908267849757 nsec\nrounds: 26512" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 5807810.459212667, + "unit": "iter/sec", + "range": "stddev: 1.4191708885465208e-7", + "extra": "mean: 172.18192759953885 nsec\nrounds: 20761" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 5486049.693441903, + "unit": "iter/sec", + "range": "stddev: 1.4685174855470053e-7", + "extra": "mean: 182.28052166487177 nsec\nrounds: 11197" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 180.1845119305318, + "unit": "iter/sec", + "range": "stddev: 0.0005614744725964257", + "extra": "mean: 5.549866574467505 msec\nrounds: 47" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 193.23437749337864, + "unit": "iter/sec", + "range": "stddev: 0.000500378233805068", + "extra": "mean: 5.1750625999986255 msec\nrounds: 50" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 222.27814282383247, + "unit": "iter/sec", + "range": "stddev: 0.0017970796858832669", + "extra": "mean: 4.498867892703937 msec\nrounds: 233" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 215.94718308347373, + "unit": "iter/sec", + "range": "stddev: 0.0017102597608309714", + "extra": "mean: 4.6307619563319475 msec\nrounds: 229" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 157.13710320653934, + "unit": "iter/sec", + "range": "stddev: 0.0015832674564352567", + "extra": "mean: 6.363869382812859 msec\nrounds: 128" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 122.70969646493596, + "unit": "iter/sec", + "range": "stddev: 0.0021834173676849064", + "extra": "mean: 8.14931524409522 msec\nrounds: 127" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 281.83020157129494, + "unit": "iter/sec", + "range": "stddev: 0.0001300604094599824", + "extra": "mean: 3.54823576190442 msec\nrounds: 273" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 242.38018531252422, + "unit": "iter/sec", + "range": "stddev: 0.0010482749628529654", + "extra": "mean: 4.125749795556114 msec\nrounds: 225" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 20.747425905061107, + "unit": "iter/sec", + "range": "stddev: 0.003857225792166593", + "extra": "mean: 48.19875027272955 msec\nrounds: 22" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 474.5240078848012, + "unit": "iter/sec", + "range": "stddev: 0.00007148094656925259", + "extra": "mean: 2.1073749344264305 msec\nrounds: 427" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 127.60649993821684, + "unit": "iter/sec", + "range": "stddev: 0.0017634064230976252", + "extra": "mean: 7.836591400000543 msec\nrounds: 125" + } + ] + }, + { + "commit": { + "author": { + "name": "ixc", + "username": "ixc" + }, + "committer": { + "name": "ixc", + "username": "ixc" + }, + "id": "83c8ba2d07f1f63bdb666397cb118ee59b2fc3f1", + "message": "85 parameter remapping", + "timestamp": "2025-07-16T04:48:54Z", + "url": "https://github.com/ixc/python-edtf/pull/86/commits/83c8ba2d07f1f63bdb666397cb118ee59b2fc3f1" + }, + "date": 1754611728148, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 5495889.1524112895, + "unit": "iter/sec", + "range": "stddev: 2.047777812934407e-8", + "extra": "mean: 181.95417925437158 nsec\nrounds: 21846" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 5481099.152728597, + "unit": "iter/sec", + "range": "stddev: 1.3985076136979833e-8", + "extra": "mean: 182.4451578297358 nsec\nrounds: 3738" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 5591749.947064267, + "unit": "iter/sec", + "range": "stddev: 1.1003324439652598e-7", + "extra": "mean: 178.83489238015937 nsec\nrounds: 6414" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 5311265.111502878, + "unit": "iter/sec", + "range": "stddev: 2.381542983068629e-7", + "extra": "mean: 188.27905950961645 nsec\nrounds: 4551" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 5285643.630717654, + "unit": "iter/sec", + "range": "stddev: 1.2812204125333716e-7", + "extra": "mean: 189.1917181454448 nsec\nrounds: 8090" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 5522667.1242611995, + "unit": "iter/sec", + "range": "stddev: 1.1674219081483588e-8", + "extra": "mean: 181.07193091667207 nsec\nrounds: 6256" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 5388429.286260565, + "unit": "iter/sec", + "range": "stddev: 1.809766386044384e-7", + "extra": "mean: 185.58283812869243 nsec\nrounds: 4207" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 5476620.215239825, + "unit": "iter/sec", + "range": "stddev: 1.201573296025421e-7", + "extra": "mean: 182.59436672590402 nsec\nrounds: 5219" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 5378530.383911949, + "unit": "iter/sec", + "range": "stddev: 1.2068072915400554e-7", + "extra": "mean: 185.92439358363785 nsec\nrounds: 24363" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 5310371.979452473, + "unit": "iter/sec", + "range": "stddev: 1.6521139623715558e-7", + "extra": "mean: 188.31072547635452 nsec\nrounds: 16941" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 5437641.0079618925, + "unit": "iter/sec", + "range": "stddev: 1.8414226128228355e-8", + "extra": "mean: 183.9032769055151 nsec\nrounds: 8209" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 160.1079355541679, + "unit": "iter/sec", + "range": "stddev: 0.0004292417919921093", + "extra": "mean: 6.2457866097566335 msec\nrounds: 41" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 165.92609950971632, + "unit": "iter/sec", + "range": "stddev: 0.0018455886013287858", + "extra": "mean: 6.026779409356525 msec\nrounds: 171" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 206.41829665069866, + "unit": "iter/sec", + "range": "stddev: 0.0011889870645085724", + "extra": "mean: 4.844531789215379 msec\nrounds: 204" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 198.48626852050077, + "unit": "iter/sec", + "range": "stddev: 0.0017488591000850463", + "extra": "mean: 5.0381318942308315 msec\nrounds: 208" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 143.08992863733016, + "unit": "iter/sec", + "range": "stddev: 0.0015675875536755848", + "extra": "mean: 6.988612053435004 msec\nrounds: 131" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 119.68778261121226, + "unit": "iter/sec", + "range": "stddev: 0.0017161576394277738", + "extra": "mean: 8.35507165546169 msec\nrounds: 119" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 320.1504679953034, + "unit": "iter/sec", + "range": "stddev: 0.0010270401404362671", + "extra": "mean: 3.1235312765954477 msec\nrounds: 282" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 217.78457718867895, + "unit": "iter/sec", + "range": "stddev: 0.001233212611965369", + "extra": "mean: 4.5916933738317205 msec\nrounds: 214" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 32.013503204775716, + "unit": "iter/sec", + "range": "stddev: 0.00033733505360839937", + "extra": "mean: 31.236818838708718 msec\nrounds: 31" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 436.65433419284676, + "unit": "iter/sec", + "range": "stddev: 0.00007005131493124381", + "extra": "mean: 2.2901410147422325 msec\nrounds: 407" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 118.37131057550558, + "unit": "iter/sec", + "range": "stddev: 0.002432364355427778", + "extra": "mean: 8.447992973450518 msec\nrounds: 113" + } + ] + }, + { + "commit": { + "author": { + "name": "ixc", + "username": "ixc" + }, + "committer": { + "name": "ixc", + "username": "ixc" + }, + "id": "83c8ba2d07f1f63bdb666397cb118ee59b2fc3f1", + "message": "85 parameter remapping", + "timestamp": "2025-07-16T04:48:54Z", + "url": "https://github.com/ixc/python-edtf/pull/86/commits/83c8ba2d07f1f63bdb666397cb118ee59b2fc3f1" + }, + "date": 1754611730820, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 3614479.3638243433, + "unit": "iter/sec", + "range": "stddev: 2.2827627575435247e-7", + "extra": "mean: 276.6650184833087 nsec\nrounds: 18001" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 3518071.190725629, + "unit": "iter/sec", + "range": "stddev: 4.3675431154239387e-8", + "extra": "mean: 284.2466640914513 nsec\nrounds: 3073" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 3502128.059412766, + "unit": "iter/sec", + "range": "stddev: 3.330861087614394e-8", + "extra": "mean: 285.54067213855086 nsec\nrounds: 4733" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 3610920.227331785, + "unit": "iter/sec", + "range": "stddev: 3.0355317401174836e-8", + "extra": "mean: 276.93771588494195 nsec\nrounds: 4046" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 3619085.5828596237, + "unit": "iter/sec", + "range": "stddev: 1.1121315004071775e-7", + "extra": "mean: 276.31289095126874 nsec\nrounds: 5919" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 3559304.3233292955, + "unit": "iter/sec", + "range": "stddev: 1.6238842097060764e-7", + "extra": "mean: 280.9537789296482 nsec\nrounds: 4630" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 3555123.278735129, + "unit": "iter/sec", + "range": "stddev: 1.3144828748796727e-7", + "extra": "mean: 281.2841979296392 nsec\nrounds: 3392" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 3578816.3904635995, + "unit": "iter/sec", + "range": "stddev: 4.865887811685631e-8", + "extra": "mean: 279.42199065162436 nsec\nrounds: 4320" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 3502603.7368100444, + "unit": "iter/sec", + "range": "stddev: 1.6419710996640842e-7", + "extra": "mean: 285.5018937742407 nsec\nrounds: 17426" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 3588433.4975466584, + "unit": "iter/sec", + "range": "stddev: 1.4035119980239038e-7", + "extra": "mean: 278.67313151649046 nsec\nrounds: 16964" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 3575145.0347432555, + "unit": "iter/sec", + "range": "stddev: 7.85638839964104e-8", + "extra": "mean: 279.7089321641503 nsec\nrounds: 8352" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 167.3902602207333, + "unit": "iter/sec", + "range": "stddev: 0.0005501419402208801", + "extra": "mean: 5.9740632380959635 msec\nrounds: 42" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 170.7241152440967, + "unit": "iter/sec", + "range": "stddev: 0.002454886732186821", + "extra": "mean: 5.857403323310401 msec\nrounds: 133" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 206.74469588748502, + "unit": "iter/sec", + "range": "stddev: 0.0020479357584144635", + "extra": "mean: 4.836883460092354 msec\nrounds: 213" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 201.35725407983946, + "unit": "iter/sec", + "range": "stddev: 0.0014678127528130087", + "extra": "mean: 4.966297363210433 msec\nrounds: 212" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 138.84479543393147, + "unit": "iter/sec", + "range": "stddev: 0.0028802959521098846", + "extra": "mean: 7.202286530616442 msec\nrounds: 98" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 113.9990176704592, + "unit": "iter/sec", + "range": "stddev: 0.001974266136352308", + "extra": "mean: 8.772005412281128 msec\nrounds: 114" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 257.46156531577435, + "unit": "iter/sec", + "range": "stddev: 0.00017746231345501808", + "extra": "mean: 3.8840748861815886 msec\nrounds: 246" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 224.01984557762646, + "unit": "iter/sec", + "range": "stddev: 0.0013953078225506569", + "extra": "mean: 4.463890229999663 msec\nrounds: 200" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 19.95533053139758, + "unit": "iter/sec", + "range": "stddev: 0.0010878752396930316", + "extra": "mean: 50.11192365000454 msec\nrounds: 20" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 425.46398856111676, + "unit": "iter/sec", + "range": "stddev: 0.0011778556383578104", + "extra": "mean: 2.3503751830605344 msec\nrounds: 366" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 118.73557664837092, + "unit": "iter/sec", + "range": "stddev: 0.0020201873091353186", + "extra": "mean: 8.422075575220784 msec\nrounds: 113" + } + ] + }, + { + "commit": { + "author": { + "name": "ixc", + "username": "ixc" + }, + "committer": { + "name": "ixc", + "username": "ixc" + }, + "id": "83c8ba2d07f1f63bdb666397cb118ee59b2fc3f1", + "message": "85 parameter remapping", + "timestamp": "2025-07-16T04:48:54Z", + "url": "https://github.com/ixc/python-edtf/pull/86/commits/83c8ba2d07f1f63bdb666397cb118ee59b2fc3f1" + }, + "date": 1754611739192, + "tool": "pytest", + "benches": [ + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[23rd Dynasty-None]", + "value": 3896667.1054737167, + "unit": "iter/sec", + "range": "stddev: 1.3840005306592688e-7", + "extra": "mean: 256.6295690476824 nsec\nrounds: 17701" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January 2008-2008-01]", + "value": 4120696.885950153, + "unit": "iter/sec", + "range": "stddev: 1.4235292503325525e-7", + "extra": "mean: 242.67739842976084 nsec\nrounds: 3075" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[ca1860-1860~]", + "value": 3796424.8205653843, + "unit": "iter/sec", + "range": "stddev: 4.602628455285393e-8", + "extra": "mean: 263.4057165001557 nsec\nrounds: 4863" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[uncertain: approx 1862-1862%]", + "value": 3783906.7266859263, + "unit": "iter/sec", + "range": "stddev: 4.928374524812365e-8", + "extra": "mean: 264.2771273793617 nsec\nrounds: 3843" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[January-XXXX-01]", + "value": 3850544.2824105197, + "unit": "iter/sec", + "range": "stddev: 1.0599797210188732e-7", + "extra": "mean: 259.7035449165071 nsec\nrounds: 6065" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[Winter 1872-1872-24]", + "value": 3865065.231349897, + "unit": "iter/sec", + "range": "stddev: 5.163098624691647e-8", + "extra": "mean: 258.72784549376 nsec\nrounds: 4762" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[before approx January 18 1928-/1928-01-18~]", + "value": 3800222.9262807686, + "unit": "iter/sec", + "range": "stddev: 1.856995780382027e-7", + "extra": "mean: 263.1424575343762 nsec\nrounds: 3573" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[birthday in 1872-1872]", + "value": 3846056.679545249, + "unit": "iter/sec", + "range": "stddev: 3.6370385350465614e-8", + "extra": "mean: 260.0065686286865 nsec\nrounds: 4415" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1270 CE-1270]", + "value": 3825154.7079341575, + "unit": "iter/sec", + "range": "stddev: 1.4638310017436357e-7", + "extra": "mean: 261.42733467114266 nsec\nrounds: 18365" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[2nd century bce--01XX]", + "value": 3844636.7719582072, + "unit": "iter/sec", + "range": "stddev: 4.049496108164654e-8", + "extra": "mean: 260.1025946829992 nsec\nrounds: 15108" + }, + { + "name": "edtf/natlang/tests.py::test_benchmark_natlang[1858/1860-[1858, 1860]]", + "value": 3866661.8340933197, + "unit": "iter/sec", + "range": "stddev: 1.8868176806269788e-7", + "extra": "mean: 258.62101288060705 nsec\nrounds: 8747" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-02-03]", + "value": 175.6200500025684, + "unit": "iter/sec", + "range": "stddev: 0.0005780411721517352", + "extra": "mean: 5.694110666665766 msec\nrounds: 45" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008-12]", + "value": 179.53432695815508, + "unit": "iter/sec", + "range": "stddev: 0.0016336147425229622", + "extra": "mean: 5.569965459770124 msec\nrounds: 174" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2008]", + "value": 233.13386483113769, + "unit": "iter/sec", + "range": "stddev: 0.0004987932007664678", + "extra": "mean: 4.289381127552254 msec\nrounds: 196" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-0999]", + "value": 219.83054947518758, + "unit": "iter/sec", + "range": "stddev: 0.0016058841894924444", + "extra": "mean: 4.548958288042084 msec\nrounds: 184" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2004-01-01T10:10:10+05:00]", + "value": 157.16014468388326, + "unit": "iter/sec", + "range": "stddev: 0.0004107186962915605", + "extra": "mean: 6.362936366668729 msec\nrounds: 90" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[-2005/-1999-02]", + "value": 122.31719238607135, + "unit": "iter/sec", + "range": "stddev: 0.0018680219721144168", + "extra": "mean: 8.175465611111209 msec\nrounds: 108" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[/2006]", + "value": 281.8490524098306, + "unit": "iter/sec", + "range": "stddev: 0.0002533547841677691", + "extra": "mean: 3.5479984461538003 msec\nrounds: 260" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[?2004-%06]", + "value": 242.79942836843708, + "unit": "iter/sec", + "range": "stddev: 0.0004137980919304289", + "extra": "mean: 4.118625841583718 msec\nrounds: 202" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[[1667, 1760-12]]", + "value": 20.180584480311715, + "unit": "iter/sec", + "range": "stddev: 0.0019502450616734031", + "extra": "mean: 49.55257866666871 msec\nrounds: 21" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[Y3388E2S3]", + "value": 454.44136337426744, + "unit": "iter/sec", + "range": "stddev: 0.0001419099094307426", + "extra": "mean: 2.2005039166657525 msec\nrounds: 360" + }, + { + "name": "edtf/parser/tests.py::test_benchmark_parser[2001-29]", + "value": 131.86838081911412, + "unit": "iter/sec", + "range": "stddev: 0.001762720700271494", + "extra": "mean: 7.583319016950055 msec\nrounds: 118" + } + ] + } + ] + } +} \ No newline at end of file diff --git a/dev/bench/index.html b/dev/bench/index.html new file mode 100644 index 0000000..6c88780 --- /dev/null +++ b/dev/bench/index.html @@ -0,0 +1,281 @@ + + + + + + + Benchmarks + + + + +
+ + + + + + + diff --git a/edtf/__init__.py b/edtf/__init__.py deleted file mode 100644 index 0b0bfbf..0000000 --- a/edtf/__init__.py +++ /dev/null @@ -1,75 +0,0 @@ -from edtf.natlang import text_to_edtf -from edtf.parser import ( - UA, - Consecutives, - Date, - DateAndTime, - EarlierConsecutives, - EDTFObject, - EDTFParseException, - ExponentialYear, - Interval, - LaterConsecutives, - Level1Interval, - Level2Interval, - Level2Season, - LongYear, - MultipleDates, - OneOfASet, - PartialUncertainOrApproximate, - PartialUnspecified, - Season, - UncertainOrApproximate, - Unspecified, - UnspecifiedIntervalSection, - is_valid_edtf, - parse_edtf, -) - -from .convert import ( - dt_to_struct_time, - jd_to_struct_time, - old_specs_to_new_specs_expression, - struct_time_to_date, - struct_time_to_datetime, - struct_time_to_jd, - trim_struct_time, -) - -# public -__all__ = [ - "dt_to_struct_time", - "jd_to_struct_time", - "old_specs_to_new_specs_expression", - "struct_time_to_date", - "struct_time_to_datetime", - "struct_time_to_jd", - "trim_struct_time", - "text_to_edtf", - "parse_edtf", - "is_valid_edtf", - # parser_exceptions - "EDTFParseException", - # parser_classes - "EDTFObject", - "Date", - "DateAndTime", - "Interval", - "UA", - "UncertainOrApproximate", - "UnspecifiedIntervalSection", - "Unspecified", - "Level1Interval", - "LongYear", - "Season", - "PartialUncertainOrApproximate", - "PartialUnspecified", - "Consecutives", - "EarlierConsecutives", - "LaterConsecutives", - "OneOfASet", - "MultipleDates", - "Level2Interval", - "Level2Season", - "ExponentialYear", -] diff --git a/edtf/appsettings.py b/edtf/appsettings.py deleted file mode 100644 index e9b4d9d..0000000 --- a/edtf/appsettings.py +++ /dev/null @@ -1,115 +0,0 @@ -from dateutil.relativedelta import relativedelta - -try: - from django.core.exceptions import ImproperlyConfigured - - try: - from django.conf import settings - - EDTF = getattr(settings, "EDTF", {}) - except ImproperlyConfigured: - EDTF = {} -except ImportError: - EDTF = {} - -SEASON_MONTHS_RANGE: dict[int, list[int]] = EDTF.get( - "SEASON_MONTHS_RANGE", - { - # season id: [earliest_month, last_month] - 21: [3, 5], - 22: [6, 8], - 23: [9, 11], - # winter in the northern hemisphere wraps the end of the year, so - # Winter 2010 could wrap into 2011. - # For simplicity, we assume it falls at the end of the year, esp since the - # spec says that sort order goes spring > summer > autumn > winter - 24: [12, 12], - }, -) - -SEASON_L2_MONTHS_RANGE: dict[int, list[int]] = EDTF.get( - "SEASON_L2_MONTHS_RANGE", - { - # season id: [earliest_month, last_month] - 21: [3, 5], - 22: [6, 8], - 23: [9, 11], - # winter in the northern hemisphere wraps the end of the year, so - # Winter 2010 could wrap into 2011. - # For simplicity, we assume it falls at the end of the year, esp since the - # spec says that sort order goes spring > summer > autumn > winter - 24: [12, 12], - # spring in the northern hemisphere - 25: [3, 5], - # summer in the northern hemisphere - 26: [6, 8], - # fall/autumn in the northern hemisphere - 27: [9, 11], - # winter in the northern hemisphere wraps the end of the year - 28: [12, 12], - # spring in the southern hemisphere - 29: [9, 11], - # summer in the southern hemisphere - 30: [12, 12], - # fall/autumn in the southern hemisphere - 31: [3, 5], - # winter in the southern hemisphere - 32: [6, 8], - 33: [1, 3], - 34: [4, 6], - 35: [7, 9], - 36: [10, 12], - 37: [1, 4], - 38: [5, 8], - 39: [9, 12], - 40: [1, 6], - 41: [7, 12], - }, -) - -DAY_FIRST: bool = EDTF.get("DAY_FIRST", False) # Americans! - -SEASONS: dict[int, str] = EDTF.get( - "SEASONS", - { - 21: "spring", - 22: "summer", - 23: "autumn", - 24: "winter", - }, -) -INVERSE_SEASONS: dict[str, int] = EDTF.get( - "INVERSE_SEASONS", {v: k for k, v in SEASONS.items()} -) -# also need to interpret `fall` -INVERSE_SEASONS["fall"] = 23 - -# changing these will break tests -PADDING_DAY_PRECISION: relativedelta = EDTF.get( - "PADDING_DAY_PRECISION", relativedelta(days=1) -) -PADDING_MONTH_PRECISION: relativedelta = EDTF.get( - "PADDING_MONTH_PRECISION", relativedelta(months=1) -) -PADDING_YEAR_PRECISION: relativedelta = EDTF.get( - "PADDING_YEAR_PRECISION", relativedelta(years=1) -) -PADDING_SEASON_PRECISION: relativedelta = EDTF.get( - "PADDING_SEASON_PRECISION", relativedelta(weeks=12) -) -PADDING_DECADE_PRECISION: relativedelta = EDTF.get( - "PADDING_DECADE_PRECISION", relativedelta(years=10) -) -PADDING_CENTURY_PRECISION: relativedelta = EDTF.get( - "PADDING_CENTURY_PRECISION", relativedelta(years=100) -) -PADDING_MILLENNIUM_PRECISION: relativedelta = EDTF.get( - "PADDING_MILLENNIUM_PRECISION", relativedelta(years=1000) -) -MULTIPLIER_IF_UNCERTAIN: float = EDTF.get("MULTIPLIER_IF_UNCERTAIN", 1.0) -MULTIPLIER_IF_APPROXIMATE: float = EDTF.get("MULTIPLIER_IF_APPROXIMATE", 1.0) -MULTIPLIER_IF_BOTH: float = EDTF.get("MULTIPLIER_IF_BOTH", 2.0) -DELTA_IF_UNKNOWN: relativedelta = EDTF.get("DELTA_IF_UNKNOWN", relativedelta(years=10)) -DELTA_IF_EMPTY: relativedelta = relativedelta(None) - -DEBUG_PYPARSING: bool = False diff --git a/edtf/convert.py b/edtf/convert.py deleted file mode 100644 index c03e2ea..0000000 --- a/edtf/convert.py +++ /dev/null @@ -1,155 +0,0 @@ -from datetime import date, datetime -from time import struct_time - -from edtf import jdutil - -TIME_EMPTY_TIME = [0, 0, 0] # tm_hour, tm_min, tm_sec -TIME_EMPTY_EXTRAS = [0, 0, -1] # tm_wday, tm_yday, tm_isdst - - -def old_specs_to_new_specs_expression(expression): - expression = expression.replace("unknown", "") - expression = expression.replace("open", "..") - expression = expression.replace("u", "X") - expression = expression.replace("x", "X") - expression = expression.replace("?~", "%") - expression = expression.replace("~?", "%") - expression = expression.replace("e", "E") - expression = expression.replace("y", "Y") - expression = expression.replace("p", "S") - - return expression - - -def dt_to_struct_time(dt) -> struct_time: - """ - Convert a `datetime.date` or `datetime.datetime` to a `struct_time` - representation *with zero values* for data fields that we cannot always - rely on for ancient or far-future dates: tm_wday, tm_yday, tm_isdst - - NOTE: If it wasn't for the requirement that the extra fields are unset - we could use the `timetuple()` method instead of this function. - """ - if isinstance(dt, datetime): - return struct_time( - [dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second] - + TIME_EMPTY_EXTRAS - ) - elif isinstance(dt, date): - return struct_time( - [dt.year, dt.month, dt.day] + TIME_EMPTY_TIME + TIME_EMPTY_EXTRAS - ) - raise NotImplementedError(f"Cannot convert {type(dt)} to `struct_time`") - - -def struct_time_to_date(st: struct_time) -> date: - """ - Return a `datetime.date` representing the provided `struct_time. - - WARNING: This will fail for dates with years before 1 AD or after 9999 AD. - """ - return date(*st[:3]) - - -def struct_time_to_datetime(st: struct_time) -> datetime: - """ - Return a `datetime.datetime` representing the provided `struct_time. - - WARNING: This will fail for dates with years before 1 AD or after 9999 AD. - """ - return datetime(*st[:6]) - - -def trim_struct_time(st: struct_time, strip_time: bool = False) -> struct_time: - """ - Return a `struct_time` based on the one provided but with the extra fields - `tm_wday`, `tm_yday`, and `tm_isdst` reset to default values. - - If `strip_time` is set to true the time value are also set to zero: - `tm_hour`, `tm_min`, and `tm_sec`. - """ - if strip_time: - return struct_time(list(st[:3]) + TIME_EMPTY_TIME + TIME_EMPTY_EXTRAS) - return struct_time(list(st[:6]) + TIME_EMPTY_EXTRAS) - - -def struct_time_to_jd(st: struct_time) -> float: - """ - Return a float number representing the Julian Date for the given - `struct_time`. - - NOTE: extra fields `tm_wday`, `tm_yday`, and `tm_isdst` are ignored. - """ - year, month, day = st[:3] - hours, minutes, seconds = st[3:6] - - # Convert time of day to fraction of day - day += jdutil.hmsm_to_days(hours, minutes, seconds) - - return jdutil.date_to_jd(year, month, day) - - -def jd_to_struct_time(jd: float) -> struct_time: - """ - Return a `struct_time` converted from a Julian Date float number. - - WARNING: Conversion to then from Julian Date value to `struct_time` can be - inaccurate and lose or gain time, especially for BC (negative) years. - - NOTE: extra fields `tm_wday`, `tm_yday`, and `tm_isdst` are set to default - values, not real ones. - """ - year, month, day = jdutil.jd_to_date(jd) - - # Convert time of day from fraction of day - day_fraction = day - int(day) - hour, minute, second, ms = jdutil.days_to_hmsm(day_fraction) - day = int(day) - - # This conversion can return negative values for items we do not want to be - # negative: month, day, hour, minute, second. - year, month, day, hour, minute, second = _roll_negative_time_fields( - year, month, day, hour, minute, second - ) - - return struct_time([year, month, day, hour, minute, second] + TIME_EMPTY_EXTRAS) - - -def _roll_negative_time_fields(year, month, day, hour, minute, second) -> tuple: - """ - Fix date/time fields which have nonsense negative values for any field - except for year by rolling the overall date/time value backwards, treating - negative values as relative offsets of the next higher unit. - - For example minute=5, second=-63 becomes minute=3, second=57 (5 minutes - less 63 seconds) - - This is very unsophisticated handling of negative values which we would - ideally do with `dateutil.relativedelta` but cannot because that class does - not support arbitrary dates, especially not negative years which is the - only case where these nonsense values are likely to occur anyway. - - NOTE: To greatly simplify the logic we assume all months are 30 days long. - """ - if second < 0: - minute += int(second / 60.0) # Adjust by whole minute in secs - minute -= 1 # Subtract 1 for negative second - second %= 60 # Convert negative second to positive remainder - if minute < 0: - hour += int(minute / 60.0) # Adjust by whole hour in minutes - hour -= 1 # Subtract 1 for negative minutes - minute %= 60 # Convert negative minute to positive remainder - if hour < 0: - day += int(hour / 24.0) # Adjust by whole day in hours - day -= 1 # Subtract 1 for negative minutes - hour %= 24 # Convert negative hour to positive remainder - if day < 0: - month += int(day / 30.0) # Adjust by whole month in days (assume 30) - month -= 1 # Subtract 1 for negative minutes - day %= 30 # Convert negative day to positive remainder - if month < 0: - year += int(month / 12.0) # Adjust by whole year in months - year -= 1 # Subtract 1 for negative minutes - month %= 12 # Convert negative month to positive remainder - - return year, month, day, hour, minute, second diff --git a/edtf/fields.py b/edtf/fields.py deleted file mode 100644 index 07a9744..0000000 --- a/edtf/fields.py +++ /dev/null @@ -1,234 +0,0 @@ -import pickle - -from django.core import checks -from django.core.exceptions import FieldDoesNotExist -from django.db import models -from django.db.models import signals -from django.db.models.query_utils import DeferredAttribute -from pyparsing import ParseException - -from edtf import EDTFObject, parse_edtf -from edtf.convert import struct_time_to_date, struct_time_to_jd -from edtf.natlang import text_to_edtf -from edtf.parser.edtf_exceptions import EDTFParseException - -DATE_ATTRS = ( - "lower_strict", - "upper_strict", - "lower_fuzzy", - "upper_fuzzy", -) - - -class EDTFFieldDescriptor(DeferredAttribute): - """ - Descriptor for the EDTFField's attribute on the model instance. - This updates the dependent fields each time this value is set. - """ - - def __set__(self, instance, value): - # First set the value we are given - instance.__dict__[self.field.attname] = value - # `update_values` may provide us with a new value to set - edtf = self.field.update_values(instance, value) - if edtf != value: - instance.__dict__[self.field.attname] = edtf - - -class EDTFField(models.CharField): - def __init__( - self, - verbose_name=None, - name=None, - natural_text_field=None, - direct_input_field=None, - lower_strict_field=None, - upper_strict_field=None, - lower_fuzzy_field=None, - upper_fuzzy_field=None, - **kwargs, - ): - kwargs["max_length"] = 2000 - self.natural_text_field = natural_text_field - self.direct_input_field = direct_input_field - self.lower_strict_field = lower_strict_field - self.upper_strict_field = upper_strict_field - self.lower_fuzzy_field = lower_fuzzy_field - self.upper_fuzzy_field = upper_fuzzy_field - super().__init__(verbose_name, name, **kwargs) - - description = ( - "A field for storing complex/fuzzy date specifications in EDTF format." - ) - descriptor_class = EDTFFieldDescriptor - - def deconstruct(self): - name, path, args, kwargs = super().deconstruct() - if self.natural_text_field: - kwargs["natural_text_field"] = self.natural_text_field - if self.direct_input_field: - kwargs["direct_input_field"] = self.direct_input_field - - for attr in DATE_ATTRS: - field = f"{attr}_field" - f = getattr(self, field, None) - if f: - kwargs[field] = f - - del kwargs["max_length"] - return name, path, args, kwargs - - def from_db_value(self, value, expression, connection): - # Converting values from the database to Python objects - if value is None: - return value - - try: - # Try to unpickle if the value was pickled - return pickle.loads(value) # noqa S301 - except (pickle.PickleError, TypeError): - # If it fails because it's not pickled data, try parsing as EDTF - return parse_edtf(value, fail_silently=True) - - def to_python(self, value): - if isinstance(value, EDTFObject): - return value - - if value is None: - return value - - return parse_edtf(value, fail_silently=True) - - def get_db_prep_save(self, value, connection): - if value: - return pickle.dumps(value) - return super().get_db_prep_save(value, connection) - - def get_prep_value(self, value): - # convert python objects to query values - value = super().get_prep_value(value) - if isinstance(value, EDTFObject): - return pickle.dumps(value) - return value - - def update_values(self, instance, *args, **kwargs): - """ - Updates the EDTF value from either the natural_text_field, which is parsed - with text_to_edtf() and is used for display, or falling back to the direct_input_field, - which allows directly providing an EDTF string. If one of these provides a valid EDTF object, - then set the date values accordingly. - """ - - # Get existing value to determine if update is needed - existing_value = getattr(instance, self.attname, None) - direct_input = getattr(instance, self.direct_input_field, "") - natural_text = getattr(instance, self.natural_text_field, "") - - # if direct_input is provided and is different from the existing value, update the EDTF field - if direct_input and ( - existing_value is None or str(existing_value) != direct_input - ): - try: - edtf = parse_edtf( - direct_input, fail_silently=True - ) # ParseException if invalid; should this be raised? - except ParseException as err: - raise EDTFParseException(direct_input, err) from None - - # set the natural_text (display) field to the direct_input if it is not provided - if not natural_text: - setattr(instance, self.natural_text_field, direct_input) - - elif natural_text: - edtf_string = text_to_edtf(natural_text) - if edtf_string and ( - existing_value is None or str(existing_value) != edtf_string - ): - edtf = parse_edtf( - edtf_string, fail_silently=True - ) # potential ParseException if invalid; should this be raised? - else: - edtf = existing_value - else: - if not existing_value: - # No inputs provided and no existing value; TODO log this? - return - # TODO: if both direct_input and natural_text are cleared, should we throw an error? - edtf = existing_value - - # Process and update related date fields based on the EDTF object - for attr in DATE_ATTRS: - field_attr = f"{attr}_field" - g = getattr(self, field_attr, None) - if g: - if edtf: - try: - target_field = instance._meta.get_field(g) - except FieldDoesNotExist: - continue - value = getattr(edtf, attr)() # struct_time - if isinstance(target_field, models.FloatField): - value = struct_time_to_jd(value) - elif isinstance(target_field, models.DateField): - value = struct_time_to_date(value) - else: - raise NotImplementedError( - f"EDTFField does not support {type(target_field)} as a derived data" - " field, only FloatField or DateField" - ) - setattr(instance, g, value) - else: - setattr(instance, g, None) - return edtf - - def contribute_to_class(self, cls, name, **kwargs): - super().contribute_to_class(cls, name, **kwargs) - # Attach update_values so that dependent fields declared - # after their corresponding edtf field don't stay cleared by - # Model.__init__, see Django bug #11196. - # Only run post-initialization values update on non-abstract models - if not cls._meta.abstract: - signals.post_init.connect(self.update_values, sender=cls) - - def check(self, **kwargs): - errors = super().check(**kwargs) - - for field_alias in [ - "direct_input_field", - "lower_fuzzy_field", - "lower_strict_field", - "natural_text_field", - "upper_fuzzy_field", - "upper_strict_field", - ]: - errors.extend(self._check_field(field_alias)) - - return errors - - def _check_field(self, field_alias): - field_name = getattr(self, field_alias, None) - - # Check if the alias value has been provided in the field definition - if not field_name: - return [ - checks.Error( - f"You must specify a '{field_alias}' for EDTFField", - hint=None, - obj=self, - id="python-edtf.EDTF01", - ) - ] - - # Check if the field that is referenced actually exists - try: - self.model._meta.get_field(field_name) - except FieldDoesNotExist: - return [ - checks.Error( - f"'{self.name}' refers to a non-existent '{field_alias}' field: '{field_name}'", - hint=None, - obj=self, - id="python-edtf.EDTF02", - ) - ] - return [] diff --git a/edtf/jdutil.py b/edtf/jdutil.py deleted file mode 100644 index b7a2cbb..0000000 --- a/edtf/jdutil.py +++ /dev/null @@ -1,431 +0,0 @@ -# Source: https://gist.github.com/jiffyclub/1294443 -""" -Functions for converting dates to/from JD and MJD. Assumes dates are historical -dates, including the transition from the Julian calendar to the Gregorian -calendar in 1582. No support for proleptic Gregorian/Julian calendars. - -:Author: Matt Davis -:Website: http://github.com/jiffyclub - -""" - -import datetime as dt -import math - -# Note: The Python datetime module assumes an infinitely valid Gregorian calendar. -# The Gregorian calendar took effect after 10-15-1582 and the dates 10-05 through -# 10-14-1582 never occurred. Python datetime objects will produce incorrect -# time deltas if one date is from before 10-15-1582. - - -def mjd_to_jd(mjd: float) -> float: - """ - Convert Modified Julian Day to Julian Day. - - Parameters - ---------- - mjd : float - Modified Julian Day - - Returns - ------- - jd : float - Julian Day - - - """ - return mjd + 2400000.5 - - -def jd_to_mjd(jd: float) -> float: - """ - Convert Julian Day to Modified Julian Day - - Parameters - ---------- - jd : float - Julian Day - - Returns - ------- - mjd : float - Modified Julian Day - - """ - return jd - 2400000.5 - - -def date_to_jd(year: int, month: int, day: float) -> float: - """ - Convert a date to Julian Day. - - Algorithm from 'Practical Astronomy with your Calculator or Spreadsheet', - 4th ed., Duffet-Smith and Zwart, 2011. - - Parameters - ---------- - year : int - Year as integer. Years preceding 1 A.D. should be 0 or negative. - The year before 1 A.D. is 0, 10 B.C. is year -9. - - month : int - Month as integer, Jan = 1, Feb. = 2, etc. - - day : float - Day, may contain fractional part. - - Returns - ------- - jd : float - Julian Day - - Examples - -------- - Convert 6 a.m., February 17, 1985 to Julian Day - - >>> date_to_jd(1985,2,17.25) - 2446113.75 - - """ - if month == 1 or month == 2: - yearp = year - 1 - monthp = month + 12 - else: - yearp = year - monthp = month - - # this checks where we are in relation to October 15, 1582, the beginning - # of the Gregorian calendar. - if ( - (year < 1582) - or (year == 1582 and month < 10) - or (year == 1582 and month == 10 and day < 15) - ): - # before start of Gregorian calendar - B = 0 - else: - # after start of Gregorian calendar - A = math.trunc(yearp / 100.0) - B = 2 - A + math.trunc(A / 4.0) - - C = math.trunc(365.25 * yearp - 0.75) if yearp < 0 else math.trunc(365.25 * yearp) - - D = math.trunc(30.6001 * (monthp + 1)) - - jd = B + C + D + day + 1720994.5 - - return jd - - -def jd_to_date(jd: float) -> tuple: - """ - Convert Julian Day to date. - - Algorithm from 'Practical Astronomy with your Calculator or Spreadsheet', - 4th ed., Duffet-Smith and Zwart, 2011. - - Parameters - ---------- - jd : float - Julian Day - - Returns - ------- - year : int - Year as integer. Years preceding 1 A.D. should be 0 or negative. - The year before 1 A.D. is 0, 10 B.C. is year -9. - - month : int - Month as integer, Jan = 1, Feb. = 2, etc. - - day : float - Day, may contain fractional part. - - Examples - -------- - Convert Julian Day 2446113.75 to year, month, and day. - - >>> jd_to_date(2446113.75) - (1985, 2, 17.25) - - """ - jd = jd + 0.5 - - F, I = math.modf(jd) # noqa: E741 - I = int(I) # noqa: E741 - - A = math.trunc((I - 1867216.25) / 36524.25) - - B = I + 1 + A - math.trunc(A / 4.0) if I > 2299160 else I - - C = B + 1524 - - D = math.trunc((C - 122.1) / 365.25) - - E = math.trunc(365.25 * D) - - G = math.trunc((C - E) / 30.6001) - - day = C - E + F - math.trunc(30.6001 * G) - - month = G - 1 if G < 13.5 else G - 13 - - year = D - 4716 if month > 2.5 else D - 4715 - - return year, month, day - - -def hmsm_to_days(hour: int = 0, min: int = 0, sec: int = 0, micro: int = 0) -> float: - """ - Convert hours, minutes, seconds, and microseconds to fractional days. - - Parameters - ---------- - hour : int, optional - Hour number. Defaults to 0. - - min : int, optional - Minute number. Defaults to 0. - - sec : int, optional - Second number. Defaults to 0. - - micro : int, optional - Microsecond number. Defaults to 0. - - Returns - ------- - days : float - Fractional days. - - Examples - -------- - >>> hmsm_to_days(hour=6) - 0.25 - - """ - days = sec + (micro / 1.0e6) - - days = min + (days / 60.0) - - days = hour + (days / 60.0) - - return days / 24.0 - - -def days_to_hmsm(days): - """ - Convert fractional days to hours, minutes, seconds, and microseconds. - Precision beyond microseconds is rounded to the nearest microsecond. - - Parameters - ---------- - days : float - A fractional number of days. Must be less than 1. - - Returns - ------- - hour : int - Hour number. - - min : int - Minute number. - - sec : int - Second number. - - micro : int - Microsecond number. - - Raises - ------ - ValueError - If `days` is >= 1. - - Examples - -------- - >>> days_to_hmsm(0.1) - (2, 24, 0, 0) - - """ - hours = days * 24.0 - hours, hour = math.modf(hours) - - mins = hours * 60.0 - mins, min = math.modf(mins) - - secs = mins * 60.0 - secs, sec = math.modf(secs) - - micro = round(secs * 1.0e6) - - return int(hour), int(min), int(sec), int(micro) - - -def datetime_to_jd(date: dt.datetime) -> float: - """ - Convert a `datetime.datetime` object to Julian Day. - - Parameters - ---------- - date : `datetime.datetime` instance - - Returns - ------- - jd : float - Julian day. - - Examples - -------- - >>> d = datetime.datetime(1985,2,17,6) - >>> d - datetime.datetime(1985, 2, 17, 6, 0) - >>> jdutil.datetime_to_jd(d) - 2446113.75 - - """ - days = date.day + hmsm_to_days( - date.hour, date.minute, date.second, date.microsecond - ) - - return date_to_jd(date.year, date.month, days) - - -def jd_to_datetime(jd: float) -> dt.datetime: - """ - Convert a Julian Day to an `jdutil.datetime` object. - - Parameters - ---------- - jd : float - Julian day. - - Returns - ------- - dt : `jdutil.datetime` object - `jdutil.datetime` equivalent of Julian day. - - Examples - -------- - >>> jd_to_datetime(2446113.75) - datetime(1985, 2, 17, 6, 0) - - """ - year, month, day = jd_to_date(jd) - - frac_days, day = math.modf(day) - day = int(day) - - hour, min, sec, micro = days_to_hmsm(frac_days) - - return datetime(year, month, day, hour, min, sec, micro) - - -def timedelta_to_days(td: dt.timedelta) -> float: - """ - Convert a `datetime.timedelta` object to a total number of days. - - Parameters - ---------- - td : `datetime.timedelta` instance - - Returns - ------- - days : float - Total number of days in the `datetime.timedelta` object. - - Examples - -------- - >>> td = datetime.timedelta(4.5) - >>> td - datetime.timedelta(4, 43200) - >>> timedelta_to_days(td) - 4.5 - - """ - seconds_in_day = 24.0 * 3600.0 - - days = td.days + (td.seconds + (td.microseconds * 10.0e6)) / seconds_in_day - - return days - - -class datetime(dt.datetime): - """ - A subclass of `datetime.datetime` that performs math operations by first - converting to Julian Day, then back to a `jdutil.datetime` object. - - Addition works with `datetime.timedelta` objects, subtraction works with - `datetime.timedelta`, `datetime.datetime`, and `jdutil.datetime` objects. - Not all combinations work in all directions, e.g. - `timedelta - datetime` is meaningless. - - See Also - -------- - datetime.datetime : Parent class. - - """ - - def __add__(self, other): - if not isinstance(other, dt.timedelta): - s = "jdutil.datetime supports '+' only with datetime.timedelta" - raise TypeError(s) - - days = timedelta_to_days(other) - - combined = datetime_to_jd(self) + days - - return jd_to_datetime(combined) - - def __radd__(self, other): - if not isinstance(other, dt.timedelta): - s = "jdutil.datetime supports '+' only with datetime.timedelta" - raise TypeError(s) - - days = timedelta_to_days(other) - - combined = datetime_to_jd(self) + days - - return jd_to_datetime(combined) - - def __sub__(self, other): - if isinstance(other, dt.timedelta): - days = timedelta_to_days(other) - - combined = datetime_to_jd(self) - days - - return jd_to_datetime(combined) - - elif isinstance(other, datetime | dt.datetime): - diff = datetime_to_jd(self) - datetime_to_jd(other) - - return dt.timedelta(diff) - - else: - s = "jdutil.datetime supports '-' with: " - s += "datetime.timedelta, jdutil.datetime and datetime.datetime" - raise TypeError(s) - - def __rsub__(self, other): - if not isinstance(other, datetime | dt.datetime): - s = "jdutil.datetime supports '-' with: " - s += "jdutil.datetime and datetime.datetime" - raise TypeError(s) - - diff = datetime_to_jd(other) - datetime_to_jd(self) - - return dt.timedelta(diff) - - def to_jd(self): - """ - Return the date converted to Julian Day. - - """ - return datetime_to_jd(self) - - def to_mjd(self): - """ - Return the date converted to Modified Julian Day. - - """ - return jd_to_mjd(self.to_jd()) diff --git a/edtf/natlang/__init__.py b/edtf/natlang/__init__.py deleted file mode 100644 index 463863c..0000000 --- a/edtf/natlang/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -from .en import text_to_edtf - -__all__ = ["text_to_edtf"] diff --git a/edtf/natlang/en.py b/edtf/natlang/en.py deleted file mode 100644 index 077ae19..0000000 --- a/edtf/natlang/en.py +++ /dev/null @@ -1,292 +0,0 @@ -"""Utilities to derive an EDTF string from an (English) natural language string.""" - -import functools -import re -from datetime import datetime - -from dateutil.parser import ParserError, parse - -from edtf import appsettings - -# two dates where every digit of an ISO date representation is different, -# and one is in the past and one is in the future. -# This is used in the dateutil parse to detect which elements weren't parsed. -DEFAULT_DATE_1 = datetime(1234, 1, 1, 0, 0) -DEFAULT_DATE_2 = datetime(5678, 10, 10, 0, 0) - -LONG_YEAR_RE = re.compile(r"y(-?)([1-9]\d\d\d\d+)") -CENTURY_RE = re.compile(r"(\d{1,2})(c\.?|(st|nd|rd|th) century)\s?(ad|ce|bc|bce)?") -CENTURY_RANGE = re.compile(r"\b(\d\d)(th|st|nd|rd|)-(\d\d)(th|st|nd|rd) [cC]") -CE_RE = re.compile(r"(\d{1,4}) (ad|ce|bc|bce)") -ONE_DIGIT_PARTIAL_FIRST = re.compile(r"\d\D\b") -TWO_DIGIT_PARTIAL_FIRST = re.compile(r"\d\d\b") -PARTIAL_CHECK = re.compile(r"\b\d\d\d\d$") -SLASH_YEAR = re.compile(r"(\d\d\d\d)/(\d\d\d\d)") -BEFORE_CHECK = re.compile(r"\b(?:before|earlier|avant)\b") -AFTER_CHECK = re.compile(r"\b(after|since|later|aprés|apres)\b") -APPROX_CHECK = re.compile( - r"\b(?:ca?\.? ?\d{4}|circa|approx|approximately|around|about|~\d{3,4})|^~" -) -UNCERTAIN_CHECK = re.compile(r"\b(?:uncertain|possibly|maybe|guess|\d{3,4}\?)") -UNCERTAIN_REPL = re.compile(r"(\d{4})\?") -MIGHT_BE_CENTURY = re.compile(r"(\d{2}00)s") -MIGHT_BE_DECADE = re.compile(r"(\d{3}0)s") - -APPROX_CENTURY_RE = re.compile( - r"\b(ca?\.?) ?(\d{1,2})(c\.?|(st|nd|rd|th) century)\s?(ad|ce|bc|bce)?" -) -UNCERTAIN_CENTURY_RE = re.compile( - r"(\d{1,2})(c\.?|(st|nd|rd|th) century)\s?(ad|ce|bc|bce)?\?" -) - -APPROX_CE_RE = re.compile(r"\b(ca?\.?) ?(\d{1,4}) (ad|ce|bc|bce)") -UNCERTAIN_CE_RE = re.compile(r"(\d{1,4}) (ad|ce|bc|bce)\?") - -MENTIONS_YEAR = re.compile(r"\byear\b.+(in|during)\b") -MENTIONS_MONTH = re.compile(r"\bmonth\b.+(in|during)\b") -MENTIONS_DAY = re.compile(r"\bday\b.+(in|during)\b") - -# Set of RE rules that will cause us to abort text processing, since we know -# the results will be wrong. -REJECT_RULES = re.compile(r".*dynasty.*") # Don't parse '23rd Dynasty' to 'uuuu-uu-23' - - -@functools.lru_cache -def text_to_edtf(text: str) -> str | None: - """ - Generate EDTF string equivalent of a given natural language date string. - """ - if not text: - return None - - t = text.lower() - - # try parsing the whole thing - result: str | None = text_to_edtf_date(t) - - if not result: - # split by list delims and move fwd with the first thing that returns a non-empty string. - # TODO: assemble multiple dates into a {} or [] structure. - for split in [",", ";", "or"]: - for list_item in t.split(split): - # try parsing as an interval - split by '-' - toks: list[str] = list_item.split("-") - - if len(toks) == 2: - d1 = toks[0].strip() - d2 = toks[1].strip() - - # match looks from the beginning of the string, search - # looks anywhere. - - if re.match( - ONE_DIGIT_PARTIAL_FIRST, d2 - ): # 1-digit year partial e.g. 1868-9 - if re.search( - PARTIAL_CHECK, d1 - ): # TODO: evaluate it and see if it's a year - d2 = d1[-4:-1] + d2 - elif re.match( - TWO_DIGIT_PARTIAL_FIRST, d2 - ): # 2-digit year partial e.g. 1809-10 - if re.search(PARTIAL_CHECK, d1): - d2 = d1[-4:-2] + d2 - else: - century_range_match = re.search(CENTURY_RANGE, f"{d1}-{d2}") - if century_range_match: - g = century_range_match.groups() - d1 = f"{g[0]}C" - d2 = f"{g[2]}C" - - r1 = text_to_edtf_date(d1) - r2 = text_to_edtf_date(d2) - - if r1 and r2: - result = f"{r1}/{r2}" - return result - - # is it an either/or year "1838/1862" - that has a different - # representation in EDTF. If it's 'both', then we use {}. If - # it's 'or' then we use []. Assuming the latter for now. - # This whole section could be more friendly. - - else: - int_match = re.search(SLASH_YEAR, list_item) - if int_match: - return f"[{int_match.group(1)}, {int_match.group(2)}]" - - result = text_to_edtf_date(list_item) - if result: - break - if result: - break - - is_before = re.findall(BEFORE_CHECK, t) - is_after = re.findall(AFTER_CHECK, t) - - if is_before: - result = f"/{result}" - elif is_after: - result = f"{result}/" - - return result - - -@functools.lru_cache -def text_to_edtf_date(text: str) -> str | None: - """ - Return EDTF string equivalent of a given natural language date string. - - The approach here is to parse the text twice, with different default - dates. Then compare the results to see what differs - the parts that - differ are undefined. - """ - if not text: - return None - - t = text.lower() - result: str = "" - - if re.match(REJECT_RULES, t): - return None - - # matches on '1800s'. Needs to happen before is_decade. - could_be_century: list = re.findall(MIGHT_BE_CENTURY, t) - # matches on '1800s' and '1910s'. Removes the 's'. - # Needs to happen before is_uncertain because e.g. "1860s?" - t, is_decade = re.subn(MIGHT_BE_DECADE, r"\1", t) - - # detect approximation signifiers - # a few 'circa' abbreviations just before the year - is_approximate = re.findall(APPROX_CHECK, t) - # the word 'circa' anywhere - - # detect uncertainty signifiers - t, is_uncertain = re.subn(UNCERTAIN_REPL, r"\1", t) - is_uncertain = is_uncertain or re.findall(UNCERTAIN_CHECK, t) - - # detect century forms - is_century = re.findall(CENTURY_RE, t) - - # detect CE/BCE year form - is_ce = re.findall(CE_RE, t) - if is_century: - result = f"{int(is_century[0][0]) - 1:02d}XX" - is_approximate = is_approximate or re.findall(APPROX_CENTURY_RE, t) - is_uncertain = is_uncertain or re.findall(UNCERTAIN_CENTURY_RE, t) - - try: - if is_century[0][-1] in ("bc", "bce"): - result = f"-{result}" - except IndexError: - pass - - elif is_ce: - result = f"{int(is_ce[0][0]):04d}" - is_approximate = is_approximate or re.findall(APPROX_CE_RE, t) - is_uncertain = is_uncertain or re.findall(UNCERTAIN_CE_RE, t) - - try: - if is_ce[0][-1] in ("bc", "bce"): - result = f"-{result}" - except IndexError: - pass - - else: - # try dateutil.parse - try: - # parse twice, using different defaults to see what was - # parsed and what was guessed. - dt1 = parse( - t, - dayfirst=appsettings.DAY_FIRST, - yearfirst=False, - fuzzy=True, # force a match, even if it's default date - default=DEFAULT_DATE_1, - ) - - dt2 = parse( - t, - dayfirst=appsettings.DAY_FIRST, - yearfirst=False, - fuzzy=True, # force a match, even if it's default date - default=DEFAULT_DATE_2, - ) - - except ParserError: - return None - except Exception: - return None - - if dt1.date() == DEFAULT_DATE_1.date() and dt2.date() == DEFAULT_DATE_2.date(): - # couldn't parse anything - defaults are untouched. - return None - - date1 = dt1.isoformat()[:10] - date2 = dt2.isoformat()[:10] - - # guess precision of 'unspecified' characters to use - mentions_year = re.findall(MENTIONS_YEAR, t) - mentions_month = re.findall(MENTIONS_MONTH, t) - mentions_day = re.findall(MENTIONS_DAY, t) - - for i, char in enumerate(date1): - # if the given year could be a century (e.g. '1800s') then use - # approximate/uncertain markers to decide whether we treat it as - # a century or a decade. - if i == 2 and could_be_century and not (is_approximate or is_uncertain): - result += "X" - elif i == 3 and is_decade: - if mentions_year: - result += "X" # year precision - else: - result += "X" # decade precision - elif char == date2[i]: - # since both attempts at parsing produced the same result - # it must be parsed value, not a default - result += char - else: - # different values were produced, meaning that it's likely - # a default. Use 'unspecified' - result += "X" - - # strip off unknown chars from end of string - except the first 4 - - for i in reversed(range(len(result))): - if result[i] not in ("X", "-"): - smallest_length = 4 - - if mentions_month: - smallest_length = 7 - if mentions_day: - smallest_length = 10 - - limit = max(smallest_length, i + 1) - result = result[:limit] - break - - # check for seasons - if "spring" in t: - result = result[:4] + "-21" + result[7:] - elif "summer" in t: - result = result[:4] + "-22" + result[7:] - elif "autumn" in t or "fall" in t: - result = result[:4] + "-23" + result[7:] - elif "winter" in t: - result = result[:4] + "-24" + result[7:] - - # end dateutil post-parsing - - if is_uncertain and is_approximate: - result += "%" - else: - if is_uncertain: - result += "?" - if is_approximate: - result += "~" - - # weed out bad parses - if result.startswith("XX-XX"): - return None - - return result diff --git a/edtf/parser/__init__.py b/edtf/parser/__init__.py deleted file mode 100644 index 9cbf3c3..0000000 --- a/edtf/parser/__init__.py +++ /dev/null @@ -1,52 +0,0 @@ -from .edtf_exceptions import EDTFParseException -from .grammar import is_valid_edtf, parse_edtf -from .parser_classes import ( - UA, - Consecutives, - Date, - DateAndTime, - EarlierConsecutives, - EDTFObject, - ExponentialYear, - Interval, - LaterConsecutives, - Level1Interval, - Level2Interval, - Level2Season, - LongYear, - MultipleDates, - OneOfASet, - PartialUncertainOrApproximate, - PartialUnspecified, - Season, - UncertainOrApproximate, - Unspecified, - UnspecifiedIntervalSection, -) - -__all__ = [ - "parse_edtf", - "is_valid_edtf", - "EDTFParseException", - "EDTFObject", - "Date", - "DateAndTime", - "Interval", - "UA", - "UncertainOrApproximate", - "Unspecified", - "UnspecifiedIntervalSection", - "Level1Interval", - "LongYear", - "Season", - "PartialUncertainOrApproximate", - "PartialUnspecified", - "Consecutives", - "EarlierConsecutives", - "LaterConsecutives", - "OneOfASet", - "MultipleDates", - "Level2Interval", - "Level2Season", - "ExponentialYear", -] diff --git a/edtf/parser/edtf_exceptions.py b/edtf/parser/edtf_exceptions.py deleted file mode 100644 index d906d58..0000000 --- a/edtf/parser/edtf_exceptions.py +++ /dev/null @@ -1,29 +0,0 @@ -from pyparsing import ParseException - - -class EDTFParseException(ParseException): - """Raised when an input cannot be parsed as an EDTF string. - - Attributes: - input_string - the input string that could not be parsed - err -- the original ParseException that caused this one - """ - - def __init__(self, input_string, err=None): - if input_string is None: - input_string = "" - self.input_string = input_string - if err is None: - err = ParseException(input_string, 0, "Invalid input or format.") - self.err = err - super().__init__(str(err), err.loc if err.loc else 0, self.input_string) - - def __str__(self): - if not self.input_string: - return "You must supply some input text" - near_text = ( - self.input_string[max(self.err.loc - 10, 0) : self.err.loc + 10] - if hasattr(self.err, "loc") - else "" - ) - return f"Error at position {self.err.loc}: Invalid input or format near '{near_text}'. Please provide a valid EDTF string." diff --git a/edtf/parser/grammar.py b/edtf/parser/grammar.py deleted file mode 100644 index 0624a92..0000000 --- a/edtf/parser/grammar.py +++ /dev/null @@ -1,376 +0,0 @@ -# ruff: noqa: E402 I001 - -# It's recommended to `enablePackrat()` immediately after importing pyparsing -# https://github.com/pyparsing/pyparsing/wiki/Performance-Tips - -import pyparsing -from edtf.appsettings import DEBUG_PYPARSING -from edtf.util import remapparams - -pyparsing.ParserElement.enable_packrat() -from pyparsing import ( - Combine, - NotAny, - OneOrMore, - Opt, - Optional, - ParseException, - Regex, - Word, - ZeroOrMore, - nums, - one_of, -) -from pyparsing import Literal as L - - -from edtf.parser.edtf_exceptions import EDTFParseException - -# (* ************************** Level 0 *************************** *) -from edtf.parser.parser_classes import ( - UA, - Consecutives, - Date, - DateAndTime, - EarlierConsecutives, - ExponentialYear, - Interval, - LaterConsecutives, - Level1Interval, - Level2Interval, - Level2Season, - LongYear, - MultipleDates, - OneOfASet, - PartialUncertainOrApproximate, - PartialUnspecified, - Season, - UncertainOrApproximate, - Unspecified, -) - -oneThru12 = one_of([f"{i:02}" for i in range(1, 13)]) -oneThru13 = one_of([f"{i:02}" for i in range(1, 14)]) -oneThru23 = one_of([f"{i:02}" for i in range(1, 24)]) -zeroThru23 = one_of([f"{i:02}" for i in range(0, 24)]) -oneThru29 = one_of([f"{i:02}" for i in range(1, 30)]) -oneThru30 = one_of([f"{i:02}" for i in range(1, 31)]) -oneThru31 = one_of([f"{i:02}" for i in range(1, 32)]) -oneThru59 = one_of([f"{i:02}" for i in range(1, 60)]) -zeroThru59 = one_of([f"{i:02}" for i in range(0, 60)]) - -digit = Word(nums, exact=1) -positiveDigit = Word(nums, exact=1, exclude_chars="0") -positiveInteger = Combine(positiveDigit + ZeroOrMore(digit)) - -second = zeroThru59 -minute = zeroThru59 -hour = zeroThru23 -day = oneThru31("day") - -month = oneThru12("month") -monthDay = ( - (one_of("01 03 05 07 08 10 12")("month") + "-" + oneThru31("day")) - ^ (one_of("04 06 09 11")("month") + "-" + oneThru30("day")) - ^ (L("02")("month") + "-" + oneThru29("day")) -) - -# Significant digits suffix -significantDigits = "S" + Word(nums)("significant_digits") - -# 4 digits, 0 to 9 -positiveYear = Word(nums, exact=4) - -# Negative version of positive year, but "-0000" is illegal -negativeYear = NotAny(L("-0000")) + ("-" + positiveYear) - -year = Combine(positiveYear ^ negativeYear)("year") + Optional(significantDigits) -# simple version for Consecutives -year_basic = Combine(positiveYear ^ negativeYear)("year") - -yearMonth = year + "-" + month -yearMonthDay = year + "-" + monthDay # o hai iso date - -date = Combine(year ^ yearMonth ^ yearMonthDay)("date") -Date.set_parser(date) - -zone_offsetHour = oneThru13 -zone_offset = L("Z") ^ ( - Regex("[+-]") - + (zone_offsetHour + Optional(":" + minute) ^ L("14:00") ^ ("00:" + oneThru59)) -) - -baseTime = Combine(hour + ":" + minute + ":" + second ^ "24:00:00") - -time = Combine(baseTime + Optional(zone_offset))("time") - -dateAndTime = date + "T" + time -DateAndTime.set_parser(dateAndTime) - -l0Interval = date("lower") + "/" + date("upper") -Interval.set_parser(l0Interval) - -level0Expression = date ^ dateAndTime ^ l0Interval - - -# (* ************************** Level 1 *************************** *) - -# (* ** Auxiliary Assignments for Level 1 ** *) -UASymbol = Combine(one_of("? ~ %")) -UA.set_parser(UASymbol) - -seasonNumber = one_of("21 22 23 24") - -# (* *** Season (unqualified) *** *) -season = year + "-" + seasonNumber("season") -Season.set_parser(season) - -dateOrSeason = date("") ^ season - -# (* *** Long Year - Simple Form *** *) - -longYearSimple = ( - "Y" - + Combine(Optional("-") + positiveDigit + digit + digit + digit + OneOrMore(digit))( - "year" - ) - + Optional(significantDigits) -) -LongYear.set_parser(longYearSimple) - -# (* *** L1Interval *** *) -uaDateOrSeason = dateOrSeason + Optional(UASymbol) - - -# bit of a kludge here to get the all the relevant tokens into the parse action -# cleanly otherwise the parameter names are overlapped. -def f(toks): - try: - return {"date": toks[0], "ua": toks[1]} - except IndexError: - return {"date": toks[0], "ua": None} - - -l1Start = ".." ^ uaDateOrSeason -l1Start.add_parse_action(f) -l1End = uaDateOrSeason ^ ".." -l1End.add_parse_action(f) - -level1Interval = Optional(l1Start)("lower") + "/" + l1End("upper") ^ l1Start( - "lower" -) + "/" + Optional(l1End("upper")) -Level1Interval.set_parser(level1Interval) - -# (* *** unspecified *** *) -yearWithOneOrTwoOrThreeUnspecifedDigits = Combine( - Optional("-") + digit + (digit ^ "X") + (digit ^ "X") + "X" -)("year") -monthUnspecified = year + "-" + L("XX")("month") -dayUnspecified = yearMonth + "-" + L("XX")("day") -dayAndMonthUnspecified = year + "-" + L("XX")("month") + "-" + L("XX")("day") - -unspecified = ( - yearWithOneOrTwoOrThreeUnspecifedDigits - ^ monthUnspecified - ^ dayUnspecified - ^ dayAndMonthUnspecified -) + Optional(UASymbol)("ua") -Unspecified.set_parser(unspecified) - -# (* *** uncertainOrApproxDate *** *) - -uncertainOrApproxDate = date("date") + UASymbol("ua") -UncertainOrApproximate.set_parser(uncertainOrApproxDate) - -level1Expression = ( - uncertainOrApproxDate ^ unspecified ^ level1Interval ^ longYearSimple ^ season -) - -# (* ************************** Level 2 *************************** *) - -# (* ** Internal Unspecified** *) - -digitOrX = Word(nums + "X", exact=1) - -# 2-digit day with at least one 'X' present -dayWithX = Combine(("X" + digitOrX) ^ (digitOrX + "X"))("day") - -# 2-digit month with at least one 'X' present -monthWithX = Combine(one_of("0X 1X") ^ ("X" + digitOrX))("month") - -# 4-digit year with at least one 'X' present -yearWithX = Combine( - ("X" + digitOrX + digitOrX + digitOrX) - ^ (digitOrX + "X" + digitOrX + digitOrX) - ^ (digitOrX + digitOrX + "X" + digitOrX) - ^ (digitOrX + digitOrX + digitOrX + "X") -)("year") - -yearMonthWithX = (Combine(year("") ^ yearWithX(""))("year") + "-" + monthWithX) ^ ( - yearWithX + "-" + month -) - -monthDayWithX = (Combine(month("") ^ monthWithX(""))("month") + "-" + dayWithX) ^ ( - monthWithX + "-" + day -) - -yearMonthDayWithX = ( - ( - yearWithX - + "-" - + Combine(month("") ^ monthWithX(""))("month") - + "-" - + Combine(day("") ^ dayWithX(""))("day") - ) - ^ (year + "-" + monthWithX + "-" + Combine(day("") ^ dayWithX(""))("day")) - ^ (year + "-" + month + "-" + dayWithX) -) - -partialUnspecified = yearWithX ^ yearMonthWithX ^ yearMonthDayWithX -PartialUnspecified.set_parser(partialUnspecified) - -# (* ** Internal Uncertain or Approximate** *) - -# group qualification -# qualifier right of a component(date, month, day) applies to all components to the left -group_qual = yearMonth + UASymbol("year_month_ua") + "-" + day ^ year + UASymbol( - "year_ua" -) + "-" + month + Opt("-" + day) - -# component qualification -# qualifier immediate left of a component (date, month, day) applies to that component only -qual_year = year ^ UASymbol("year_ua_b") + year ^ year + UASymbol("year_ua") -qual_month = month ^ UASymbol("month_ua") + month -qual_day = day ^ UASymbol("day_ua") + day - -indi_qual = ( - UASymbol("year_ua_b") + year + Opt("-" + qual_month + Opt("-" + qual_day)) - ^ qual_year + "-" + UASymbol("month_ua") + month + Opt("-" + qual_day) - ^ qual_year + "-" + qual_month + "-" + UASymbol("day_ua") + day -) - -partialUncertainOrApproximate = group_qual ^ indi_qual -PartialUncertainOrApproximate.set_parser(partialUncertainOrApproximate) - -dateWithInternalUncertainty = partialUncertainOrApproximate ^ partialUnspecified - -qualifyingString = Regex(r"\S") # any nonwhitespace char - -# (* ** SeasonQualified ** *) -seasonQualifier = qualifyingString -seasonQualified = season + "^" + seasonQualifier - -# (* ** Long Year - Scientific Form ** *) -longYearScientific = ( - "Y" - + Combine(Optional("-") + positiveInteger)("base") - + "E" - + positiveInteger("exponent") - + Optional(significantDigits) -) -ExponentialYear.set_parser(longYearScientific) - -# (* ** level2Interval ** *) -level2Interval = ( - (dateOrSeason("lower") + "/" + dateWithInternalUncertainty("upper")) - ^ (dateWithInternalUncertainty("lower") + "/" + dateOrSeason("upper")) - ^ ( - dateWithInternalUncertainty("lower") - + "/" - + dateWithInternalUncertainty("upper") - ) -) -Level2Interval.set_parser(level2Interval) - -# (* ** Inclusive list and choice list** *) -consecutives = ( - (yearMonthDay("lower") + ".." + yearMonthDay("upper")) - ^ (yearMonth("lower") + ".." + yearMonth("upper")) - ^ ( - year_basic("lower") + ".." + year_basic("upper") - ) # using year_basic because some tests were throwing `'list' object has no attribute 'expandtabs'` - somewhere, pyparsing.parse_string() was being passed a list -) -Consecutives.set_parser(consecutives) - -listElement = ( - date - ^ dateWithInternalUncertainty - ^ uncertainOrApproxDate - ^ unspecified - ^ consecutives -) - -earlier = L("..").add_parse_action(f)("lower") + date("upper").add_parse_action(f) -later = date("lower").add_parse_action(f) + L("..").add_parse_action(f)("upper") - -EarlierConsecutives.set_parser(earlier) -LaterConsecutives.set_parser(later) - - -listContent = ( - (earlier + ZeroOrMore("," + listElement)) - ^ (Optional(earlier + ",") + ZeroOrMore(listElement + ",") + later) - ^ (listElement + OneOrMore("," + listElement)) - ^ consecutives -) - -choiceList = "[" + listContent + "]" -OneOfASet.set_parser(choiceList) - -inclusiveList = "{" + listContent + "}" -MultipleDates.set_parser(inclusiveList) - - -# (* *** L2 Season *** *) -seasonL2Number = one_of( - "21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41" -) -l2season = year + "-" + seasonL2Number("season") -Level2Season.set_parser(l2season) - -level2Expression = ( - partialUncertainOrApproximate - ^ partialUnspecified - ^ choiceList - ^ inclusiveList - ^ level2Interval - ^ longYearScientific - ^ l2season - ^ seasonQualified -) - -# putting it all together -edtfParser = ( - level0Expression("level0") ^ level1Expression("level1") ^ level2Expression("level2") -) - - -@remapparams(parseAll="parse_all") -def parse_edtf( - input_string: str, - parse_all: bool = True, - fail_silently: bool = False, - debug: bool | None = None, -): - if debug is None: - debug = DEBUG_PYPARSING - - if not input_string: - raise EDTFParseException(input_string) - - try: - p = edtfParser.parse_string(input_string.strip(), parse_all) - if p: - return p[0] - return None - except ParseException as err: - if fail_silently: - return None - if debug: - raise - raise EDTFParseException(input_string, err) from None - - -def is_valid_edtf(input_string: str) -> bool: - """Returns True if the input string was successfully parsed; False if it isn't.""" - return parse_edtf(input_string, fail_silently=True) is not None diff --git a/edtf/parser/parser_classes.py b/edtf/parser/parser_classes.py deleted file mode 100644 index 67dd8ee..0000000 --- a/edtf/parser/parser_classes.py +++ /dev/null @@ -1,1149 +0,0 @@ -import calendar -import math -from collections.abc import Callable -from datetime import date, datetime -from operator import add, sub -from time import struct_time -from typing import Optional - -from dateutil.relativedelta import relativedelta - -from edtf import appsettings -from edtf.convert import ( - TIME_EMPTY_EXTRAS, - TIME_EMPTY_TIME, - dt_to_struct_time, - trim_struct_time, -) - -EARLIEST = "earliest" -LATEST = "latest" - -PRECISION_MILLENIUM = "millenium" -PRECISION_CENTURY = "century" -PRECISION_DECADE = "decade" -PRECISION_YEAR = "year" -PRECISION_MONTH = "month" -PRECISION_SEASON = "season" -PRECISION_DAY = "day" - - -def days_in_month(year: int, month: int) -> int: - """ - Return the number of days in the given year and month, where month is - 1=January to 12=December, and respecting leap years as identified by - `calendar.isleap()` - """ - return { - 1: 31, - 2: 29 if calendar.isleap(year) else 28, - 3: 31, - 4: 30, - 5: 31, - 6: 30, - 7: 31, - 8: 31, - 9: 30, - 10: 31, - 11: 30, - 12: 31, - }[month] - - -def apply_delta(op: Callable, time_struct: struct_time, delta) -> struct_time: - """ - Apply a `relativedelta` to a `struct_time` data structure. - - `op` is an operator function, probably always `add` or `sub`tract to - correspond to `a_date + a_delta` and `a_date - a_delta`. - - This function is required because we cannot use standard `datetime` module - objects for conversion when the date/time is, or will become, outside the - boundary years 1 AD to 9999 AD. - """ - if not delta: - return time_struct # No work to do - - try: - dt_result = op(datetime(*time_struct[:6]), delta) - return dt_to_struct_time(dt_result) - except (OverflowError, ValueError): - # Year is not within supported 1 to 9999 AD range - pass - - # Here we fake the year to one in the acceptable range to avoid having to - # write our own date rolling logic - - # Adjust the year to be close to the 2000 millenium in 1,000 year - # increments to try and retain accurate relative leap years - actual_year: int = time_struct.tm_year - millenium: int = int(float(actual_year) / 1000) - millenium_diff: int = (2 - millenium) * 1000 - adjusted_year = actual_year + millenium_diff - # Apply delta to the date/time with adjusted year - dt = datetime(*(adjusted_year,) + time_struct[1:6]) - dt_result = op(dt, delta) - # Convert result year back to its original millenium - final_year = dt_result.year - millenium_diff - return struct_time( - (final_year,) + dt_result.timetuple()[1:6] + tuple(TIME_EMPTY_EXTRAS) - ) - - -class EDTFObject: - """ - Object to attach to a parser to become instantiated when the parser - completes. - """ - - parser = None - _is_approximate: bool - _is_uncertain: bool - _uncertain_and_approximate: bool - - @classmethod - def set_parser(cls, p): - cls.parser = p - p.add_parse_action(cls.parse_action) - - @classmethod - def parse_action(cls, toks): - kwargs = toks.asDict() - try: - return cls(**kwargs) # replace the token list with the class - except Exception as e: - print(f"trying to {cls.__name__}.__init__(**{kwargs})") - raise e - - @classmethod - def parse(cls, s): - return cls.parser.parse_string(s)[0] - - def __repr__(self) -> str: - return f"{type(self).__name__}: '{str(self)}'" - - def __init__(self, *args, **kwargs) -> None: - message: str = f"{type(self).__name__}.__init__(*{args}, **{kwargs})" - raise NotImplementedError(f"{message} is not implemented.") - - def __str__(self) -> str: - raise NotImplementedError - - def _strict_date(self, lean: str = EARLIEST): - raise NotImplementedError - - def lower_strict(self) -> struct_time: - return self._strict_date(lean=EARLIEST) - - def upper_strict(self) -> struct_time: - return self._strict_date(lean=LATEST) - - def _get_fuzzy_padding(self, lean: str) -> relativedelta: - """ - Subclasses should override this to pad based on how precise they are. - """ - return relativedelta(None) - - def get_is_approximate(self) -> bool: - return getattr(self, "_is_approximate", False) - - def set_is_approximate(self, val: bool) -> None: - self._is_approximate = val - - is_approximate = property(get_is_approximate, set_is_approximate) # noqa - - def get_is_uncertain(self) -> bool: - return getattr(self, "_is_uncertain", False) - - def set_is_uncertain(self, val: bool) -> None: - self._is_uncertain = val - - is_uncertain = property(get_is_uncertain, set_is_uncertain) # noqa - - def get_is_uncertain_and_approximate(self) -> bool: - return getattr(self, "_uncertain_and_approximate", False) - - def set_is_uncertain_and_approximate(self, val: bool) -> None: - self._uncertain_and_approximate = val - - is_uncertain_and_approximate = property( - get_is_uncertain_and_approximate, # noqa - set_is_uncertain_and_approximate, # noqa - ) - - def lower_fuzzy(self) -> struct_time: - strict_val = self.lower_strict() - return apply_delta(sub, strict_val, self._get_fuzzy_padding(EARLIEST)) - - def upper_fuzzy(self) -> struct_time: - strict_val = self.upper_strict() - return apply_delta(add, strict_val, self._get_fuzzy_padding(LATEST)) - - def __eq__(self, other) -> bool: - if isinstance(other, EDTFObject): - return str(self) == str(other) - elif isinstance(other, date): - return str(self) == other.isoformat() - elif isinstance(other, struct_time): - return self._strict_date() == trim_struct_time(other) - return False - - def __ne__(self, other) -> bool: - if isinstance(other, EDTFObject): - return str(self) != str(other) - elif isinstance(other, date): - return str(self) != other.isoformat() - elif isinstance(other, struct_time): - return self._strict_date() != trim_struct_time(other) - return True - - def __gt__(self, other) -> bool: - if isinstance(other, EDTFObject): - return self.lower_strict() > other.lower_strict() - elif isinstance(other, date): - return self.lower_strict() > dt_to_struct_time(other) - elif isinstance(other, struct_time): - return self.lower_strict() > trim_struct_time(other) - raise TypeError( - f"can't compare {type(self).__name__} with {type(other).__name__}" - ) - - def __ge__(self, other) -> bool: - if isinstance(other, EDTFObject): - return self.lower_strict() >= other.lower_strict() - elif isinstance(other, date): - return self.lower_strict() >= dt_to_struct_time(other) - elif isinstance(other, struct_time): - return self.lower_strict() >= trim_struct_time(other) - raise TypeError( - f"can't compare {type(self).__name__} with {type(other).__name__}" - ) - - def __lt__(self, other) -> bool: - if isinstance(other, EDTFObject): - return self.lower_strict() < other.lower_strict() - elif isinstance(other, date): - return self.lower_strict() < dt_to_struct_time(other) - elif isinstance(other, struct_time): - return self.lower_strict() < trim_struct_time(other) - raise TypeError( - f"can't compare {type(self).__name__} with {type(other).__name__}" - ) - - def __le__(self, other) -> bool: - if isinstance(other, EDTFObject): - return self.lower_strict() <= other.lower_strict() - elif isinstance(other, date): - return self.lower_strict() <= dt_to_struct_time(other) - elif isinstance(other, struct_time): - return self.lower_strict() <= trim_struct_time(other) - raise TypeError( - f"can't compare {type(self).__name__} with {type(other).__name__}" - ) - - -# (* ************************** Level 0 *************************** *) - - -class Date(EDTFObject): - def __init__( # noqa - self, - year: str | None = None, - month: str | None = None, - day: str | None = None, - significant_digits=None, - **kwargs, - ): - for param in ("date", "lower", "upper"): - if param in kwargs: - self.__init__(**kwargs[param]) - return - - self._year: str | None = ( - year # Year is required, but sometimes passed in as a 'date' dict. - ) - self._month: str | None = month - self._day: str | None = day - self.significant_digits: int | None = ( - int(significant_digits) if significant_digits else None - ) - - def set_year(self, y: str | None): - if y is None: - raise AttributeError("Year must not be None") - self._year = y - - def get_year(self) -> str | None: - return self._year - - year = property(get_year, set_year) # noqa - - def set_month(self, m: str | None): - self._month = m - if m is None: - self._day = None - - def get_month(self) -> str | None: - return self._month - - month = property(get_month, set_month) # noqa - - def set_day(self, d: str | None): - self._day = d - if d is None: - self._day = None - - def get_day(self) -> str | None: - return self._day - - day = property(get_day, set_day) # noqa - - def __str__(self) -> str: - r = f"{self._year}" - if self._month is not None: - r += f"-{self._month}" - if self._day is not None: - r += f"-{self._day}" - if self.significant_digits: - r += f"S{self.significant_digits}" - return r - - def isoformat(self, default=date.max) -> str: - return f"{self._year}-{int(self._month or default.month):02d}-{int(self._day or default.day):02d}" - - def lower_fuzzy(self) -> struct_time: - if not hasattr(self, "significant_digits") or not self.significant_digits: - return apply_delta( - sub, self.lower_strict(), self._get_fuzzy_padding(EARLIEST) - ) - - total_digits: int = len(self._year) if self._year else 0 - i_year: int = int(self._year) if self._year else 0 - insignificant_digits: int = total_digits - self.significant_digits - lower_year: int = ( - i_year // (10**insignificant_digits) * (10**insignificant_digits) - ) - return struct_time([lower_year, 1, 1] + TIME_EMPTY_TIME + TIME_EMPTY_EXTRAS) - - def upper_fuzzy(self) -> struct_time: - if not hasattr(self, "significant_digits") or not self.significant_digits: - return apply_delta( - add, self.upper_strict(), self._get_fuzzy_padding(LATEST) - ) - - total_digits: int = len(self._year) if self._year else 0 - i_year: int = int(self._year) if self._year else 0 - insignificant_digits: int = total_digits - self.significant_digits - upper_year: int = (i_year // (10**insignificant_digits) + 1) * ( - 10**insignificant_digits - ) - 1 - return struct_time([upper_year, 12, 31] + TIME_EMPTY_TIME + TIME_EMPTY_EXTRAS) - - def _precise_year(self, lean: str) -> int: - # Replace any ambiguous characters in the year string with 0s or 9s - if not self._year: - return 0 - - if lean == EARLIEST: - rep = self._year.replace("X", "0") - else: - rep = self._year.replace("X", "9") - - return int(rep) - - def _precise_month(self, lean: str) -> int: - if self._month and self._month != "XX": - try: - return int(self._month) - except ValueError as err: - raise ValueError( - f"Couldn't convert {self._month} to int (in {self})" - ) from err - return 1 if lean == EARLIEST else 12 - - def _precise_day(self, lean: str) -> int: - if not self._day or self._day == "XX": - if lean == EARLIEST: - return 1 - else: - return days_in_month( - self._precise_year(LATEST), self._precise_month(LATEST) - ) - return int(self._day) - - def _strict_date(self, lean: str = EARLIEST) -> struct_time: - """ - Return a `time.struct_time` representation of the date. - """ - return struct_time( - ( - self._precise_year(lean), - self._precise_month(lean), - self._precise_day(lean), - ) - + tuple(TIME_EMPTY_TIME) - + tuple(TIME_EMPTY_EXTRAS) - ) - - @property - def precision(self) -> str: - if self._day: - return PRECISION_DAY - if self._month: - return PRECISION_MONTH - return PRECISION_YEAR - - def estimated(self) -> int: - return self._precise_year(EARLIEST) - - -class DateAndTime(EDTFObject): - def __init__(self, date: Date, time): # noqa: super raises not implemented - self.date: Date = date - self.time = time - - def __str__(self) -> str: - return self.isoformat() - - def isoformat(self) -> str: - return self.date.isoformat() + "T" + self.time - - def _strict_date(self, lean: str = EARLIEST) -> struct_time: - return self.date._strict_date(lean) - - def __eq__(self, other) -> bool: - if isinstance(other, datetime): - return self.isoformat() == other.isoformat() - elif isinstance(other, struct_time): - return self._strict_date() == trim_struct_time(other) - return super().__eq__(other) - - def __ne__(self, other) -> bool: - if isinstance(other, datetime): - return self.isoformat() != other.isoformat() - elif isinstance(other, struct_time): - return self._strict_date() != trim_struct_time(other) - return super().__ne__(other) - - -class Interval(EDTFObject): - def __init__(self, lower, upper): # noqa: super() raises not implemented - self.lower = lower - self.upper = upper - - def __str__(self): - return f"{self.lower}/{self.upper}" - - def _strict_date(self, lean: str = EARLIEST) -> struct_time: - if lean == EARLIEST: - return self.lower._strict_date(lean) - return self.upper._strict_date(lean) - - @property - def precision(self) -> int | None: - if self.lower.precision == self.upper.precision: - return self.lower.precision - return None - - -# (* ************************** Level 1 *************************** *) - - -class UA(EDTFObject): - @classmethod - def parse_action(cls, toks): - args = toks.asList() - return cls(*args) - - def __init__(self, *args) -> None: # noqa: super() raises not implemented - if len(args) != 1: - raise AssertionError("UA must have exactly one argument") - ua = args[0] - - self.is_uncertain: bool = "?" in ua - self.is_approximate: bool = "~" in ua - self.is_uncertain_and_approximate: bool = "%" in ua - - def __str__(self) -> str: - if self.is_uncertain: - return "?" - elif self.is_approximate: - return "~" - elif self.is_uncertain_and_approximate: - return "%" - return "" - - def _get_multiplier(self) -> float | None: - if self.is_uncertain_and_approximate: - return appsettings.MULTIPLIER_IF_BOTH - elif self.is_uncertain: - return appsettings.MULTIPLIER_IF_UNCERTAIN - elif self.is_approximate: - return appsettings.MULTIPLIER_IF_APPROXIMATE - return None - - -class UncertainOrApproximate(EDTFObject): - def __init__(self, date, ua): # noqa: super() raises not implemented - self.date = date - self.ua = ua - self.is_uncertain = ua.is_uncertain if ua else False - self.is_approximate = ua.is_approximate if ua else False - self.is_uncertain_and_approximate = ( - ua.is_uncertain_and_approximate if ua else False - ) - - def __str__(self) -> str: - if self.ua: - return f"{self.date}{self.ua}" - return str(self.date) - - def _strict_date(self, lean: str = EARLIEST) -> tuple: - return self.date._strict_date(lean) - - def _get_fuzzy_padding(self, lean): - if not self.ua: - return relativedelta() - multiplier = self.ua._get_multiplier() - padding = relativedelta() - - # Check the presence of uncertainty on each component - # self.precision not helpful here: - # L1 qualified EDTF dates apply qualification across all parts of the date - if self.date.year: - padding += relativedelta( - years=int(multiplier * appsettings.PADDING_YEAR_PRECISION.years) - ) - if self.date.month: - padding += relativedelta( - months=int(multiplier * appsettings.PADDING_MONTH_PRECISION.months) - ) - if self.date.day: - padding += relativedelta( - days=int(multiplier * appsettings.PADDING_DAY_PRECISION.days) - ) - - return padding - - -class UnspecifiedIntervalSection(EDTFObject): - def __init__(self, sectionOpen=False, other_section_element=None): # noqa: super() raises not implemented - if sectionOpen: - self.is_open = True - self.is_unknown = False - else: - self.is_open = False - self.is_unknown = True - self.other = other_section_element - - def __str__(self): - if self.is_unknown: - return "" - return ".." - - def _strict_date(self, lean: str = EARLIEST) -> float | None: - if lean not in (EARLIEST, LATEST): - raise ValueError("lean must be one of EARLIEST or LATEST") - - if lean == EARLIEST: - if self.is_unknown: - upper = self.other._strict_date(LATEST) - return apply_delta(sub, upper, appsettings.DELTA_IF_UNKNOWN) - else: - return -math.inf - elif lean == LATEST: - if self.is_unknown: - lower = self.other._strict_date(EARLIEST) - return apply_delta(add, lower, appsettings.DELTA_IF_UNKNOWN) - else: - return math.inf - return None - - @property - def precision(self): - return self.other.date.precision or PRECISION_YEAR - - -class Unspecified(Date): - def __init__( - self, - year=None, - month=None, - day=None, - significant_digits=None, - ua=None, - **kwargs, - ): - super().__init__( - year=year, - month=month, - day=day, - significant_digits=significant_digits, - **kwargs, - ) - self.ua = ua - self.is_uncertain = ua.is_uncertain if ua else False - self.is_approximate = ua.is_approximate if ua else False - self.is_uncertain_and_approximate = ( - ua.is_uncertain_and_approximate if ua else False - ) - self.negative = self.year.startswith("-") - - def __str__(self): - base = super().__str__() - if self.ua: - base += str(self.ua) - return base - - def _get_fuzzy_padding(self, lean): - if not self.ua: - return relativedelta() - multiplier = self.ua._get_multiplier() - padding = relativedelta() - - if self.year: - years_padding = self._years_padding(multiplier) - padding += years_padding - if self.month: - padding += relativedelta( - months=int(multiplier * appsettings.PADDING_MONTH_PRECISION.months) - ) - if self.day: - padding += relativedelta( - days=int(multiplier * appsettings.PADDING_DAY_PRECISION.days) - ) - return padding - - def _years_padding(self, multiplier): - """Calculate year padding based on the precision.""" - precision_settings = { - PRECISION_MILLENIUM: appsettings.PADDING_MILLENNIUM_PRECISION.years, - PRECISION_CENTURY: appsettings.PADDING_CENTURY_PRECISION.years, - PRECISION_DECADE: appsettings.PADDING_DECADE_PRECISION.years, - PRECISION_YEAR: appsettings.PADDING_YEAR_PRECISION.years, - } - years = precision_settings.get(self.precision, 0) - return relativedelta(years=int(multiplier * years)) - - def lower_fuzzy(self): - strict_val = ( - self.lower_strict() - ) # negative handled in the lower_strict() override - adjusted = apply_delta(sub, strict_val, self._get_fuzzy_padding(EARLIEST)) - return adjusted - - def upper_fuzzy(self): - strict_val = ( - self.upper_strict() - ) # negative handled in the upper_strict() override - - adjusted = apply_delta(add, strict_val, self._get_fuzzy_padding(LATEST)) - return adjusted - - def lower_strict(self): - if self.negative: - strict_val = self._strict_date( - lean=LATEST - ) # gets the year right, but need to adjust day and month - if self.precision in ( - PRECISION_YEAR, - PRECISION_DECADE, - PRECISION_CENTURY, - PRECISION_MILLENIUM, - ): - return struct_time( - (strict_val.tm_year, 1, 1) - + tuple(TIME_EMPTY_TIME) - + tuple(TIME_EMPTY_EXTRAS) - ) - elif self.precision == PRECISION_MONTH: - return struct_time( - (strict_val.tm_year, strict_val.tm_mon, 1) - + tuple(TIME_EMPTY_TIME) - + tuple(TIME_EMPTY_EXTRAS) - ) - else: - return strict_val - - return self._strict_date(lean=EARLIEST) - - def upper_strict(self) -> struct_time: - if self.negative: - strict_val = self._strict_date(lean=EARLIEST) - if self.precision in ( - PRECISION_YEAR, - PRECISION_DECADE, - PRECISION_CENTURY, - PRECISION_MILLENIUM, - ): - return struct_time( - (strict_val.tm_year, 12, 31) - + tuple(TIME_EMPTY_TIME) - + tuple(TIME_EMPTY_EXTRAS) - ) - elif self.precision == PRECISION_MONTH: - days_in_month = calendar.monthrange( - strict_val.tm_year, strict_val.tm_mon - )[1] - return struct_time( - (strict_val.tm_year, strict_val.tm_mon, days_in_month) - + tuple(TIME_EMPTY_TIME) - + tuple(TIME_EMPTY_EXTRAS) - ) - else: - return strict_val - return self._strict_date(lean=LATEST) - - @property - def precision(self): - if self.day: - return PRECISION_DAY - if self.month: - return PRECISION_MONTH - if self.year: - year_no_symbol = self.year.lstrip("-") - if year_no_symbol.isdigit(): - return PRECISION_YEAR - if len(year_no_symbol) == 4 and year_no_symbol.endswith("XXX"): - return PRECISION_MILLENIUM - if len(year_no_symbol) == 4 and year_no_symbol.endswith("XX"): - return PRECISION_CENTURY - if len(year_no_symbol) == 4 and year_no_symbol.endswith("X"): - return PRECISION_DECADE - raise ValueError(f"Unspecified date {self} has no precision") - - -class Level1Interval(Interval): - def __init__(self, lower: Optional[dict] = None, upper: Optional[dict] = None): # noqa - if lower: - if lower["date"] == "..": - self.lower = UnspecifiedIntervalSection( - True, UncertainOrApproximate(**upper) - ) - else: - self.lower = UncertainOrApproximate(**lower) - else: - self.lower = UnspecifiedIntervalSection( - False, UncertainOrApproximate(**upper) - ) - if upper: - if upper["date"] == "..": - self.upper = UnspecifiedIntervalSection( - True, UncertainOrApproximate(**lower) - ) - else: - self.upper = UncertainOrApproximate(**upper) - else: - self.upper = UnspecifiedIntervalSection( - False, UncertainOrApproximate(**lower) - ) - self.is_approximate: bool = ( - self.lower.is_approximate or self.upper.is_approximate - ) - self.is_uncertain: bool = self.lower.is_uncertain or self.upper.is_uncertain - self.is_uncertain_and_approximate = ( - self.lower.is_uncertain_and_approximate - or self.upper.is_uncertain_and_approximate - ) - - def _get_fuzzy_padding(self, lean) -> relativedelta | None: - if lean == EARLIEST: - return self.lower._get_fuzzy_padding(lean) - elif lean == LATEST: - return self.upper._get_fuzzy_padding(lean) - return None - - -class LongYear(EDTFObject): - def __init__(self, year: str, significant_digits: str | None = None): # noqa - self.year: str = year - self.significant_digits: int | None = ( - int(significant_digits) if significant_digits else None - ) - - def __str__(self) -> str: - if self.significant_digits: - return f"Y{self.year}S{self.significant_digits}" - return f"Y{self.year}" - - def _precise_year(self) -> int: - return int(self.year) - - def _strict_date(self, lean: str = EARLIEST) -> struct_time: - py = self._precise_year() - if lean == EARLIEST: - return struct_time([py, 1, 1] + TIME_EMPTY_TIME + TIME_EMPTY_EXTRAS) - return struct_time([py, 12, 31] + TIME_EMPTY_TIME + TIME_EMPTY_EXTRAS) - - def estimated(self) -> int: - return self._precise_year() - - def lower_fuzzy(self) -> struct_time: - full_year = self._precise_year() - strict_val = self.lower_strict() - if not self.significant_digits: - return apply_delta(sub, strict_val, self._get_fuzzy_padding(EARLIEST)) - - insignificant_digits = len(str(full_year)) - int(self.significant_digits) - if insignificant_digits <= 0: - return apply_delta(sub, strict_val, self._get_fuzzy_padding(EARLIEST)) - - padding_value = 10**insignificant_digits - sig_digits = full_year // padding_value - lower_year = sig_digits * padding_value - return apply_delta( - sub, - struct_time([lower_year, 1, 1] + TIME_EMPTY_TIME + TIME_EMPTY_EXTRAS), - self._get_fuzzy_padding(EARLIEST), - ) - - def upper_fuzzy(self) -> struct_time: - full_year = self._precise_year() - strict_val = self.upper_strict() - if not self.significant_digits: - return apply_delta(add, strict_val, self._get_fuzzy_padding(LATEST)) - else: - insignificant_digits = len(str(full_year)) - self.significant_digits - if insignificant_digits <= 0: - return apply_delta(add, strict_val, self._get_fuzzy_padding(LATEST)) - padding_value = 10**insignificant_digits - sig_digits = full_year // padding_value - upper_year = (sig_digits + 1) * padding_value - 1 - return apply_delta( - add, - struct_time([upper_year, 12, 31] + TIME_EMPTY_TIME + TIME_EMPTY_EXTRAS), - self._get_fuzzy_padding(LATEST), - ) - - -class Season(Date): - def __init__(self, year, season, **kwargs): # noqa - self.year = year - self.season = season # use season to look up month - # day isn't part of the 'season' spec, but it helps the inherited - # `Date` methods do their thing. - self.day = None - - def __str__(self) -> str: - return f"{self.year}-{self.season}" - - def _precise_month(self, lean: str) -> int: - rng = appsettings.SEASON_L2_MONTHS_RANGE[int(self.season)] - if lean == EARLIEST: - return rng[0] - - return rng[1] - - -# (* ************************** Level 2 *************************** *) - - -class PartialUncertainOrApproximate(Date): - def __init__( # noqa - self, - year=None, - month=None, - day=None, - year_ua: UA | None = None, - month_ua: UA | None = None, - day_ua: UA | None = None, - year_month_ua: UA | None = None, - month_day_ua: UA | None = None, - ssn=None, - season_ua: UA | None = None, - all_ua: UA | None = None, - year_ua_b: UA | None = None, - ): - self.year = year - self.month = month - self.day = day - - self.year_ua = year_ua - self.year_ua_b = year_ua_b - self.month_ua = month_ua - self.day_ua = day_ua - - self.year_month_ua = year_month_ua - self.month_day_ua = month_day_ua - - self.season = ssn - self.season_ua = season_ua - - self.all_ua = all_ua - - uas = [ - year_ua, - year_ua_b, - month_ua, - day_ua, - year_month_ua, - month_day_ua, - season_ua, - all_ua, - ] - self.is_uncertain: bool = any( - item.is_uncertain for item in uas if hasattr(item, "is_uncertain") - ) - self.is_approximate: bool = any( - item.is_approximate for item in uas if hasattr(item, "is_approximate") - ) - self.is_uncertain_and_approximate: bool = any( - item.is_uncertain_and_approximate - for item in uas - if hasattr(item, "is_uncertain_and_approximate") - ) - - def __str__(self) -> str: - if self.season_ua: - return f"{self.season}{self.season_ua}" - - if self.year_ua: - y = f"{self.year}{self.year_ua}" - else: - y = f"{self.year_ua_b}{self.year}" if self.year_ua_b else str(self.year) - - if self.month: - m = f"{self.month_ua}{self.month}" if self.month_ua else str(self.month) - else: - m = None - - if self.day: - d = f"{self.day_ua}{self.day}" if self.day_ua else str(self.day) - else: - d = None - - if self.year_month_ua: # year/month approximate. No brackets needed. - ym = f"{y}-{m}{self.year_month_ua}" - result = f"{ym}-{d}" if d else ym - elif self.month_day_ua: - if self.year_ua: # we don't need the brackets round month and day - result = f"{y}-{m}-{d}{self.month_day_ua}" - else: - result = f"{y}-({m}-{d}){self.month_day_ua}" - else: - if d: - result = f"{y}-{m}-{d}" - elif m: - result = f"{y}-{m}" - else: - result = y - - if self.all_ua: - result = f"({result}){self.all_ua}" - - return result - - def set_year(self, y): # Year can be None. - self._year = y - - year = property(Date.get_year, set_year) # noqa - - def _precise_year(self, lean: str) -> int: - if self.season: - return self.season._precise_year(lean) - return super()._precise_year(lean) - - def _precise_month(self, lean: str) -> int: - if self.season: - return self.season._precise_month(lean) - return super()._precise_month(lean) - - def _precise_day(self, lean: str) -> int: - if self.season: - return self.season._precise_day(lean) - return super()._precise_day(lean) - - def _get_fuzzy_padding(self, lean: str) -> struct_time: - """ - This is not a perfect interpretation as fuzziness is introduced for - redundant uncertainly modifiers e.g. (2006~)~ will get two sets of - fuzziness. - """ - result = relativedelta(None) - - if self.year_ua: - result += ( - appsettings.PADDING_YEAR_PRECISION * self.year_ua._get_multiplier() - ) - if self.year_ua_b: - result += ( - appsettings.PADDING_YEAR_PRECISION * self.year_ua_b._get_multiplier() - ) - if self.month_ua: - result += ( - appsettings.PADDING_MONTH_PRECISION * self.month_ua._get_multiplier() - ) - if self.day_ua: - result += appsettings.PADDING_DAY_PRECISION * self.day_ua._get_multiplier() - - if self.year_month_ua: - result += ( - appsettings.PADDING_YEAR_PRECISION - * self.year_month_ua._get_multiplier() - ) - result += ( - appsettings.PADDING_MONTH_PRECISION - * self.year_month_ua._get_multiplier() - ) - if self.month_day_ua: - result += ( - appsettings.PADDING_DAY_PRECISION * self.month_day_ua._get_multiplier() - ) - result += ( - appsettings.PADDING_MONTH_PRECISION - * self.month_day_ua._get_multiplier() - ) - - if self.season_ua: - result += ( - appsettings.PADDING_SEASON_PRECISION * self.season_ua._get_multiplier() - ) - - if self.all_ua: - multiplier = self.all_ua._get_multiplier() - - if self.precision == PRECISION_DAY: - result += multiplier * appsettings.PADDING_DAY_PRECISION - result += multiplier * appsettings.PADDING_MONTH_PRECISION - result += multiplier * appsettings.PADDING_YEAR_PRECISION - elif self.precision == PRECISION_MONTH: - result += multiplier * appsettings.PADDING_MONTH_PRECISION - result += multiplier * appsettings.PADDING_YEAR_PRECISION - elif self.precision == PRECISION_YEAR: - result += multiplier * appsettings.PADDING_YEAR_PRECISION - - return result - - -class PartialUnspecified(Unspecified): - pass - - -class Consecutives(Interval): - # Treating Consecutive ranges as intervals where one bound is optional - def __init__(self, lower=None, upper=None): # noqa - if lower and not isinstance(lower, EDTFObject): - self.lower = Date.parse(lower) - else: - self.lower = lower - - if upper and not isinstance(upper, EDTFObject): - self.upper = Date.parse(upper) - else: - self.upper = upper - - def __str__(self) -> str: - return f"{self.lower or ''}..{self.upper or ''}" - - -class EarlierConsecutives(Level1Interval): - def __str__(self) -> str: - return f"{self.lower}{self.upper}" - - -class LaterConsecutives(Level1Interval): - def __str__(self) -> str: - return f"{self.lower}{self.upper}" - - -class OneOfASet(EDTFObject): - def __init__(self, *args): # noqa - self.objects = args - - @classmethod - def parse_action(cls, toks): - args = [t for t in toks.asList() if isinstance(t, EDTFObject)] - return cls(*args) - - def __str__(self) -> str: - out: str = ", ".join([str(o) for o in self.objects]) - return f"[{out}]" - - def _strict_date(self, lean: str = EARLIEST) -> float: - strict_dates = [x._strict_date(lean) for x in self.objects] - # Accounting for possible 'inf' and '-inf' values - if lean == LATEST: - if any(isinstance(d, float) and d == float("inf") for d in strict_dates): - return float("inf") - else: - return max( - (d for d in strict_dates if not isinstance(d, float)), - default=float("inf"), - ) - else: - if any(isinstance(d, float) and d == float("-inf") for d in strict_dates): - return float("-inf") - else: - return min( - (d for d in strict_dates if not isinstance(d, float)), - default=float("-inf"), - ) - - -class MultipleDates(EDTFObject): - def __init__(self, *args): # noqa - self.objects = args - - @classmethod - def parse_action(cls, toks): - args = [t for t in toks.asList() if isinstance(t, EDTFObject)] - return cls(*args) - - def __str__(self) -> str: - out: str = ", ".join([str(o) for o in self.objects]) - return f"{{{out}}}" - - def _strict_date(self, lean: str = EARLIEST) -> float: - if lean == LATEST: - return max([x._strict_date(lean) for x in self.objects]) - return min([x._strict_date(lean) for x in self.objects]) - - -class Level2Interval(Level1Interval): - def __init__(self, lower, upper): # noqa - # Check whether incoming lower/upper values are single-item lists, and - # if so take just the first item. This works around what I *think* is a - # bug in the grammar that provides us with single-item lists of - # `PartialUncertainOrApproximate` items for lower/upper values. - if isinstance(lower, tuple | list) and len(lower) == 1: - self.lower = lower[0] - else: - self.lower = lower - - if isinstance(lower, tuple | list) and len(upper) == 1: - self.upper = upper[0] - else: - self.upper = upper - - self.is_approximate = self.lower.is_approximate or self.upper.is_approximate - self.is_uncertain = self.lower.is_uncertain or self.upper.is_uncertain - self.is_uncertain_and_approximate = ( - self.lower.is_uncertain_and_approximate - or self.upper.is_uncertain_and_approximate - ) - - -class Level2Season(Season): - pass - - -class ExponentialYear(LongYear): - def __init__(self, base, exponent, significant_digits=None): # noqa - self.base = base - self.exponent = exponent - self.significant_digits = ( - int(significant_digits) if significant_digits else None - ) - - def _precise_year(self) -> int: - return int(self.base) * 10 ** int(self.exponent) - - def get_year(self) -> str: - if self.significant_digits: - return f"{self.base}E{self.exponent}S{self.significant_digits}" - return f"{self.base}E{self.exponent}" - - year = property(get_year) # noqa - - def estimated(self) -> int: - return self._precise_year() diff --git a/edtf/py.typed b/edtf/py.typed deleted file mode 100644 index e69de29..0000000 diff --git a/edtf/util.py b/edtf/util.py deleted file mode 100644 index 146eec2..0000000 --- a/edtf/util.py +++ /dev/null @@ -1,67 +0,0 @@ -#!/usr/bin/env python3 - -""" -Assorted utility functions. -""" - -from functools import update_wrapper -from logging import warning -from traceback import extract_stack - - -def remapparams(**remap): - """ - Remap the specified named parameters. - - Example to support an obsolete `parseAll` parameter: - - @remapparams(parseAll='parse_all') - def parse(s, parse_all=True): - - """ - if not remap: - raise ValueError("no parameters specified for remapping") - for old, new in remap.items(): - if new in remap: - raise ValueError(f"{old}={new!r}: {new!r} is also remapped") - - def remapparams_decorator(func): - """The decorator to apply the remappings.""" - # a record of callers whose parameters were remapped - remapped_callers = set() - - def remapparams_wrapper(*a, **kw): - remappings = {} - for param, value in list(kw.items()): - try: - remapped = remap[param] - except KeyError: - continue - if remapped in kw: - raise ValueError( - f"remap {param}= to {remapped}=: this is already present in the keyword arguments" - ) - del kw[param] - kw[remapped] = value - remappings[param] = remapped - if remappings: - caller_frame = extract_stack(limit=2)[-2] - caller_key = caller_frame.filename, caller_frame.lineno - if caller_key not in remapped_callers: - warning( - "call of %s.%s() from %s:%d: remapped the following obsolete parameters: %s", - func.__module__, - func.__name__, - caller_frame.filename, - caller_frame.lineno, - ", ".join( - sorted(f"{old}->{new}" for old, new in remappings.items()) - ), - ) - remapped_callers.add(caller_key) - return func(*a, **kw) - - update_wrapper(remapparams_wrapper, func) - return remapparams_wrapper - - return remapparams_decorator diff --git a/edtf_django_tests/edtf_django_tests/__init__.py b/edtf_django_tests/edtf_django_tests/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/edtf_django_tests/edtf_django_tests/asgi.py b/edtf_django_tests/edtf_django_tests/asgi.py deleted file mode 100644 index b62c5f5..0000000 --- a/edtf_django_tests/edtf_django_tests/asgi.py +++ /dev/null @@ -1,16 +0,0 @@ -""" -ASGI config for edtf_django_tests project. - -It exposes the ASGI callable as a module-level variable named ``application``. - -For more information on this file, see -https://docs.djangoproject.com/en/4.2/howto/deployment/asgi/ -""" - -import os - -from django.core.asgi import get_asgi_application - -os.environ.setdefault("DJANGO_SETTINGS_MODULE", "edtf_django_tests.settings") - -application = get_asgi_application() diff --git a/edtf_django_tests/edtf_django_tests/settings.py b/edtf_django_tests/edtf_django_tests/settings.py deleted file mode 100644 index bad4f60..0000000 --- a/edtf_django_tests/edtf_django_tests/settings.py +++ /dev/null @@ -1,124 +0,0 @@ -""" -Django settings for edtf_django_tests project. - -Generated by 'django-admin startproject' using Django 4.2.7. - -For more information on this file, see -https://docs.djangoproject.com/en/4.2/topics/settings/ - -For the full list of settings and their values, see -https://docs.djangoproject.com/en/4.2/ref/settings/ -""" - -from pathlib import Path - -# Build paths inside the project like this: BASE_DIR / 'subdir'. -BASE_DIR = Path(__file__).resolve().parent.parent - - -# Quick-start development settings - unsuitable for production -# See https://docs.djangoproject.com/en/4.2/howto/deployment/checklist/ - -# SECURITY WARNING: keep the secret key used in production secret! -SECRET_KEY = "django-insecure-zkd&%e=di9d(p@wq7vnstn+4dx7cxbxkve�*+57sks0q$=0a" # noqa: S105 (only for testing) - -# SECURITY WARNING: don't run with debug turned on in production! -DEBUG = True - -ALLOWED_HOSTS = [] - - -# Application definition - -INSTALLED_APPS = [ - "django.contrib.admin", - "django.contrib.auth", - "django.contrib.contenttypes", - "django.contrib.sessions", - "django.contrib.messages", - "django.contrib.staticfiles", - "edtf_integration", -] - -MIDDLEWARE = [ - "django.middleware.security.SecurityMiddleware", - "django.contrib.sessions.middleware.SessionMiddleware", - "django.middleware.common.CommonMiddleware", - "django.middleware.csrf.CsrfViewMiddleware", - "django.contrib.auth.middleware.AuthenticationMiddleware", - "django.contrib.messages.middleware.MessageMiddleware", - "django.middleware.clickjacking.XFrameOptionsMiddleware", -] - -ROOT_URLCONF = "edtf_django_tests.urls" - -TEMPLATES = [ - { - "BACKEND": "django.template.backends.django.DjangoTemplates", - "DIRS": [], - "APP_DIRS": True, - "OPTIONS": { - "context_processors": [ - "django.template.context_processors.debug", - "django.template.context_processors.request", - "django.contrib.auth.context_processors.auth", - "django.contrib.messages.context_processors.messages", - ], - }, - }, -] - -WSGI_APPLICATION = "edtf_django_tests.wsgi.application" - - -# Database -# https://docs.djangoproject.com/en/4.2/ref/settings/#databases - -DATABASES = { - "default": { - "ENGINE": "django.db.backends.sqlite3", - "NAME": BASE_DIR / "db.sqlite3", - } -} - - -# Password validation -# https://docs.djangoproject.com/en/4.2/ref/settings/#auth-password-validators - -AUTH_PASSWORD_VALIDATORS = [ - { - "NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator", - }, - { - "NAME": "django.contrib.auth.password_validation.MinimumLengthValidator", - }, - { - "NAME": "django.contrib.auth.password_validation.CommonPasswordValidator", - }, - { - "NAME": "django.contrib.auth.password_validation.NumericPasswordValidator", - }, -] - - -# Internationalization -# https://docs.djangoproject.com/en/4.2/topics/i18n/ - -LANGUAGE_CODE = "en-us" - -TIME_ZONE = "UTC" - -USE_I18N = True - -USE_TZ = True - - -# Static files (CSS, JavaScript, Images) -# https://docs.djangoproject.com/en/4.2/howto/static-files/ - -STATIC_URL = "static/" - -# Default primary key field type -# https://docs.djangoproject.com/en/4.2/ref/settings/#default-auto-field - -DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField" diff --git a/edtf_django_tests/edtf_django_tests/urls.py b/edtf_django_tests/edtf_django_tests/urls.py deleted file mode 100644 index 0b30a1b..0000000 --- a/edtf_django_tests/edtf_django_tests/urls.py +++ /dev/null @@ -1,23 +0,0 @@ -""" -URL configuration for edtf_django_tests project. - -The `urlpatterns` list routes URLs to views. For more information please see: - https://docs.djangoproject.com/en/4.2/topics/http/urls/ -Examples: -Function views - 1. Add an import: from my_app import views - 2. Add a URL to urlpatterns: path('', views.home, name='home') -Class-based views - 1. Add an import: from other_app.views import Home - 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') -Including another URLconf - 1. Import the include() function: from django.urls import include, path - 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) -""" - -from django.contrib import admin -from django.urls import path - -urlpatterns = [ - path("admin/", admin.site.urls), -] diff --git a/edtf_django_tests/edtf_django_tests/wsgi.py b/edtf_django_tests/edtf_django_tests/wsgi.py deleted file mode 100644 index 20450c1..0000000 --- a/edtf_django_tests/edtf_django_tests/wsgi.py +++ /dev/null @@ -1,16 +0,0 @@ -""" -WSGI config for edtf_django_tests project. - -It exposes the WSGI callable as a module-level variable named ``application``. - -For more information on this file, see -https://docs.djangoproject.com/en/4.2/howto/deployment/wsgi/ -""" - -import os - -from django.core.wsgi import get_wsgi_application - -os.environ.setdefault("DJANGO_SETTINGS_MODULE", "edtf_django_tests.settings") - -application = get_wsgi_application() diff --git a/edtf_django_tests/edtf_integration/__init__.py b/edtf_django_tests/edtf_integration/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/edtf_django_tests/edtf_integration/admin.py b/edtf_django_tests/edtf_integration/admin.py deleted file mode 100644 index 3051891..0000000 --- a/edtf_django_tests/edtf_integration/admin.py +++ /dev/null @@ -1,43 +0,0 @@ -from django.contrib import admin - -from .models import TestEvent - - -class TestEventAdmin(admin.ModelAdmin): - list_display = ( - "date_display", - "date_edtf_direct", - "date_earliest", - "date_latest", - "date_sort_ascending", - "date_sort_descending", - "date_edtf", - ) - search_fields = ("date_display", "date_edtf_direct") - list_filter = ("date_earliest", "date_latest") - readonly_fields = ( - "date_earliest", - "date_latest", - "date_sort_ascending", - "date_sort_descending", - "date_edtf", - ) - - fieldsets = ( - (None, {"fields": ("date_display", "date_edtf_direct", "date_edtf")}), - ( - "Computed Dates", - { - "classes": ("collapse",), - "fields": ( - "date_earliest", - "date_latest", - "date_sort_ascending", - "date_sort_descending", - ), - }, - ), - ) - - -admin.site.register(TestEvent, TestEventAdmin) diff --git a/edtf_django_tests/edtf_integration/apps.py b/edtf_django_tests/edtf_integration/apps.py deleted file mode 100644 index 23bc09d..0000000 --- a/edtf_django_tests/edtf_integration/apps.py +++ /dev/null @@ -1,6 +0,0 @@ -from django.apps import AppConfig - - -class EdtfIntegrationConfig(AppConfig): - default_auto_field = "django.db.models.BigAutoField" - name = "edtf_integration" diff --git a/edtf_django_tests/edtf_integration/migrations/0001_initial.py b/edtf_django_tests/edtf_integration/migrations/0001_initial.py deleted file mode 100644 index 0311290..0000000 --- a/edtf_django_tests/edtf_integration/migrations/0001_initial.py +++ /dev/null @@ -1,64 +0,0 @@ -# Generated by Django 4.2.13 on 2024-05-09 18:13 - -from django.db import migrations, models -import edtf.fields - - -class Migration(migrations.Migration): - initial = True - - dependencies = [] - - operations = [ - migrations.CreateModel( - name="TestEvent", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "date_display", - models.CharField( - blank=True, - help_text="Enter the date in natural language format (e.g., 'Approximately June 2004').", - max_length=255, - null=False, - verbose_name="Date of creation (display)", - ), - ), - ( - "date_edtf_direct", - models.CharField( - blank=True, - help_text="Enter the date in EDTF format (e.g., '2004-06~').", - max_length=255, - null=False, - verbose_name="Date of creation (EDTF format)", - ), - ), - ( - "date_edtf", - edtf.fields.EDTFField( - blank=True, - lower_fuzzy_field="date_earliest", - lower_strict_field="date_sort_ascending", - natural_text_field="date_display", - null=True, - upper_fuzzy_field="date_latest", - upper_strict_field="date_sort_descending", - verbose_name="Date of creation (EDTF)", - ), - ), - ("date_earliest", models.FloatField(blank=True, null=True)), - ("date_latest", models.FloatField(blank=True, null=True)), - ("date_sort_ascending", models.FloatField(blank=True, null=True)), - ("date_sort_descending", models.FloatField(blank=True, null=True)), - ], - ), - ] diff --git a/edtf_django_tests/edtf_integration/migrations/__init__.py b/edtf_django_tests/edtf_integration/migrations/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/edtf_django_tests/edtf_integration/models.py b/edtf_django_tests/edtf_integration/models.py deleted file mode 100644 index 5e66592..0000000 --- a/edtf_django_tests/edtf_integration/models.py +++ /dev/null @@ -1,53 +0,0 @@ -from django.db import models - -from edtf.fields import EDTFField - - -class TestEvent(models.Model): - date_display = models.CharField( - "Date of creation (display)", - blank=True, - null=False, - max_length=255, - help_text="Enter the date in natural language format (e.g., 'Approximately June 2004').", - ) - - date_edtf_direct = models.CharField( - "Date of creation (EDTF format)", - max_length=255, - blank=True, - null=False, - help_text="Enter the date in EDTF format (e.g., '2004-06~').", - ) - - # EDTF field that parses the input from either natural language or direct EDTF string - # natural_text_field is the field that stores the natural language input and is used for display - # direct_input_field stores an EDTF string - # TODO is there a need for both a natural text input and a label? - # TODO could consolidate the direct_input_field and natural_text_field into a single field, but would need - # a flag to indicate whether the input is natural language or EDTF as the natural language parser sometimes - # misparses an EDTF string as a natural language string (e.g. `2020-03-15/2020-04-15` -> `2020-03-15`) - date_edtf = EDTFField( - "Date of creation (EDTF)", - natural_text_field="date_display", - direct_input_field="date_edtf_direct", - lower_fuzzy_field="date_earliest", - upper_fuzzy_field="date_latest", - lower_strict_field="date_sort_ascending", - upper_strict_field="date_sort_descending", - blank=True, - null=True, - ) - # Computed fields for filtering - date_earliest = models.FloatField(blank=True, null=True) - date_latest = models.FloatField(blank=True, null=True) - # Computed fields for sorting - date_sort_ascending = models.FloatField(blank=True, null=True) - date_sort_descending = models.FloatField(blank=True, null=True) - - def __str__(self) -> str: - return ( - f"Test Event: {self.date_display=}, " - f"{self.date_edtf_direct=}, " - f"{self.date_edtf=}" - ) diff --git a/edtf_django_tests/edtf_integration/tests.py b/edtf_django_tests/edtf_integration/tests.py deleted file mode 100644 index aa1bf34..0000000 --- a/edtf_django_tests/edtf_integration/tests.py +++ /dev/null @@ -1,155 +0,0 @@ -from django.test import TestCase - -from edtf import EDTFObject, struct_time_to_jd -from edtf import parse_edtf as parse - -from .models import TestEvent - - -class TestEventModelTests(TestCase): - def setUp(self): - # Create instances and assign them to instance variables - # date_edtf_direct is a valid EDTF string, date_display is a date - # to be parsed from natural language - self.event1 = TestEvent.objects.create(date_edtf_direct="2020-03-15/2020-04-15") - self.event2 = TestEvent.objects.create(date_edtf_direct="2021-05-06") - self.event3 = TestEvent.objects.create(date_edtf_direct="2019-11") - self.event4 = TestEvent.objects.create(date_display="Approximately August 2018") - self.event5 = TestEvent.objects.create(date_edtf_direct="2021-05-06") - - def test_edtf_object_returned(self): - for event in TestEvent.objects.all(): - self.assertIsInstance(event.date_edtf, EDTFObject) - - def test_sorting(self): - events = list(TestEvent.objects.order_by("date_sort_ascending")) - self.assertEqual(events[0].date_display, "Approximately August 2018") - self.assertEqual(events[1].date_edtf_direct, "2019-11") - self.assertEqual(events[2].date_edtf_direct, "2020-03-15/2020-04-15") - self.assertEqual(events[3].date_edtf_direct, "2021-05-06") - self.assertEqual(events[4].date_edtf_direct, "2021-05-06") - - events_desc = list(TestEvent.objects.order_by("-date_sort_descending")) - self.assertEqual(events_desc[0].date_edtf_direct, "2021-05-06") - self.assertEqual(events_desc[1].date_edtf_direct, "2021-05-06") - self.assertEqual(events_desc[2].date_edtf_direct, "2020-03-15/2020-04-15") - self.assertEqual(events_desc[3].date_edtf_direct, "2019-11") - self.assertEqual(events_desc[4].date_display, "Approximately August 2018") - - def test_date_boundaries(self): - event = TestEvent.objects.get(date_edtf_direct="2020-03-15/2020-04-15") - expected_earliest_jd = struct_time_to_jd(parse("2020-03-15").lower_strict()) - expected_latest_jd = struct_time_to_jd(parse("2020-04-15").upper_strict()) - self.assertAlmostEqual(event.date_earliest, expected_earliest_jd, places=1) - self.assertAlmostEqual(event.date_latest, expected_latest_jd, places=1) - - expected_earliest_jd = struct_time_to_jd(parse("2021-05-06").lower_strict()) - expected_latest_jd = struct_time_to_jd(parse("2021-05-06").upper_strict()) - self.assertAlmostEqual( - self.event2.date_earliest, expected_earliest_jd, places=1 - ) - self.assertAlmostEqual(self.event2.date_latest, expected_latest_jd, places=1) - - event3 = TestEvent.objects.get(date_edtf_direct="2019-11") - expected_earliest_jd = struct_time_to_jd(parse("2019-11").lower_strict()) - expected_latest_jd = struct_time_to_jd(parse("2019-11").upper_strict()) - self.assertAlmostEqual(event3.date_earliest, expected_earliest_jd, places=1) - self.assertAlmostEqual(event3.date_latest, expected_latest_jd, places=1) - - event4 = TestEvent.objects.get(date_display="Approximately August 2018") - expected_earliest_jd = struct_time_to_jd(parse("2018-08~").lower_fuzzy()) - expected_latest_jd = struct_time_to_jd(parse("2018-08~").upper_fuzzy()) - self.assertAlmostEqual(event4.date_earliest, expected_earliest_jd, places=1) - self.assertAlmostEqual(event4.date_latest, expected_latest_jd, places=1) - - def test_date_display(self): - """ - Test that the date_display field is correctly populated based on the EDTF input. - In the future, a more sophisticated natural language parser could be used to generate - a human readable date from the EDTF input. - """ - event = TestEvent.objects.get(date_edtf_direct="2020-03-15/2020-04-15") - self.assertEqual(event.date_display, "2020-03-15/2020-04-15") - self.assertEqual(self.event2.date_display, "2021-05-06") - self.assertEqual(self.event3.date_display, "2019-11") - self.assertEqual(self.event4.date_display, "Approximately August 2018") - - def test_date_display_with_none_or_empty_string(self): - """ - Test that the date_display field is correctly populated when the - `natural_date` field is set to empty string (for example, if it - were used with `null=False` in the model definition) or set to - None (if it were used with `null=True`). - """ - event = TestEvent(date_display="") - event.date_edtf_direct = "2020-03-15/2020-04-15" - # Trigger the descriptor to update the date_display field - event.date_edtf = "" - self.assertEqual(event.date_display, "2020-03-15/2020-04-15") - - event = TestEvent(date_display=None) - # Verify date_display is set to None even though the field is `null=False` - self.assertIsNone(event.date_display) - event.date_edtf_direct = "2020-03-15/2020-04-15" - event.date_edtf = "" - self.assertEqual(event.date_display, "2020-03-15/2020-04-15") - - def test_comparison(self): - # test equality of the same dates - self.assertEqual( - self.event2.date_edtf, - self.event5.date_edtf, - "Events with the same date should be equal", - ) - - # test inequality of different dates - self.assertNotEqual( - self.event1.date_edtf, - self.event2.date_edtf, - "Events with different dates should not be equal", - ) - - # greater than - self.assertGreater( - self.event2.date_edtf, - self.event3.date_edtf, - "2021-05-06 is greater than 2019-11", - ) - - # less than - self.assertLess( - self.event3.date_edtf, - self.event2.date_edtf, - "2019-11 is less than 2021-05-06", - ) - - def test_field_related_field_specification(self): - edtf_field_on_model = TestEvent._meta.get_field("date_edtf") - required_fields = ( - "direct_input_field", - "lower_fuzzy_field", - "lower_strict_field", - "natural_text_field", - "upper_fuzzy_field", - "upper_strict_field", - ) - for field_alias in required_fields: - # Remove the alias from the edtf_field - orig_value = getattr(edtf_field_on_model, field_alias) - setattr(edtf_field_on_model, field_alias, None) - errors = edtf_field_on_model.check() - self.assertEqual(len(errors), 1) - self.assertTrue(field_alias in errors[0].msg) - # Should be an 'alias not specified' error - self.assertEqual(errors[0].id, "python-edtf.EDTF01") - - # Point the alias to a non-existent field - setattr(edtf_field_on_model, field_alias, "fake") - errors = edtf_field_on_model.check() - self.assertEqual(len(errors), 1) - self.assertTrue(field_alias in errors[0].msg) - # Should be a 'non-eixstent field' error - self.assertEqual(errors[0].id, "python-edtf.EDTF02") - - # Repair the field so later tests can still work - setattr(edtf_field_on_model, field_alias, orig_value) diff --git a/edtf_django_tests/edtf_integration/views.py b/edtf_django_tests/edtf_integration/views.py deleted file mode 100644 index 60f00ef..0000000 --- a/edtf_django_tests/edtf_integration/views.py +++ /dev/null @@ -1 +0,0 @@ -# Create your views here. diff --git a/edtf_django_tests/manage.py b/edtf_django_tests/manage.py deleted file mode 100755 index ffd375b..0000000 --- a/edtf_django_tests/manage.py +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/env python -"""Django's command-line utility for administrative tasks.""" - -import os -import sys - - -def main(): - """Run administrative tasks.""" - os.environ.setdefault("DJANGO_SETTINGS_MODULE", "edtf_django_tests.settings") - try: - from django.core.management import execute_from_command_line - except ImportError as exc: - raise ImportError( - "Couldn't import Django. Are you sure it's installed and " - "available on your PYTHONPATH environment variable? Did you " - "forget to activate a virtual environment?" - ) from exc - execute_from_command_line(sys.argv) - - -if __name__ == "__main__": - main() diff --git a/pyproject.toml b/pyproject.toml deleted file mode 100644 index 255fde6..0000000 --- a/pyproject.toml +++ /dev/null @@ -1,157 +0,0 @@ -[project] -name = "edtf" -version = "5.0.1" -license = { file = "LICENSE" } -keywords = ['edtf'] -dependencies = [ - "python-dateutil", - "pyparsing>=3.0.0", -] -description = "Python implementation of Library of Congress EDTF (Extended Date Time Format) specification" -requires-python = ">=3.10" -readme = {file = "README.md", content-type = "text/markdown"} -authors = [ - { name = "The Interaction Consortium", email = "studio@interaction.net.au"}, - { name = "Alastair Weakley"}, - { name = "Greg Turner"}, - { name = "James Murty"}, - { name = "Mark Finger" }, - { name = "Sabine Müller" }, - { name = "Cole Crawford" }, - { name = "Klaus Rettinghaus" }, - { name = "Andrew Hankinson", email = "andrew.hankinson@rism.digital" }, -] -maintainers = [ - { name = "The Interaction Consortium", email = "studio@interaction.net.au" } -] -classifiers = [ - "Intended Audience :: Developers", - "Intended Audience :: End Users/Desktop", - "License :: OSI Approved :: MIT License", - "Operating System :: MacOS :: MacOS X", - "Operating System :: POSIX :: Linux", - "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.8", - "Programming Language :: Python :: 3.9", - "Programming Language :: Python :: 3.10", - "Programming Language :: Python :: 3.11", - "Programming Language :: Python :: 3.12", - "Programming Language :: Python :: 3.13", - "Programming Language :: Python :: 3.14", -] - -[project.optional-dependencies] -test = [ - "django>=4.2,<5.0", - "pytest", - "pytest-django", - "pytest-benchmark", - "ruff", - "pre-commit", - "coverage", - "pytest-cov", - "junitparser", - "mypy>=1.15.0", - "pip>=25.1.1", -] - -[project.urls] -homepage = "https://github.com/ixc/python-edtf" -issues = "https://github.com/ixc/python-edtf/issues" -repository = "https://github.com/ixc/python-edtf.git" -changelog = "https://github.com/ixc/python-edtf/blob/main/changelog.rst" - -[build-system] -requires = ["setuptools", "wheel"] -build-backend = "setuptools.build_meta" - -[tool.setuptools] -packages.find = { where = ["."], exclude = ["edtf_django_tests", "edtf_django_tests.*", "tests"] } - -[tool.wheel] -universal = false - -[tool.tox] -legacy_tox_ini = """ - [tox] - min_version = 4.0 - env_list = py{38,39,310,311,312} - isolated_build = true - skip_missing_interpreters = True - - [testenv] - deps = - pytest - django - commands = pytest -""" - -[tool.pytest.ini_options] -# python_files = ["tests.py", "test_*.py", "*_test.py", "*_tests.py"] -python_files = ["tests/*.py"] -python_classes = ["Test*", "*Tests"] -python_functions = ["test_*"] -markers = [ - "benchmark: mark a test as a benchmark", -] -addopts = "--ignore=edtf_django_tests/ --cov=edtf -m 'not benchmark'" -plugins = ["pytest_cov", "pytest_benchmark"] - -[tool.coverage.run] -# we run the edtf_integration tests but only care about them testing fields.py in the main package -omit = [ - "edtf_django_tests/*" -] - -[tool.coverage.report] -exclude_lines = [ - # Don't complain about missing debug-only code: - "if __name__ == .__main__.:", - # Don't complain if tests don't hit defensive assertion code: - "raise AssertionError", - "raise NotImplementedError", - "raise NotImplemented", - "raise NotImplemented" -] - -[tool.ruff] -# Python 3.8 -target-version = "py311" - -extend-exclude = [ - '**/migrations/*', -] - -[tool.ruff.lint] -select = [ - # pycodestyle - "E", - # pycodestyle warnings - "W", - # Pyflakes - "F", - # pyupgrade - ## Flake8 plugins - "UP", - # flake8-bugbear - "B", - # flake8-comprehensions - "C", - # flake8-django - "DJ", - # flake8-bandit - "S", - # flake8-simplify - "SIM", - # isort - "I", -] - -ignore = [ - # Ignore Pycodestyle line-length warnings, (mainly long comments). - "E501", - # Ignore McCabe complexity (for now). - "C901", - # Ignore percent format -> format specifier rule for now (pending merge of #73 which resolves them) - "UP031", -] diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index f142bc2..0000000 --- a/requirements.txt +++ /dev/null @@ -1,2 +0,0 @@ -python-dateutil -pyparsing >= 3.0.0 diff --git a/tests/test_edtf.py b/tests/test_edtf.py deleted file mode 100644 index 837e580..0000000 --- a/tests/test_edtf.py +++ /dev/null @@ -1,184 +0,0 @@ -# ruff: noqa: S101 # Asserts are ok in tests - -from datetime import date, datetime -from time import struct_time - -from edtf import convert -from edtf.parser.edtf_exceptions import EDTFParseException -from edtf.parser.grammar import parse_edtf -from edtf.util import remapparams - - -def test_dt_to_struct_time_for_datetime(): - now = datetime.now() - st = convert.dt_to_struct_time(now) - assert st[:6] == now.timetuple()[:6] - assert st[6:] == (0, 0, -1) - - -def test_dt_to_struct_time_for_date(): - today = date.today() - st = convert.dt_to_struct_time(today) - assert st[:3] == today.timetuple()[:3] - assert st[3:6] == (0, 0, 0) - assert st[6:] == (0, 0, -1) - - -def test_struct_time_to_date(): - st = struct_time( - [2018, 4, 19] + convert.TIME_EMPTY_TIME + convert.TIME_EMPTY_EXTRAS - ) - d = date(*st[:3]) - assert d == convert.struct_time_to_date(st) - - -def test_struct_time_to_datetime(): - st = struct_time([2018, 4, 19] + [10, 13, 54] + convert.TIME_EMPTY_EXTRAS) - dt = datetime(*st[:6]) - converted_dt = convert.struct_time_to_datetime(st) - assert dt == converted_dt - assert converted_dt.timetuple()[6:] == (3, 109, -1) - - -def test_trim_struct_time(): - now = datetime.now() - st = now.timetuple() - trimmed_st = convert.trim_struct_time(st) - assert trimmed_st[:6] == ( - now.year, - now.month, - now.day, - now.hour, - now.minute, - now.second, - ) - assert trimmed_st[6:] == (0, 0, -1) - assert st[6:] != (0, 0, -1) - - -def test_struct_time_to_jd(): - st_ad = struct_time([2018, 4, 19] + [10, 13, 54] + convert.TIME_EMPTY_EXTRAS) - jd_ad = 2458227.9263194446 - assert jd_ad == convert.struct_time_to_jd(st_ad) - st_bc = struct_time([-2018, 4, 19] + [10, 13, 54] + convert.TIME_EMPTY_EXTRAS) - jd_bc = 984091.9263194444 - assert jd_bc == convert.struct_time_to_jd(st_bc) - - -def test_jd_to_struct_time(): - jd_ad = 2458227.9263194446 - st_ad = struct_time([2018, 4, 19] + [10, 13, 54] + convert.TIME_EMPTY_EXTRAS) - assert st_ad == convert.jd_to_struct_time(jd_ad) - jd_bc = 984091.9263194444 - st_bc = struct_time([-2018, 4, 19] + [10, 13, 54 - 1] + convert.TIME_EMPTY_EXTRAS) - assert st_bc == convert.jd_to_struct_time(jd_bc) - - -def test_jd_round_trip_for_extreme_future(): - original_st = struct_time([999999, 8, 4] + [21, 15, 3] + convert.TIME_EMPTY_EXTRAS) - jd = convert.struct_time_to_jd(original_st) - converted_st = convert.jd_to_struct_time(jd) - assert original_st[:5] == converted_st[:5] - assert converted_st[5] == 3 - 1 - - -def test_jd_round_trip_for_extreme_past(): - original_st = struct_time([-999999, 8, 4] + [21, 15, 3] + convert.TIME_EMPTY_EXTRAS) - converted_st = convert.jd_to_struct_time(convert.struct_time_to_jd(original_st)) - assert tuple(converted_st) == (-999999 + 1, 8, 4, 21, 15, 3, 0, 0, -1) - - -def test_jd_round_trip_for_zero_year_aka_1_bc(): - original_st = struct_time([0, 9, 5] + [4, 58, 59] + convert.TIME_EMPTY_EXTRAS) - converted_st = convert.jd_to_struct_time(convert.struct_time_to_jd(original_st)) - assert tuple(converted_st) == (0, 9, 5, 4, 58, 59, 0, 0, -1) - - -def test_jd_round_trip_for_2_bc(): - original_st = struct_time([-1, 12, 5] + [4, 58, 59] + convert.TIME_EMPTY_EXTRAS) - converted_st = convert.jd_to_struct_time(convert.struct_time_to_jd(original_st)) - assert tuple(converted_st) == (-1, 12, 5, 4, 58, 59, 0, 0, -1) - - -def test_roll_negative_time_fields(): - year = -100 - month = -17 - day = -34 - hour = -25 - minute = -74 - second = -253 - assert convert._roll_negative_time_fields( - year, month, day, hour, minute, second - ) == (-102, 5, 24, 21, 41, 47) - - -def test_remapparams(): - @remapparams(parseAll="parse_all") - def parser(s, parse_all=True): - pass - - assert parser.__name__ == "parser" # noqa: S101 - parser("foo") - # this should not warn - parser("foo", parse_all=False) - # this should warn, but only once - for _ in 1, 2: - parser("foo", parseAll=False) - try: - parser("foo", parseAll=False, parse_all=True) - except ValueError: - pass - else: - raise AssertionError("expected ValueError because of duplicated parameters") - - try: - - @remapparams() - def no_remappings(): - pass - except ValueError: - pass - else: - raise AssertionError( - "expected ValueError from @remapparams() because no remappings" - ) - try: - - @remapparams(p1="p2", p2="p3") - def no_remappings(): - pass - except ValueError: - pass - else: - raise AssertionError( - "expected ValueError from @remapparams() because p1 remaps to another remapped parameter" - ) - - -def test_remapparams_parse_edtf(): - edtf_s = "2005-09-24T10:00:00" # ISO8601 example from the EDTF spec - dat = parse_edtf(edtf_s) # implicit parse_all=True - assert dat.isoformat() == edtf_s - assert parse_edtf(edtf_s, parse_all=True).isoformat() == edtf_s - assert parse_edtf(edtf_s, parseAll=True).isoformat() == edtf_s - assert parse_edtf(f"{edtf_s} SNORT", parse_all=False).isoformat() == edtf_s - assert parse_edtf(f"{edtf_s} SNORT", parseAll=False).isoformat() == edtf_s - # make sure parse_all=True fails the SNORT parse - try: - parse_edtf(f"{edtf_s} SNORT") - except EDTFParseException: - pass - else: - raise AssertionError("expected EDTFParseException") - try: - parse_edtf(f"{edtf_s} SNORT", parse_all=True) - except EDTFParseException: - pass - else: - raise AssertionError("expected EDTFParseException") - try: - parse_edtf(f"{edtf_s} SNORT", parseAll=True) - except EDTFParseException: - pass - else: - raise AssertionError("expected EDTFParseException") diff --git a/tests/test_natlang.py b/tests/test_natlang.py deleted file mode 100644 index e0acaad..0000000 --- a/tests/test_natlang.py +++ /dev/null @@ -1,211 +0,0 @@ -# ruff: noqa: S101 # Asserts are ok in tests - -import pytest - -from edtf.natlang.en import text_to_edtf - - -# TODO update the tests and code to test and output the new spec -# where examples are tuples, the second item is the normalised output -@pytest.mark.parametrize( - "input_text,expected_output", - [ - # Ignoring 'late' for simplicity in these examples - ("active late 17th-19th centuries", "16XX/18XX"), - ("active 17-19th Centuries", "16XX/18XX"), - # Unrecognised values - ("", None), - ("this isn't a date", None), - # Explicitly rejected values that would otherwise be badly converted - ("23rd Dynasty", None), - # Implied century and specific years - ("90", "1990"), # Implied century - ("1860", "1860"), - ("the year 1800", "1800"), - ("the year 1897", "1897"), - ("January 2008", "2008-01"), - ("January 12, 1940", "1940-01-12"), - # Uncertain or approximate dates - ("1860?", "1860?"), - ("1862 (uncertain)", "1862?"), - ("maybe 1862", "1862?"), - ("1862 maybe", "1862?"), - ("1862 guess", "1862?"), - ("uncertain: 1862", "1862?"), - ("uncertain: Jan 18 1862", "1862-01-18?"), - ("~ Feb 1812", "1812-02~"), - ("circa Feb 1812", "1812-02~"), - ("Feb 1812 approx", "1812-02~"), - ("c1860", "1860~"), # Different abbreviations - ("c.1860", "1860~"), # With or without . - ("ca1860", "1860~"), - ("ca.1860", "1860~"), - ("c 1860", "1860~"), # With or without space - ("c. 1860", "1860~"), - ("ca. 1860", "1860~"), - ("approx 1860", "1860~"), - ("1860 approx", "1860~"), - ("1860 approximately", "1860~"), - ("approximately 1860", "1860~"), - ("about 1860", "1860~"), - ("about Spring 1849", "1849-21~"), - ("notcirca 1860", "1860"), # Avoid words containing 'circa' - ( - "attica 1802", - "1802", - ), # Avoid false positive 'circa' at the end of preceding word - ("attic. 1802", "1802"), # Avoid false positive 'circa' - # Previously tested masked precision, uncertain or ambiguous masked precision - ("1860s", "186X"), - ("ca. 1860s", "186X~"), - ("c. 1860s", "186X~"), - ("Circa 1840s", "184X~"), - ("circa 1840s", "184X~"), - ("ca. 1860s?", "186X%"), - ("uncertain: approx 1862", "1862%"), - ("1800s", "18XX"), - ("2000s", "20XX"), - ("c1900s", "190X~"), - ("c1800s?", "180X%"), - # Unspecified dates - ("January 12", "XXXX-01-12"), - ("January", "XXXX-01"), - ("10/7/2008", "2008-10-07"), - ("7/2008", "2008-07"), - # Seasons mapped to specific codes - ("Spring 1872", "1872-21"), - ("Summer 1872", "1872-22"), - ("Autumn 1872", "1872-23"), - ("Fall 1872", "1872-23"), - ("Winter 1872", "1872-24"), - # Dates relative to known events (before/after) - ("earlier than 1928", "/1928"), - ("before 1928", "/1928"), - ("after 1928", "1928/"), - ("later than 1928", "1928/"), - ("before January 1928", "/1928-01"), - ("before 18 January 1928", "/1928-01-18"), - # Approximations combined with before/after - ("before approx January 18 1928", "/1928-01-18~"), - ("before approx January 1928", "/1928-01~"), - ("after approx January 1928", "1928-01~/"), - ("after approx Summer 1928", "1928-22~/"), - # Before and after with uncertain / unspecified components - ("after about the 1920s", "192X~/"), - ("before about the 1900s", "/190X~"), - ("before the 1900s", "/19XX"), - # previous examples for masked precision, now removed from the EDTF spec - # use `X` for unknown regardless of precision or why the data is unknown - ("decade in 1800s", "18XX"), - ("decade somewhere during the 1800s", "18XX"), - ("year in the 1860s", "186X"), - ("year in the 1800s", "18XX"), - ("year in about the 1800s", "180X~"), - ("month in 1872", "1872-XX"), - ("day in Spring 1849", "1849-21-XX"), - ("day in January 1872", "1872-01-XX"), - ("day in 1872", "1872-XX-XX"), - ("birthday in 1872", "1872"), - # Handling centuries with approximation and uncertainty - ("1st century", "00XX"), - ("10c", "09XX"), - ("19th century", "18XX"), - ("19th century?", "18XX?"), - ("before 19th century", "/18XX"), - ("19c", "18XX"), - ("15c.", "14XX"), - ("ca. 19c", "18XX~"), - ("~19c", "18XX~"), - ("about 19c", "18XX~"), - ("19c?", "18XX?"), - ("c.19c?", "18XX%"), - # BC/AD dating - ("1 AD", "0001"), - ("17 CE", "0017"), - ("127 CE", "0127"), - ("1270 CE", "1270"), - ("c1 AD", "0001~"), - ("c17 CE", "0017~"), - ("c127 CE", "0127~"), - ("c1270 CE", "1270~"), - ("c64 BCE", "-0064~"), - ("2nd century bc", "-01XX"), # -200 to -101 - ("2nd century bce", "-01XX"), - ("2nd century ad", "01XX"), - ("2nd century ce", "01XX"), - # Combining uncertainties and approximations in creative ways - ("a day in about Spring 1849?", "1849-21-XX%"), - # Simple date ranges, showcasing both the limitations and capabilities of the parser - # Not all of these results are correct EDTF, but this is as good as the EDTF implementation - # and simple natural language parser we have. - ("1851-1852", "1851/1852"), - ("1851-1852; printed 1853-1854", "1851/1852"), - ("1851-52", "1851/1852"), - ("1852 - 1860", "1852/1860"), - ("1856-ca. 1865", "1856/1865~"), - ("1857-mid 1860s", "1857/186X"), - ("1858/1860", "[1858, 1860]"), - ("1860s-1870s", "186X/187X"), - ("1910-30", "1910/1930"), - ("active 1910-30", "1910/1930"), - ("1861-67", "1861/1867"), - ("1861-67 (later print)", "1861/1867"), - ("1863 or 1864", "1863"), - ("1863, printed 1870", "1863"), - ("1863, printed ca. 1866", "1863"), - ("1864 or 1866", "1864"), - ("1864, printed ca. 1864", "1864"), - ("1864-1872, printed 1870s", "1864/1872"), - ("1868-1871?", "1868/1871?"), - ("1869-70", "1869/1870"), - ("1870s, printed ca. 1880s", "187X"), - ("1900-1903, cast before 1929", "1900/1903"), - ("1900; 1973", "1900"), - ("1900; printed 1912", "1900"), - ("1915 late - autumn 1916", "1915/1916-23"), - ("1915, from Camerawork, October 1916", "1915"), # should be {1915, 1916-10} - ("1920s -early 1930s", "192X/193X"), - ( - "1930s, printed early 1960s", - "193X", - ), # should be something like {193x, 196x}, - ("1932, printed 1976 by Gunther Sander", "1932"), # should be {1932, 1976} - ( - "1938, printed 1940s-1950s", - "1938", - ), # should be something like {1938, 194x-195x} - ], -) -def test_natlang(input_text, expected_output): - """ - Test natural language conversion to EDTF format: - Verify that the conversion from text to EDTF format matches the expected output. - """ - result = text_to_edtf(input_text) - assert result == expected_output, ( - f"Failed for input: {input_text} - expected {expected_output}, got {result}" - ) - - -@pytest.mark.benchmark -@pytest.mark.parametrize( - "input_text,expected_output", - [ - ("23rd Dynasty", None), - ("January 2008", "2008-01"), - ("ca1860", "1860~"), - ("uncertain: approx 1862", "1862%"), - ("January", "XXXX-01"), - ("Winter 1872", "1872-24"), - ("before approx January 18 1928", "/1928-01-18~"), - ("birthday in 1872", "1872"), - ("1270 CE", "1270"), - ("2nd century bce", "-01XX"), - ("1858/1860", "[1858, 1860]"), - ], -) -def test_benchmark_natlang(benchmark, input_text, expected_output): - """ - Benchmark selected natural language conversions - """ - benchmark(text_to_edtf, input_text) diff --git a/tests/test_parser.py b/tests/test_parser.py deleted file mode 100644 index 8b3c1d9..0000000 --- a/tests/test_parser.py +++ /dev/null @@ -1,426 +0,0 @@ -# ruff: noqa: S101 # Asserts are ok in tests - -from datetime import date -from time import struct_time - -import pytest - -from edtf.parser.edtf_exceptions import EDTFParseException -from edtf.parser.grammar import parse_edtf as parse -from edtf.parser.parser_classes import TIME_EMPTY_EXTRAS, TIME_EMPTY_TIME, EDTFObject - -# Example object types and attributes represented as tuples. -# The first item in each tuple is the input EDTF string, and expected parse result. -# where the first value is a tuple, the second item is a tuple of the normalised parse result. -# -# The values in the second tuple indicate the iso versions of the derived Python `date`s. -# - If there is one other value, all the derived dates should be the same. -# - If there are two other values, then all the lower values should be the same -# and all the upper values should be the same. -# - If there are three other values, then the upper and lower ``_strict`` values -# should be the first value, and the upper and lower ``_fuzzy`` values should be -# the last two. -# - If there are four other values, then the first value is the lower strict, -# the second value is the upper strict; the third value is the lower fuzzy date -# and the final value is the upper fuzzy date. -EXAMPLES = ( - # ******************************* LEVEL 0 ********************************* - # year, month, day - ("2001-02-03", ("2001-02-03",)), - # year, month - ("2008-12", ("2008-12-01", "2008-12-31")), - # year - ("2008", ("2008-01-01", "2008-12-31")), - # a negative year - ("-0999", ("-0999-01-01", "-0999-12-31")), - # year zero - ("0000", ("0000-01-01", "0000-12-31")), - # DateTimes - ("2001-02-03T09:30:01", ("2001-02-03",)), - ("2004-01-01T10:10:10Z", ("2004-01-01",)), - ("2004-01-01T10:10:10+05:00", ("2004-01-01",)), - ("1985-04-12T23:20:30", ("1985-04-12",)), - # Intervals - # An interval beginning sometime in 1964 and ending sometime in 2008. Year precision. - ("1964/2008", ("1964-01-01", "2008-12-31")), - # An interval beginning sometime in June 2004 and ending sometime in August of 2006. Month precision. - ("2004-06/2006-08", ("2004-06-01", "2006-08-31")), - # An interval beginning sometime on February 1, 2004 and ending sometime on February 8, 2005. Day precision. - ("2004-02-01/2005-02-08", ("2004-02-01", "2005-02-08")), - # An interval beginning sometime on February 1, 2004 and ending sometime in February 2005. - # The precision of the interval is not defined; the start endpoint has day precision and the end endpoint has month precision. - ("2004-02-01/2005-02", ("2004-02-01", "2005-02-28")), - # An interval beginning sometime on February 1, 2004 and ending sometime in 2005. - # The start endpoint has day precision and the end endpoint has year precision. - ("2004-02-01/2005", ("2004-02-01", "2005-12-31")), - # An interval beginning sometime in 2005 and ending sometime in February 2006. - ("2005/2006-02", ("2005-01-01", "2006-02-28")), - # An interval beginning sometime in -2005 and ending sometime in February -2004. - ("-2005/-1999-02", ("-2005-01-01", "-1999-02-28")), - # ******************************* LEVEL 1 ********************************* - # Uncertain/Approximate - # uncertain: possibly the year 1984, but not definitely - ("1984?", ("1984-01-01", "1984-12-31", "1983-01-01", "1985-12-31")), - ( - "2004-06-11?", - ("2004-06-11", "2003-05-10", "2005-07-12"), - ), # everything is fuzzy by 100% for "qualification of a date (complete)" (L1) - ("2004-06?", ("2004-06-01", "2004-06-30", "2003-05-01", "2005-07-30")), - # "approximately" the year 1984 - ("1984~", ("1984-01-01", "1984-12-31", "1983-01-01", "1985-12-31")), - # the year is approximately 1984 and even that is uncertain - ("1984%", ("1984-01-01", "1984-12-31", "1982-01-01", "1986-12-31")), - # Unspecified - # some unspecified year in the 1990s. - ("199X", ("1990-01-01", "1999-12-31")), - # some unspecified year in the 1900s. - ("19XX", ("1900-01-01", "1999-12-31")), - # some month in 1999 - ("1999-XX", ("1999-01-01", "1999-12-31")), - # some day in January 1999 - ("1999-01-XX", ("1999-01-01", "1999-01-31")), - # some day in 1999 - ("1999-XX-XX", ("1999-01-01", "1999-12-31")), - # negative unspecified year - ("-01XX", ("-0199-01-01", "-0100-12-31")), - # Uncertain/Approximate lower boundary dates (BCE) - ("-0275~", ("-0275-01-01", "-0275-12-31", "-0276-01-01", "-0274-12-31")), - ("-0001~", ("-0001-01-01", "-0001-12-31", "-0002-01-01", "0000-12-31")), - ("0000~", ("0000-01-01", "0000-12-31", "-0001-01-01", "0001-12-31")), - # Unspecified and qualified - # "circa 17th century" - ("16XX~", ("1600-01-01", "1699-12-31", "1500-01-01", "1799-12-31")), - ("16XX%", ("1600-01-01", "1699-12-31", "1400-01-01", "1899-12-31")), - ("1XXX", ("1000-01-01", "1999-12-31")), - ("1XXX~", ("1000-01-01", "1999-12-31", "0000-01-01", "2999-12-31")), - ("156X~", ("1560-01-01", "1569-12-31", "1550-01-01", "1579-12-31")), - ("-01XX~", ("-0199-01-01", "-0100-12-31", "-0299-01-01", "0000-12-31")), - # L1 Extended Interval - # beginning unknown, end 2006 - # for intervals with an unknown beginning or end, the unknown bound is calculated with the constant DELTA_IF_UNKNOWN (10 years) - ("/2006", ("1996-12-31", "2006-12-31")), - # beginning June 1, 2004, end unknown - ("2004-06-01/", ("2004-06-01", "2014-06-01")), - # beginning open, end 2006 - ("../2006", ("-inf", "2006-12-31")), - # beginning January 1, 2004 with no end date - ("2004-01-01/..", ("2004-01-01", "inf")), - # interval beginning approximately 1984 and ending June 2004 - ("1984~/2004-06", ("1984-01-01", "2004-06-30", "1983-01-01", "2004-06-30")), - # interval beginning 1984 and ending approximately June 2004 - ("1984/2004-06~", ("1984-01-01", "2004-06-30", "1984-01-01", "2005-07-30")), - ("1984?/2004%", ("1984-01-01", "2004-12-31", "1983-01-01", "2006-12-31")), - ("1984~/2004~", ("1984-01-01", "2004-12-31", "1983-01-01", "2005-12-31")), - # interval whose beginning is uncertain but thought to be 1984, and whose end is uncertain and approximate but thought to be 2004 - ("1984-06?/2004-08?", ("1984-06-01", "2004-08-31", "1983-05-01", "2005-09-30")), - ( - "1984-06-02?/2004-08-08~", - ("1984-06-02", "2004-08-08", "1983-05-01", "2005-09-09"), - ), - ("1984-06-02?/", ("1984-06-02", "1994-06-02", "1983-05-01", "1994-06-02")), - # Year exceeding 4 digits - ("Y170000002", ("170000002-01-01", "170000002-12-31")), - ("Y-170000002", ("-170000002-01-01", "-170000002-12-31")), - # Seasons - ("2001-21", ("2001-03-01", "2001-05-31")), - ("2003-22", ("2003-06-01", "2003-08-31")), - ("2000-23", ("2000-09-01", "2000-11-30")), - ("2010-24", ("2010-12-01", "2010-12-31")), - # ******************************* LEVEL 2 ********************************* - # Qualification - # Group qualification: a qualification character to the immediate right of a component applies - # to that component as well as to all components to the left. - # year, month, and day are uncertain and approximate - # this example appears under "group qualification" but actually parses as L1 UncertainOrApproximate - ( - "2004-06-11%", - ("2004-06-11", "2002-04-09", "2006-08-13"), - ), # all parts to the left are fuzzy by 200% - # uncertain year; month, day known - ("2004?-06-11", ("2004-06-11", "2003-06-11", "2005-06-11")), - # year and month are approximate; day known - ("2004-06~-11", ("2004-06-11", "2003-05-11", "2005-07-11")), - # Qualification of individual component: a qualification character to the immediate left - # of the component applies to that component only - # day is approximate; year, month known - ("2004-06-~11", ("2004-06-11", "2004-06-10", "2004-06-12")), - # Year known, month within year is approximate and uncertain - ("2004-%06", ("2004-06-01", "2004-06-30", "2004-04-01", "2004-08-30")), - # Year known, month and day uncertain - ("2004-?06-?11", ("2004-06-11", "2004-05-10", "2004-07-12")), - # Year uncertain, month known, day approximate - ("2004?-06-~11", ("2004-06-11", "2003-06-10", "2005-06-12")), - # Year uncertain and month is both uncertain and approximate - ("?2004-%06", ("2004-06-01", "2004-06-30", "2003-04-01", "2005-08-30")), - # This has the same meaning as the previous example.- NEW SPEC - ("2004?-%06", ("2004-06-01", "2004-06-30", "2003-04-01", "2005-08-30")), - # Year uncertain, month and day approximate - ("2004?-~06-~04", ("2004-06-04", "2003-05-03", "2005-07-05")), - # Year known, month and day approximate - ("2011-~06-~04", ("2011-06-04", "2011-05-03", "2011-07-05")), - # Partial unspecified - # December 25 sometime during the 1560s - ("156X-12-25", ("1560-12-25", "1569-12-25")), - # December 25 sometime during the 1500s - ("15XX-12-25", ("1500-12-25", "1599-12-25")), - # Year and day of month specified, month unspecified - ("1560-XX-25", ("1560-01-25", "1560-12-25")), - ("15XX-12-XX", ("1500-12-01", "1599-12-31")), - # Day specified, year and month unspecified - ("XXXX-XX-23", ("0000-01-23", "9999-12-23")), - # One of a Set - # One of the years 1667, 1668, 1670, 1671, 1672 - ("[1667, 1668, 1670..1672]", ("1667-01-01", "1672-12-31")), - # December 3, 1760 or some earlier date - ("[..1760-12-03]", ("-inf", "1760-12-03")), - # December 1760 or some later month - ("[1760-12..]", ("1760-12-01", "inf")), - # January or February of 1760 or December 1760 or some later month - ("[1760-01, 1760-02, 1760-12..]", ("1760-01-01", "inf")), - # Either the year 1667 or the month December of 1760. - ("[1667, 1760-12]", ("1667-01-01", "1760-12-31")), - # Multiple Dates - # All of the years 1667, 1668, 1670, 1671, 1672 - ("{1667,1668, 1670..1672}", ("1667-01-01", "1672-12-31")), - # The year 1960 and the month December of 1961. - ("{1960, 1961-12}", ("1960-01-01", "1961-12-31")), - # Previously tested masked precision, now eliminated from the spec - # A date during the 1960s - ("196X", ("1960-01-01", "1969-12-31")), - # A date during the 1900s - ("19XX", ("1900-01-01", "1999-12-31")), - # L2 Extended Interval - # Interval with fuzzy day endpoints in June 2004 - ( - "2004-06-~01/2004-06-~20", - ("2004-06-01", "2004-06-20", "2004-05-31", "2004-06-21"), - ), - # The interval began on an unspecified day in June 2004. - ("2004-06-XX/2004-07-03", ("2004-06-01", "2004-07-03")), - # Year Requiring More than Four Digits - Exponential Form - # the year 170000000 - ("Y17E7", ("170000000-01-01", "170000000-12-31")), - # the year -170000000 - ("Y-17E7", ("-170000000-01-01", "-170000000-12-31")), - # L2 significant digits - # Some year between 1900 and 1999, estimated to be 1950 - ("1950S2", ("1950-01-01", "1950-12-31", "1900-01-01", "1999-12-31")), - ("1953S2", ("1953-01-01", "1953-12-31", "1900-01-01", "1999-12-31")), - ("1953S3", ("1953-01-01", "1953-12-31", "1950-01-01", "1959-12-31")), - # Some year between 171010000 and 171999999, estimated to be 171010000 ('S3' indicates a precision of 3 significant digits.) - ( - "Y17101E4S3", - ("171010000-01-01", "171010000-12-31", "171000000-01-01", "171999999-12-31"), - ), - # Some year between 338000 and 338999, estimated to be 338800 - ("Y3388E2S3", ("338800-01-01", "338800-12-31", "338000-01-01", "338999-12-31")), - # some year between 171000000 and 171999999 estimated to be 171010000 - ( - "Y171010000S3", - ("171010000-01-01", "171010000-12-31", "171000000-01-01", "171999999-12-31"), - ), - # L2 Seasons - # Spring southern hemisphere, 2001 - ("2001-29", ("2001-09-01", "2001-11-30")), - # second quarter of 2001 - ("2001-34", ("2001-04-01", "2001-06-30")), -) - -BENCHMARK_EXAMPLES = ( - "2001-02-03", - "2008-12", - "2008", - "-0999", - "2004-01-01T10:10:10+05:00", - "-2005/-1999-02", - "/2006", - "?2004-%06", - "[1667, 1760-12]", - "Y3388E2S3", - "2001-29", -) - -APPROXIMATE_UNCERTAIN_EXAMPLES = ( - # first part of tuple is the input EDTF string, second part is a tuple of booleans: - # uncertain ?, approximate ~, both uncertain and approximate % - ("2004", (False, False, False)), - ("2006-06-11", (False, False, False)), - ("-0999", (False, False, False)), - ("1984?", (True, False, False)), - ("2004-06-11?", (True, False, False)), - ("1984~", (False, True, False)), - ("1984%", (False, False, True)), - ("1984~/2004-06", (False, True, False)), - ("2004-%06", (False, False, True)), - ("2004?-~06-~04", (True, True, False)), - ("2004?-06-04", (True, False, False)), - ("2011-~06-~04", (False, True, False)), - ("2004-06-~01/2004-06-~20", (False, True, False)), - ("156X~", (False, True, False)), - ("?1945/1959", (True, False, False)), - ("?1945", (True, False, False)), - ("?1945-01", (True, False, False)), - ("?1945-01-01", (True, False, False)), - ("~1945/1959", (False, True, False)), - ("~1945", (False, True, False)), - ("~1945-01", (False, True, False)), - ("~1945-01-01", (False, True, False)), - ("%1945/1959", (False, False, True)), - ("%1945", (False, False, True)), - ("%1945-01", (False, False, True)), - ("%1945-01-01", (False, False, True)), -) - -BAD_EXAMPLES = ( - # parentheses are not used for group qualification in the 2018 spec - None, - "", - "not a edtf string", - "Y17E7-12-26", # Y indicates that the date is year only - "2016-13-08", # wrong day order - "2016-02-39", # out of range - "-0000-01-01", # negative zero year - "2004-(06)?-11", # uncertain month, year and day known - OLD SPEC - "2004-06-(11)~", # day is approximate; year, month known - OLD SPEC - "2004-(06)%", # Year known, month within year is approximate and uncertain - OLD SPEC - "2004-(06-11)?", # Year known, month and day uncertain - OLD SPEC - "2004?-06-(11)~", # Year uncertain, month known, day approximate - OLD SPEC - "(2004-(06)~)?", # Year uncertain and month is both uncertain and approximate - OLD SPEC - "(2004)?-06-04~", # Year uncertain, month and day approximate.- OLD SPEC - "(2011)-06-04~", # Year known, month and day approximate. Note that this has the same meaning as the following.- OLD SPEC - "2011-(06-04)~", # Year known, month and day approximate.- OLD SPEC - "2004-06-(01)~/2004-06-(20)~", # An interval in June 2004 beginning approximately the first and ending approximately the 20th - OLD SPEC -) - - -def iso_to_struct_time(iso_date): - """Convert YYYY-mm-dd date strings or infinities to time structs or float infinities.""" - if iso_date == "inf": - return float("inf") - elif iso_date == "-inf": - return float("-inf") - - if iso_date[0] == "-": - is_negative = True - iso_date = iso_date[1:] - else: - is_negative = False - y, mo, d = (int(i) for i in iso_date.split("-")) - if is_negative: - y *= -1 - return struct_time([y, mo, d] + TIME_EMPTY_TIME + TIME_EMPTY_EXTRAS) - - -@pytest.mark.parametrize("test_input,expected_tuple", EXAMPLES) -def test_edtf_examples(test_input, expected_tuple): - """Test parsing of EDTF strings with expected outputs.""" - result = parse(test_input) - assert isinstance(result, EDTFObject), "Result should be an instance of EDTFObject" - - # Extract only the date part if the result includes a time. - result_date = str(result) - if "T" in result_date: - result_date = result_date.split("T")[0] - - # Unpack expected results based on their count - if len(expected_tuple) == 1: - assert result_date == expected_tuple[0], ( - f"Expected {expected_tuple[0]}, got {result_date}" - ) - elif len(expected_tuple) == 2: - lower_strict = iso_to_struct_time(expected_tuple[0]) - upper_strict = iso_to_struct_time(expected_tuple[1]) - assert result.lower_strict() == lower_strict, ( - f"Lower strict date does not match. Expected {lower_strict}, got {result.lower_strict()}" - ) - assert result.upper_strict() == upper_strict, ( - f"Upper strict date does not match. Expected {upper_strict}, got {result.upper_strict()}" - ) - elif len(expected_tuple) == 3: - strict_date = iso_to_struct_time(expected_tuple[0]) - lower_fuzzy = iso_to_struct_time(expected_tuple[1]) - upper_fuzzy = iso_to_struct_time(expected_tuple[2]) - assert result.lower_strict() == strict_date, ( - f"Lower strict date does not match. Expected {strict_date}, got {result.lower_strict()}" - ) - assert result.upper_strict() == strict_date, ( - f"Upper strict date does not match. Expected {strict_date}, got {result.upper_strict()}" - ) - assert result.lower_fuzzy() == lower_fuzzy, ( - f"Lower fuzzy date does not match. Expected {lower_fuzzy}, got {result.lower_fuzzy()}" - ) - assert result.upper_fuzzy() == upper_fuzzy, ( - f"Upper fuzzy date does not match. Expected {upper_fuzzy}, got {result.upper_fuzzy()}" - ) - elif len(expected_tuple) == 4: - lower_strict = iso_to_struct_time(expected_tuple[0]) - upper_strict = iso_to_struct_time(expected_tuple[1]) - lower_fuzzy = iso_to_struct_time(expected_tuple[2]) - upper_fuzzy = iso_to_struct_time(expected_tuple[3]) - assert result.lower_strict() == lower_strict, ( - f"Lower strict date does not match. Expected {lower_strict}, got {result.lower_strict()}" - ) - assert result.upper_strict() == upper_strict, ( - f"Upper strict date does not match. Expected {upper_strict}, got {result.upper_strict()}" - ) - assert result.lower_fuzzy() == lower_fuzzy, ( - f"Lower fuzzy date does not match. Expected {lower_fuzzy}, got {result.lower_fuzzy()}" - ) - assert result.upper_fuzzy() == upper_fuzzy, ( - f"Upper fuzzy date does not match. Expected {upper_fuzzy}, got {result.upper_fuzzy()}" - ) - - -@pytest.mark.parametrize("bad_input", BAD_EXAMPLES) -def test_non_parsing(bad_input): - """Test that non-parsing inputs correctly raise an exception.""" - with pytest.raises(EDTFParseException): - parse(bad_input) - - -@pytest.mark.parametrize("bad_input", [None, ""]) -def test_empty_input(bad_input): - """Test that empty input raises a specific exception.""" - with pytest.raises(EDTFParseException) as exc_info: - parse(bad_input) - assert "You must supply some input text" in str(exc_info.value) - - -def test_comparisons(): - """Test comparisons between parsed EDTF objects and standard dates.""" - d1 = parse("1979-08~") - d2 = parse("1979-08~") - d3 = parse("1979-09-16") - d4 = parse("1979-08-16") - d5 = date(1979, 8, 16) - d6 = date(1970, 9, 16) - - assert d1 == d2 - assert d1 != d3 - assert d1 >= d2 - assert d3 > d1 - assert d1 < d4 - assert d4 == d5 - assert d1 < d5 - assert d1 > d6 - - -@pytest.mark.benchmark -@pytest.mark.parametrize("test_input", BENCHMARK_EXAMPLES) -def test_benchmark_parser(benchmark, test_input): - """Benchmark parsing of selected EDTF strings.""" - benchmark(parse, test_input) - - -@pytest.mark.parametrize("test_input,expected_tuple", APPROXIMATE_UNCERTAIN_EXAMPLES) -def test_approximate_uncertain(test_input, expected_tuple): - """Test parsing of EDTF strings and check .is_uncertain, .is_approximate, - and .is_uncertain_and_approximate properties. The expected_tuple should have three - values, the first should be a boolean indicating if the date is uncertain, - the second should be a boolean indicating if the date is approximate, and the - third should be a boolean indicating if the date is both uncertain and approximate.""" - result = parse(test_input) - assert isinstance(result, EDTFObject), "Result should be an instance of EDTFObject" - assert result.is_uncertain == expected_tuple[0] - assert result.is_approximate == expected_tuple[1] - assert result.is_uncertain_and_approximate == expected_tuple[2]