chrontext


Namechrontext JSON
Version 0.8.16 PyPI version JSON
download
home_pageNone
SummaryHybrid SPARQL query engine for timeseries data
upload_time2024-04-30 11:56:32
maintainerNone
docs_urlNone
authorNone
requires_python>=3.9
licenseNone
keywords rdf graph arrow sparql timeseries
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # chrontext: High-performance hybrid query engine for knowledge graphs and time-series
Chrontext allows you to use your knowledge graph to access time-series data. It uses a commodity SPARQL Triplestore and your existing infrastructure for time-series.
It currently supports time-series stored in Google Cloud BigQuery (SQL) and OPC UA HA, but can easily be extended to other APIs and databases.
![Chrontext Architecture](doc/chrontext_arch.png)

Chrontext forms a semantic layer that allows self-service data access, abstracting away technical infrastructure. 
Users can create query-based inputs for data products, that maintains these data products as the knowledge graph is maintained, and that can be deployed across heterogeneous on-premise and cloud infrastructures with the same API. 

Chrontext is a high-performance Python library built in Rust using [Polars](https://www.pola.rs/), and relies heavily on packages from the [Oxigraph](https://github.com/oxigraph/oxigraph) project. 
Chrontext works with [Apache Arrow](https://arrow.apache.org/), prefers time-series transport using [Apache Arrow Flight](https://arrow.apache.org/docs/format/Flight.html) and delivers results as [Polars](https://www.pola.rs/) DataFrames.

Please reach out to [Data Treehouse](https://www.data-treehouse.com/contact-8) if you would like help trying Chrontext, or require support for a different time-series backend. 

## Installing
Chrontext is in pip, just use:
```shell
pip install chrontext
```
The API is documented [HERE](https://datatreehouse.github.io/chrontext/chrontext/chrontext.html). 

## Queries in python
We can make queries in Python. The code assumes that we have a SPARQL-endpoint and BigQuery set up with time-series.
```python
from chrontext import *
import os
SCHEMA = os.getenv("SCHEMA")
BIGQUERY_CONN = os.getenv("BIGQUERY_CONN")

tables = [
    TimeseriesTable(
        resource_name="nist",
        schema=SCHEMA,
        time_series_table="nist2",
        value_column="VALUE",
        timestamp_column="TIMESTAMP",
        identifier_column="external_id",
    ),
]
bq_db = TimeseriesBigQueryDatabase(key=os.getenv("BIGQUERY_CONN"), tables=tables)
engine = Engine(timeseries_bigquery_db=bq_db, sparql_endpoint=SPARQL)
engine.init()

df = engine.query("""
    PREFIX xsd:<http://www.w3.org/2001/XMLSchema#>
    PREFIX ct:<https://github.com/DataTreehouse/chrontext#>
    PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
    PREFIX rds: <https://github.com/DataTreehouse/solar_demo/rds_power#> 
    SELECT ?inv_path WHERE {
        # We are navigating th Solar PV site "Metropolis", identifying every inverter. 
        ?site a rds:Site .
        ?site rdfs:label "Metropolis" .
        ?site rds:functionalAspect+ ?inv .    
        ?inv a rds:TBB .                    # RDS code TBB: Inverter
        ?inv rds:path ?inv_path .
        
        # Find the timeseries associated with the inverter
        ?inv ct:hasTimeseries ?ts_pow .    
        DT {
            timestamp= ?t,
            labels= (?ts_pow:"InvPDC_kW"),
            interval= "10m",
            from= "2018-12-25T00:00:00Z",
            aggregation = "avg" }
        }
    ORDER BY ?inv_path ?t
""")
```

This produces the following DataFrame:

| inv_path                  | t                   | ts_pow_value_avg |
|---------------------------| ---                 | ---              |
| str                       | datetime[ns]        | f64              |
| =<Metropolis>.A1.RG1.TBB1 | 2018-12-25 00:00:00 | 0.0              |
| …                         | …                   | …                |
| =<Metropolis>.A5.RG9.TBB1 | 2019-01-01 04:50:00 | 0.0              |

Not much power being produced at night in the middle of winter :-)

## API
The API is documented [HERE](https://datatreehouse.github.io/chrontext/chrontext/chrontext.html).

## References
Chrontext is joint work by Magnus Bakken and Professor [Ahmet Soylu](https://www.oslomet.no/om/ansatt/ahmetsoy/) at OsloMet.
To read more about Chrontext, read the article [Chrontext: Portable Sparql Queries Over Contextualised Time Series Data in Industrial Settings](https://www.sciencedirect.com/science/article/pii/S0957417423006516).

## License
All code produced since August 1st. 2023 is copyrighted to [Data Treehouse AS](https://www.data-treehouse.com/) with an Apache 2.0 license unless otherwise noted.

All code which was produced before August 1st. 2023 copyrighted to [Prediktor AS](https://www.prediktor.com/) with an Apache 2.0 license unless otherwise noted, and has been financed by [The Research Council of Norway](https://www.forskningsradet.no/en/) (grant no. 316656) and [Prediktor AS](https://www.prediktor.com/) as part of a PhD Degree. The code at this state is archived in the repository at [https://github.com/DataTreehouse/chrontext](https://github.com/DataTreehouse/chrontext).

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "chrontext",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": null,
    "keywords": "rdf, graph, arrow, sparql, timeseries",
    "author": null,
    "author_email": "Magnus Bakken <magnus@data-treehouse.com>",
    "download_url": "https://files.pythonhosted.org/packages/2e/85/0e49f7a99cf1fbdd93f4ae22e0fe4d5987e30ce40de7ebc32b1b5386b3d7/chrontext-0.8.16.tar.gz",
    "platform": null,
    "description": "# chrontext: High-performance hybrid query engine for knowledge graphs and time-series\nChrontext allows you to use your knowledge graph to access time-series data. It uses a commodity SPARQL Triplestore and your existing infrastructure for time-series.\nIt currently supports time-series stored in Google Cloud BigQuery (SQL) and OPC UA HA, but can easily be extended to other APIs and databases.\n![Chrontext Architecture](doc/chrontext_arch.png)\n\nChrontext forms a semantic layer that allows self-service data access, abstracting away technical infrastructure. \nUsers can create query-based inputs for data products, that maintains these data products as the knowledge graph is maintained, and that can be deployed across heterogeneous on-premise and cloud infrastructures with the same API. \n\nChrontext is a high-performance Python library built in Rust using [Polars](https://www.pola.rs/), and relies heavily on packages from the [Oxigraph](https://github.com/oxigraph/oxigraph) project. \nChrontext works with [Apache Arrow](https://arrow.apache.org/), prefers time-series transport using [Apache Arrow Flight](https://arrow.apache.org/docs/format/Flight.html) and delivers results as [Polars](https://www.pola.rs/) DataFrames.\n\nPlease reach out to [Data Treehouse](https://www.data-treehouse.com/contact-8) if you would like help trying Chrontext, or require support for a different time-series backend. \n\n## Installing\nChrontext is in pip, just use:\n```shell\npip install chrontext\n```\nThe API is documented [HERE](https://datatreehouse.github.io/chrontext/chrontext/chrontext.html). \n\n## Queries in python\nWe can make queries in Python. The code assumes that we have a SPARQL-endpoint and BigQuery set up with time-series.\n```python\nfrom chrontext import *\nimport os\nSCHEMA = os.getenv(\"SCHEMA\")\nBIGQUERY_CONN = os.getenv(\"BIGQUERY_CONN\")\n\ntables = [\n    TimeseriesTable(\n        resource_name=\"nist\",\n        schema=SCHEMA,\n        time_series_table=\"nist2\",\n        value_column=\"VALUE\",\n        timestamp_column=\"TIMESTAMP\",\n        identifier_column=\"external_id\",\n    ),\n]\nbq_db = TimeseriesBigQueryDatabase(key=os.getenv(\"BIGQUERY_CONN\"), tables=tables)\nengine = Engine(timeseries_bigquery_db=bq_db, sparql_endpoint=SPARQL)\nengine.init()\n\ndf = engine.query(\"\"\"\n    PREFIX xsd:<http://www.w3.org/2001/XMLSchema#>\n    PREFIX ct:<https://github.com/DataTreehouse/chrontext#>\n    PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> \n    PREFIX rds: <https://github.com/DataTreehouse/solar_demo/rds_power#> \n    SELECT ?inv_path WHERE {\n        # We are navigating th Solar PV site \"Metropolis\", identifying every inverter. \n        ?site a rds:Site .\n        ?site rdfs:label \"Metropolis\" .\n        ?site rds:functionalAspect+ ?inv .    \n        ?inv a rds:TBB .                    # RDS code TBB: Inverter\n        ?inv rds:path ?inv_path .\n        \n        # Find the timeseries associated with the inverter\n        ?inv ct:hasTimeseries ?ts_pow .    \n        DT {\n            timestamp= ?t,\n            labels= (?ts_pow:\"InvPDC_kW\"),\n            interval= \"10m\",\n            from= \"2018-12-25T00:00:00Z\",\n            aggregation = \"avg\" }\n        }\n    ORDER BY ?inv_path ?t\n\"\"\")\n```\n\nThis produces the following DataFrame:\n\n| inv_path                  | t                   | ts_pow_value_avg |\n|---------------------------| ---                 | ---              |\n| str                       | datetime[ns]        | f64              |\n| =<Metropolis>.A1.RG1.TBB1 | 2018-12-25 00:00:00 | 0.0              |\n| \u2026                         | \u2026                   | \u2026                |\n| =<Metropolis>.A5.RG9.TBB1 | 2019-01-01 04:50:00 | 0.0              |\n\nNot much power being produced at night in the middle of winter :-)\n\n## API\nThe API is documented [HERE](https://datatreehouse.github.io/chrontext/chrontext/chrontext.html).\n\n## References\nChrontext is joint work by Magnus Bakken and Professor [Ahmet Soylu](https://www.oslomet.no/om/ansatt/ahmetsoy/) at OsloMet.\nTo read more about Chrontext, read the article [Chrontext: Portable Sparql Queries Over Contextualised Time Series Data in Industrial Settings](https://www.sciencedirect.com/science/article/pii/S0957417423006516).\n\n## License\nAll code produced since August 1st. 2023 is copyrighted to [Data Treehouse AS](https://www.data-treehouse.com/) with an Apache 2.0 license unless otherwise noted.\n\nAll code which was produced before August 1st. 2023 copyrighted to [Prediktor AS](https://www.prediktor.com/) with an Apache 2.0 license unless otherwise noted, and has been financed by [The Research Council of Norway](https://www.forskningsradet.no/en/) (grant no. 316656) and [Prediktor AS](https://www.prediktor.com/) as part of a PhD Degree. The code at this state is archived in the repository at [https://github.com/DataTreehouse/chrontext](https://github.com/DataTreehouse/chrontext).\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Hybrid SPARQL query engine for timeseries data",
    "version": "0.8.16",
    "project_urls": {
        "Changelog": "https://github.com/DataTreehouse/chrontext/releases",
        "Documentation": "https://datatreehouse.github.io/chrontext/chrontext/chrontext.html",
        "Homepage": "https://github.com/DataTreehouse/chrontext",
        "Repository": "https://github.com/DataTreehouse/chrontext"
    },
    "split_keywords": [
        "rdf",
        " graph",
        " arrow",
        " sparql",
        " timeseries"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "9323c5491df221169fdbbb538ddbe2ad628745ee24785e472be4ed6a51000d5e",
                "md5": "a068bd295fb72630970312bff818d82d",
                "sha256": "84e69a6e108eb556370d200f2b1935805de2e1565c5d4a39ab4c5bee61dedfd0"
            },
            "downloads": -1,
            "filename": "chrontext-0.8.16-cp310-cp310-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "a068bd295fb72630970312bff818d82d",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 20710083,
            "upload_time": "2024-04-30T11:48:37",
            "upload_time_iso_8601": "2024-04-30T11:48:37.435305Z",
            "url": "https://files.pythonhosted.org/packages/93/23/c5491df221169fdbbb538ddbe2ad628745ee24785e472be4ed6a51000d5e/chrontext-0.8.16-cp310-cp310-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "a8908014bc7028f759c8758391f4d4e8b104ab9deda0e057bca4d5aad5e21ce7",
                "md5": "097c292806dc3b03770cdf02022a027c",
                "sha256": "42542a0196ded712aff6419fc8b0b819673067905436df7d6a4a075389ed9dc7"
            },
            "downloads": -1,
            "filename": "chrontext-0.8.16-cp310-cp310-macosx_12_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "097c292806dc3b03770cdf02022a027c",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 20719068,
            "upload_time": "2024-04-30T11:49:17",
            "upload_time_iso_8601": "2024-04-30T11:49:17.062997Z",
            "url": "https://files.pythonhosted.org/packages/a8/90/8014bc7028f759c8758391f4d4e8b104ab9deda0e057bca4d5aad5e21ce7/chrontext-0.8.16-cp310-cp310-macosx_12_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "48f2e3c3d7ec5e67588675b8102797c8f0c934150e92ef45d599041b37fc2fe9",
                "md5": "96846bfad37b8b876b79ac07e5fab88a",
                "sha256": "b4ad8290b2b27b267c51eab2fffcec0a4c80570dea1c2db7a54b1eb97954b99a"
            },
            "downloads": -1,
            "filename": "chrontext-0.8.16-cp310-cp310-manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "96846bfad37b8b876b79ac07e5fab88a",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 29705281,
            "upload_time": "2024-04-30T11:56:34",
            "upload_time_iso_8601": "2024-04-30T11:56:34.443940Z",
            "url": "https://files.pythonhosted.org/packages/48/f2/e3c3d7ec5e67588675b8102797c8f0c934150e92ef45d599041b37fc2fe9/chrontext-0.8.16-cp310-cp310-manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "57bdc7104373b2bdd6120e9de41a40e59de2c47aa9aafe086a7753f7f3f42375",
                "md5": "145ba7ad54fd666a5de0286718b0fa7d",
                "sha256": "1bbf23382074bbf44fd92f5aaaae8d0bc14c31786b93df9a069f31cdfff94ff6"
            },
            "downloads": -1,
            "filename": "chrontext-0.8.16-cp310-none-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "145ba7ad54fd666a5de0286718b0fa7d",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 23550633,
            "upload_time": "2024-04-30T12:09:18",
            "upload_time_iso_8601": "2024-04-30T12:09:18.702899Z",
            "url": "https://files.pythonhosted.org/packages/57/bd/c7104373b2bdd6120e9de41a40e59de2c47aa9aafe086a7753f7f3f42375/chrontext-0.8.16-cp310-none-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "ed7677177931e305ae4afb03f61c35fc4c5c27eb208764b4bc8efd881aab7cfe",
                "md5": "4c6c2cb1541b264dd14e59017bc8e01b",
                "sha256": "f3b1255f3abd467e8184fe953c1b2f95840e9223c32475ec93a795a0fb464df1"
            },
            "downloads": -1,
            "filename": "chrontext-0.8.16-cp311-cp311-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "4c6c2cb1541b264dd14e59017bc8e01b",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 20714006,
            "upload_time": "2024-04-30T12:00:40",
            "upload_time_iso_8601": "2024-04-30T12:00:40.614717Z",
            "url": "https://files.pythonhosted.org/packages/ed/76/77177931e305ae4afb03f61c35fc4c5c27eb208764b4bc8efd881aab7cfe/chrontext-0.8.16-cp311-cp311-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "fd3bd1194903272e32c3892bccdd0e212fabd7bea30173bf288e94cd9c4686e4",
                "md5": "926506bb4cde392957f0ea8d706f83d4",
                "sha256": "0168b8a74090c4515982a95bb7b28d099738ced914ac33477919c98ed1ac96ac"
            },
            "downloads": -1,
            "filename": "chrontext-0.8.16-cp311-cp311-macosx_12_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "926506bb4cde392957f0ea8d706f83d4",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 20721697,
            "upload_time": "2024-04-30T11:50:58",
            "upload_time_iso_8601": "2024-04-30T11:50:58.609672Z",
            "url": "https://files.pythonhosted.org/packages/fd/3b/d1194903272e32c3892bccdd0e212fabd7bea30173bf288e94cd9c4686e4/chrontext-0.8.16-cp311-cp311-macosx_12_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "6a8c4d99d464e058291c89c7d4d098bd9417d00fae80dc5a264e405f0ef4a903",
                "md5": "12c75ec4e4ca778a0420f2e49968ac7b",
                "sha256": "fd7c997d635a3e74cfc8e91f5e2262a0501e0429f82dcecfa7969a7c5f5f2928"
            },
            "downloads": -1,
            "filename": "chrontext-0.8.16-cp311-cp311-manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "12c75ec4e4ca778a0420f2e49968ac7b",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 29705545,
            "upload_time": "2024-04-30T11:56:49",
            "upload_time_iso_8601": "2024-04-30T11:56:49.155330Z",
            "url": "https://files.pythonhosted.org/packages/6a/8c/4d99d464e058291c89c7d4d098bd9417d00fae80dc5a264e405f0ef4a903/chrontext-0.8.16-cp311-cp311-manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "6d660e5a390d9e635b48fa955b4d098c79ac621f37563b10d67070716281dd6b",
                "md5": "b0dc07117e544e4dbdf280156d1de447",
                "sha256": "ede3dede2be74a733a0985e09973c5a7181fb05b40c0a3434eb28e8ddd0187f1"
            },
            "downloads": -1,
            "filename": "chrontext-0.8.16-cp311-none-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "b0dc07117e544e4dbdf280156d1de447",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 23550274,
            "upload_time": "2024-04-30T12:08:30",
            "upload_time_iso_8601": "2024-04-30T12:08:30.287559Z",
            "url": "https://files.pythonhosted.org/packages/6d/66/0e5a390d9e635b48fa955b4d098c79ac621f37563b10d67070716281dd6b/chrontext-0.8.16-cp311-none-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "69b65a52d94986c2e0d7bf3dae68134f3de4f6ca415cd181744bc7abacfbc13c",
                "md5": "ca52ac79f1377045ea1ea2870bc792bf",
                "sha256": "8aa1d3f6c7ec1d1942534aa4acd51856727fd5a8896b1de5541c41a79b437656"
            },
            "downloads": -1,
            "filename": "chrontext-0.8.16-cp38-cp38-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "ca52ac79f1377045ea1ea2870bc792bf",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.9",
            "size": 20709843,
            "upload_time": "2024-04-30T12:03:21",
            "upload_time_iso_8601": "2024-04-30T12:03:21.423942Z",
            "url": "https://files.pythonhosted.org/packages/69/b6/5a52d94986c2e0d7bf3dae68134f3de4f6ca415cd181744bc7abacfbc13c/chrontext-0.8.16-cp38-cp38-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "3b3c9c590d2af5844b7945ea7da8c0b7e2bbec992e197816f63dc46730448990",
                "md5": "e5ab2550a93c67fb9e39dcd92ffd1fab",
                "sha256": "88e6632afca1e0fde78ca24f9d19b8b88b00c4890485ecd216abe8f869da64a9"
            },
            "downloads": -1,
            "filename": "chrontext-0.8.16-cp38-cp38-macosx_12_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "e5ab2550a93c67fb9e39dcd92ffd1fab",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.9",
            "size": 20719501,
            "upload_time": "2024-04-30T11:48:58",
            "upload_time_iso_8601": "2024-04-30T11:48:58.026122Z",
            "url": "https://files.pythonhosted.org/packages/3b/3c/9c590d2af5844b7945ea7da8c0b7e2bbec992e197816f63dc46730448990/chrontext-0.8.16-cp38-cp38-macosx_12_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "6651e77e53134de8b6b09e248ef67ee6a277d4f38bb46bb33d59e20d560d1666",
                "md5": "927d4e6a6d0cb5ca08e6c3cb966ebf79",
                "sha256": "f328466c393ce4e9626077b05059a8a2bfcbf99e8478ad2fa8f393d80bddab77"
            },
            "downloads": -1,
            "filename": "chrontext-0.8.16-cp38-cp38-manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "927d4e6a6d0cb5ca08e6c3cb966ebf79",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.9",
            "size": 29707928,
            "upload_time": "2024-04-30T11:56:29",
            "upload_time_iso_8601": "2024-04-30T11:56:29.042363Z",
            "url": "https://files.pythonhosted.org/packages/66/51/e77e53134de8b6b09e248ef67ee6a277d4f38bb46bb33d59e20d560d1666/chrontext-0.8.16-cp38-cp38-manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "1e0297ea3fe055b8076f9c6f9f96b23232fe2fbf2e8036201b5a44694f3c31ed",
                "md5": "4a53981b70ff9cb3b2e913e9ebb49fa2",
                "sha256": "7254db898f63392674d11c0ea102ddb3af76d3d5bca095a0e60338e6a9c4a036"
            },
            "downloads": -1,
            "filename": "chrontext-0.8.16-cp38-none-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "4a53981b70ff9cb3b2e913e9ebb49fa2",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.9",
            "size": 23551053,
            "upload_time": "2024-04-30T12:09:00",
            "upload_time_iso_8601": "2024-04-30T12:09:00.954086Z",
            "url": "https://files.pythonhosted.org/packages/1e/02/97ea3fe055b8076f9c6f9f96b23232fe2fbf2e8036201b5a44694f3c31ed/chrontext-0.8.16-cp38-none-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "59e44a7d56c256554432f9d842fd2e4754d40a3a607df02d26109f5f099a2d56",
                "md5": "93ffaccb4cff5cd1e9658f9366d5dd8b",
                "sha256": "79b8025c111a32a8c8a8ae657fee00c258828a7e05ea5602c58f8f8a741986c3"
            },
            "downloads": -1,
            "filename": "chrontext-0.8.16-cp39-cp39-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "93ffaccb4cff5cd1e9658f9366d5dd8b",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 20709926,
            "upload_time": "2024-04-30T12:00:50",
            "upload_time_iso_8601": "2024-04-30T12:00:50.279178Z",
            "url": "https://files.pythonhosted.org/packages/59/e4/4a7d56c256554432f9d842fd2e4754d40a3a607df02d26109f5f099a2d56/chrontext-0.8.16-cp39-cp39-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "3cc9d87b1f3fe377e000752aa83ef35dcf5561230c5a8337885d4c14c2f39001",
                "md5": "bbb0905fbcdc86bd1d2bd75cdd4cfc44",
                "sha256": "94eb44a7df4e67db02f9bdf10de77df785fd1ac38c06d6d75c5acd6f189950dd"
            },
            "downloads": -1,
            "filename": "chrontext-0.8.16-cp39-cp39-macosx_12_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "bbb0905fbcdc86bd1d2bd75cdd4cfc44",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 20719069,
            "upload_time": "2024-04-30T11:49:41",
            "upload_time_iso_8601": "2024-04-30T11:49:41.962185Z",
            "url": "https://files.pythonhosted.org/packages/3c/c9/d87b1f3fe377e000752aa83ef35dcf5561230c5a8337885d4c14c2f39001/chrontext-0.8.16-cp39-cp39-macosx_12_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "b536806f9f585c5ac01fc63ea925c71a885fe5dbb5013158296644ec37d972e6",
                "md5": "84d746b6184f6f0b3f92212bf1ca7a6b",
                "sha256": "cc23ec1bbcce91ab488d4f391115d812e8e199075ea3a0d513eb20a8d5087c66"
            },
            "downloads": -1,
            "filename": "chrontext-0.8.16-cp39-cp39-manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "84d746b6184f6f0b3f92212bf1ca7a6b",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 29706657,
            "upload_time": "2024-04-30T11:56:46",
            "upload_time_iso_8601": "2024-04-30T11:56:46.550998Z",
            "url": "https://files.pythonhosted.org/packages/b5/36/806f9f585c5ac01fc63ea925c71a885fe5dbb5013158296644ec37d972e6/chrontext-0.8.16-cp39-cp39-manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "7745ed3a7f4b188fe0de84f1bf351c7f0050842594acd2a05e3e6db3f2733db2",
                "md5": "f609de3542072b0919ebe870d41cba26",
                "sha256": "91633a387e727c38afd5aa528b0f54c7fc43ab3b0897b5f0a08261068f823447"
            },
            "downloads": -1,
            "filename": "chrontext-0.8.16-cp39-none-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "f609de3542072b0919ebe870d41cba26",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 23551101,
            "upload_time": "2024-04-30T12:09:04",
            "upload_time_iso_8601": "2024-04-30T12:09:04.704697Z",
            "url": "https://files.pythonhosted.org/packages/77/45/ed3a7f4b188fe0de84f1bf351c7f0050842594acd2a05e3e6db3f2733db2/chrontext-0.8.16-cp39-none-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "2e850e49f7a99cf1fbdd93f4ae22e0fe4d5987e30ce40de7ebc32b1b5386b3d7",
                "md5": "c6ab2d74d690b6b52362f4a6e9657f57",
                "sha256": "283255946765bba19e9e49608d08d2833e73982d383edb010c693656baf3c23c"
            },
            "downloads": -1,
            "filename": "chrontext-0.8.16.tar.gz",
            "has_sig": false,
            "md5_digest": "c6ab2d74d690b6b52362f4a6e9657f57",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 8447736,
            "upload_time": "2024-04-30T11:56:32",
            "upload_time_iso_8601": "2024-04-30T11:56:32.187393Z",
            "url": "https://files.pythonhosted.org/packages/2e/85/0e49f7a99cf1fbdd93f4ae22e0fe4d5987e30ce40de7ebc32b1b5386b3d7/chrontext-0.8.16.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-04-30 11:56:32",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "DataTreehouse",
    "github_project": "chrontext",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "chrontext"
}
        
Elapsed time: 0.31458s