Name | chrontext JSON |
Version |
0.8.16
JSON |
| download |
home_page | None |
Summary | Hybrid SPARQL query engine for timeseries data |
upload_time | 2024-04-30 11:56:32 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.9 |
license | None |
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"
}