tzfpy


Nametzfpy JSON
Version 0.16.4 PyPI version JSON
download
home_pageNone
SummaryProbably the fastest Python package to convert longitude/latitude to timezone name
upload_time2025-02-04 07:39:28
maintainerNone
docs_urlNone
authorNone
requires_python>=3.9
licenseMIT
keywords tzf timezone timezone-name timezone-lookup gps gps-coordinates gps-location longitude latitude
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # tzfpy

- [![PyPI](https://img.shields.io/pypi/v/tzfpy)](https://pypi.org/project/tzfpy/)
- [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/tzfpy)](https://pypi.org/project/tzfpy/)
- ![PyPI - Downloads](https://img.shields.io/pypi/dd/tzfpy)
- [![Anaconda-Server Badge](https://anaconda.org/conda-forge/tzfpy/badges/version.svg)](https://anaconda.org/conda-forge/tzfpy)
- ![Conda Downloads](https://img.shields.io/conda/d/conda-forge/tzfpy)
- ![Conda Platform](https://img.shields.io/conda/p/conda-forge/tzfpy)

![](https://github.com/ringsaturn/tzf/blob/gh-pages/docs/tzf-social-media.png?raw=true)

> [!NOTE]
>
> 0. It's probably the fastest Python package to convert longitude/latitude to
>    timezone name.
> 1. This package use a simplified polygon data and not so accurate around
>    borders.
> 2. Rust use lazy init, so first calling will be a little slow.
> 3. Use about 40MB memory.
> 4. It's tested under Python 3.9+.
> 5. Try it online:
>     - <https://ringsaturn.github.io/tzf-web/>, powered by tzf-rs and WebAssembly

## Usage

Please note that new timezone names may be added to tzfpy, which could be
incompatible with old version package like pytz or tzdata. As an option, tzfpy
supports install compatible version of those packages with extra params.

```bash
# Install just tzfpy
pip install tzfpy

# Install with pytz
pip install "tzfpy[pytz]"

# Install with tzdata. https://github.com/python/tzdata
pip install "tzfpy[tzdata]"

# Install via conda, see more in https://github.com/conda-forge/tzfpy-feedstock
conda install -c conda-forge tzfpy
```

```python
>>> from tzfpy import get_tz, get_tzs
>>> get_tz(116.3883, 39.9289)  # in (longitude, latitude) order.
'Asia/Shanghai'
>>> get_tzs(87.4160, 44.0400)  # in (longitude, latitude) order.
['Asia/Shanghai', 'Asia/Urumqi']
```

## Performance

Benchmark runs under
[`v0.16.0`](https://github.com/ringsaturn/tzfpy/releases/tag/v0.16.0) on my
MacBook Pro with Apple M3 Max.

```bash
pytest --benchmark-warmup=on --benchmark-warmup-iterations=100 tests/test_bench.py
```

```
----------------------------------------------------------- benchmark: 1 tests -----------------------------------------------------------
Name (time in ns)                 Min         Max        Mean    StdDev      Median       IQR   Outliers  OPS (Kops/s)  Rounds  Iterations
------------------------------------------------------------------------------------------------------------------------------------------
test_tzfpy_random_cities     699.9937  7,175.0022  1,562.1433  646.9249  1,441.6990  833.3940  13716;984      640.1461   41026          10
------------------------------------------------------------------------------------------------------------------------------------------

Legend:
  Outliers: 1 Standard Deviation from Mean; 1.5 IQR (InterQuartile Range) from 1st Quartile and 3rd Quartile.
  OPS: Operations Per Second, computed as 1 / Mean
Results (1.81s):
         1 passed
```

Or you can view more benchmark results on
[GitHub Action summary page](https://github.com/ringsaturn/tzfpy/actions/workflows/Test.yml).

## Background

`tzfpy` was originally written in Go named [`tzf`][tzf] and use CGO compiled to
`.so` to be used by Python. Since `v0.11.0` it's rewritten in Rust built on PyO3
and [`tzf-rs`][tzf-rs], a tzf's Rust port.

I have written an article about the history of tzf, its Rust port, and its Rust
port's Python binding; you can view it
[here](https://blog.ringsaturn.me/en/posts/2023-01-31-history-of-tzf/).

[tzf]: https://github.com/ringsaturn/tzf
[tzf-rs]: https://github.com/ringsaturn/tzf-rs

## Project status

`tzfpy` is still under development and it has been deployed into
[my current company](https://github.com/caiyunapp)'s production environment and
it works well under high concurrency for weather API and location related data
processed. So I think it's ready to be used in production with caution.

I haven't release the v1.0.0 yet and I will try my best to keep current API as
stable as possible(only 3 functions). I'm still working on performance
improvements on Rust side, which is a release blocker for both tzf-rs and tzfpy.

## Compare with other packages

Please note that directly compare with other packages is not fair, because they
have different use cases and design goals, for example, the precise.

### [TimezoneFinder](https://github.com/jannikmi/timezonefinder)

I got lots of inspiration from it. Timezonefinder is a very good package and
it's mostly written in Python, so it's easy to use. And it's much
[more widely used](https://github.com/jannikmi/timezonefinder/network/dependents)
compared with tzfpy if you care about that.

However, it's slower than tzfpy, especially around the borders, and I have lots
of API requests from there. That's the reason I created tzf originally. And then
tzf-rs and tzfpy.

### [pytzwhere](https://github.com/pegler/pytzwhere)

I recommend to read timezonefinder's
[Comparison to pytzwhere](https://timezonefinder.readthedocs.io/en/latest/3_about.html#comparison-to-pytzwhere)
since it's very detailed.

## Contributing

Install:

- [Rust](https://www.rust-lang.org/tools/install)
- [Python](https://www.python.org/downloads/)
- [uv](https://docs.astral.sh/uv/)

```console
Available commands:
  build    - Build the project using uv
  fmt      - Format the code using ruff
  lint     - Lint the code using ruff
  sync     - Sync and compile the project using uv
  lock     - Lock dependencies using uv
  upgrade  - Upgrade dependencies using uv
  all      - Run lock, sync, fmt, lint, and test
  test     - Run tests using pytest
```

```bash
make all
```

## LICENSE

This project is licensed under the [MIT license](./LICENSE). The data is
licensed under the
[ODbL license](https://github.com/ringsaturn/tzf-rel/blob/main/LICENSE), same as
[`evansiroky/timezone-boundary-builder`](https://github.com/evansiroky/timezone-boundary-builder)


            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "tzfpy",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": "ringsaturn <ringsaturn.me@gmail.com>",
    "keywords": "tzf, timezone, timezone-name, timezone-lookup, gps, gps-coordinates, gps-location, longitude, latitude",
    "author": null,
    "author_email": null,
    "download_url": "https://files.pythonhosted.org/packages/ff/ec/62f531985ad669cb6d4c480c7f266274b9fd69144b257c2b69ecdfd23eff/tzfpy-0.16.4.tar.gz",
    "platform": null,
    "description": "# tzfpy\n\n- [![PyPI](https://img.shields.io/pypi/v/tzfpy)](https://pypi.org/project/tzfpy/)\n- [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/tzfpy)](https://pypi.org/project/tzfpy/)\n- ![PyPI - Downloads](https://img.shields.io/pypi/dd/tzfpy)\n- [![Anaconda-Server Badge](https://anaconda.org/conda-forge/tzfpy/badges/version.svg)](https://anaconda.org/conda-forge/tzfpy)\n- ![Conda Downloads](https://img.shields.io/conda/d/conda-forge/tzfpy)\n- ![Conda Platform](https://img.shields.io/conda/p/conda-forge/tzfpy)\n\n![](https://github.com/ringsaturn/tzf/blob/gh-pages/docs/tzf-social-media.png?raw=true)\n\n> [!NOTE]\n>\n> 0. It's probably the fastest Python package to convert longitude/latitude to\n>    timezone name.\n> 1. This package use a simplified polygon data and not so accurate around\n>    borders.\n> 2. Rust use lazy init, so first calling will be a little slow.\n> 3. Use about 40MB memory.\n> 4. It's tested under Python 3.9+.\n> 5. Try it online:\n>     - <https://ringsaturn.github.io/tzf-web/>, powered by tzf-rs and WebAssembly\n\n## Usage\n\nPlease note that new timezone names may be added to tzfpy, which could be\nincompatible with old version package like pytz or tzdata. As an option, tzfpy\nsupports install compatible version of those packages with extra params.\n\n```bash\n# Install just tzfpy\npip install tzfpy\n\n# Install with pytz\npip install \"tzfpy[pytz]\"\n\n# Install with tzdata. https://github.com/python/tzdata\npip install \"tzfpy[tzdata]\"\n\n# Install via conda, see more in https://github.com/conda-forge/tzfpy-feedstock\nconda install -c conda-forge tzfpy\n```\n\n```python\n>>> from tzfpy import get_tz, get_tzs\n>>> get_tz(116.3883, 39.9289)  # in (longitude, latitude) order.\n'Asia/Shanghai'\n>>> get_tzs(87.4160, 44.0400)  # in (longitude, latitude) order.\n['Asia/Shanghai', 'Asia/Urumqi']\n```\n\n## Performance\n\nBenchmark runs under\n[`v0.16.0`](https://github.com/ringsaturn/tzfpy/releases/tag/v0.16.0) on my\nMacBook Pro with Apple M3 Max.\n\n```bash\npytest --benchmark-warmup=on --benchmark-warmup-iterations=100 tests/test_bench.py\n```\n\n```\n----------------------------------------------------------- benchmark: 1 tests -----------------------------------------------------------\nName (time in ns)                 Min         Max        Mean    StdDev      Median       IQR   Outliers  OPS (Kops/s)  Rounds  Iterations\n------------------------------------------------------------------------------------------------------------------------------------------\ntest_tzfpy_random_cities     699.9937  7,175.0022  1,562.1433  646.9249  1,441.6990  833.3940  13716;984      640.1461   41026          10\n------------------------------------------------------------------------------------------------------------------------------------------\n\nLegend:\n  Outliers: 1 Standard Deviation from Mean; 1.5 IQR (InterQuartile Range) from 1st Quartile and 3rd Quartile.\n  OPS: Operations Per Second, computed as 1 / Mean\nResults (1.81s):\n         1 passed\n```\n\nOr you can view more benchmark results on\n[GitHub Action summary page](https://github.com/ringsaturn/tzfpy/actions/workflows/Test.yml).\n\n## Background\n\n`tzfpy` was originally written in Go named [`tzf`][tzf] and use CGO compiled to\n`.so` to be used by Python. Since `v0.11.0` it's rewritten in Rust built on PyO3\nand [`tzf-rs`][tzf-rs], a tzf's Rust port.\n\nI have written an article about the history of tzf, its Rust port, and its Rust\nport's Python binding; you can view it\n[here](https://blog.ringsaturn.me/en/posts/2023-01-31-history-of-tzf/).\n\n[tzf]: https://github.com/ringsaturn/tzf\n[tzf-rs]: https://github.com/ringsaturn/tzf-rs\n\n## Project status\n\n`tzfpy` is still under development and it has been deployed into\n[my current company](https://github.com/caiyunapp)'s production environment and\nit works well under high concurrency for weather API and location related data\nprocessed. So I think it's ready to be used in production with caution.\n\nI haven't release the v1.0.0 yet and I will try my best to keep current API as\nstable as possible(only 3 functions). I'm still working on performance\nimprovements on Rust side, which is a release blocker for both tzf-rs and tzfpy.\n\n## Compare with other packages\n\nPlease note that directly compare with other packages is not fair, because they\nhave different use cases and design goals, for example, the precise.\n\n### [TimezoneFinder](https://github.com/jannikmi/timezonefinder)\n\nI got lots of inspiration from it. Timezonefinder is a very good package and\nit's mostly written in Python, so it's easy to use. And it's much\n[more widely used](https://github.com/jannikmi/timezonefinder/network/dependents)\ncompared with tzfpy if you care about that.\n\nHowever, it's slower than tzfpy, especially around the borders, and I have lots\nof API requests from there. That's the reason I created tzf originally. And then\ntzf-rs and tzfpy.\n\n### [pytzwhere](https://github.com/pegler/pytzwhere)\n\nI recommend to read timezonefinder's\n[Comparison to pytzwhere](https://timezonefinder.readthedocs.io/en/latest/3_about.html#comparison-to-pytzwhere)\nsince it's very detailed.\n\n## Contributing\n\nInstall:\n\n- [Rust](https://www.rust-lang.org/tools/install)\n- [Python](https://www.python.org/downloads/)\n- [uv](https://docs.astral.sh/uv/)\n\n```console\nAvailable commands:\n  build    - Build the project using uv\n  fmt      - Format the code using ruff\n  lint     - Lint the code using ruff\n  sync     - Sync and compile the project using uv\n  lock     - Lock dependencies using uv\n  upgrade  - Upgrade dependencies using uv\n  all      - Run lock, sync, fmt, lint, and test\n  test     - Run tests using pytest\n```\n\n```bash\nmake all\n```\n\n## LICENSE\n\nThis project is licensed under the [MIT license](./LICENSE). The data is\nlicensed under the\n[ODbL license](https://github.com/ringsaturn/tzf-rel/blob/main/LICENSE), same as\n[`evansiroky/timezone-boundary-builder`](https://github.com/evansiroky/timezone-boundary-builder)\n\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Probably the fastest Python package to convert longitude/latitude to timezone name",
    "version": "0.16.4",
    "project_urls": {
        "Documentation": "https://github.com/ringsaturn/tzfpy",
        "Issues": "https://github.com/ringsaturn/tzfpy/issues",
        "Source Code": "https://github.com/ringsaturn/tzfpy"
    },
    "split_keywords": [
        "tzf",
        " timezone",
        " timezone-name",
        " timezone-lookup",
        " gps",
        " gps-coordinates",
        " gps-location",
        " longitude",
        " latitude"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "34086ff540556e42f912d2278919f268055eed69931e9527d85aa7e7e14aaafe",
                "md5": "689a5a7793806784686c1dc5eeb34581",
                "sha256": "a40302e7ad5ab1370b65f2851a63bb67000e6183da1e3a476786c97818d9b6c6"
            },
            "downloads": -1,
            "filename": "tzfpy-0.16.4-cp313-cp313t-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl",
            "has_sig": false,
            "md5_digest": "689a5a7793806784686c1dc5eeb34581",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 12703516,
            "upload_time": "2025-02-04T07:39:14",
            "upload_time_iso_8601": "2025-02-04T07:39:14.267130Z",
            "url": "https://files.pythonhosted.org/packages/34/08/6ff540556e42f912d2278919f268055eed69931e9527d85aa7e7e14aaafe/tzfpy-0.16.4-cp313-cp313t-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "1d5eee5c6300a1044bb2f0492b3451a76b59d1e3083f5f1939c13fd30e8da7da",
                "md5": "d43d840cf17d72f84f79988d38ad5e02",
                "sha256": "c533ac1729d9fd3131a9e2765555dc87106bdb6924ff45ff77bac20e66c7addc"
            },
            "downloads": -1,
            "filename": "tzfpy-0.16.4-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "d43d840cf17d72f84f79988d38ad5e02",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 6332714,
            "upload_time": "2025-02-04T07:39:20",
            "upload_time_iso_8601": "2025-02-04T07:39:20.434236Z",
            "url": "https://files.pythonhosted.org/packages/1d/5e/ee5c6300a1044bb2f0492b3451a76b59d1e3083f5f1939c13fd30e8da7da/tzfpy-0.16.4-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "1d1c188bd5a4fd2a64b0f78874f28abc3165278db1a37b01972f6bda41b59c3e",
                "md5": "1e1bf05f57b976ad48344af061519029",
                "sha256": "07a5ce3e814040216cd154635ef54b260836d0c3ecf1bd0dfee70a866032ea59"
            },
            "downloads": -1,
            "filename": "tzfpy-0.16.4-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "1e1bf05f57b976ad48344af061519029",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 6335065,
            "upload_time": "2025-02-04T07:39:08",
            "upload_time_iso_8601": "2025-02-04T07:39:08.497734Z",
            "url": "https://files.pythonhosted.org/packages/1d/1c/188bd5a4fd2a64b0f78874f28abc3165278db1a37b01972f6bda41b59c3e/tzfpy-0.16.4-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "4d19ed956381805370ccb8492cd2c9b954997e5dc30172c565bf0a7fa7457e3b",
                "md5": "2a1a3338c73114213a815c99cfdc4d0f",
                "sha256": "37669399b8a03e5de506af5ab7fcd6ed096699f29649daad8c3bf4d3f916ad70"
            },
            "downloads": -1,
            "filename": "tzfpy-0.16.4-cp313-cp313t-manylinux_2_24_armv7l.whl",
            "has_sig": false,
            "md5_digest": "2a1a3338c73114213a815c99cfdc4d0f",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9",
            "size": 6341990,
            "upload_time": "2025-02-04T07:39:03",
            "upload_time_iso_8601": "2025-02-04T07:39:03.021656Z",
            "url": "https://files.pythonhosted.org/packages/4d/19/ed956381805370ccb8492cd2c9b954997e5dc30172c565bf0a7fa7457e3b/tzfpy-0.16.4-cp313-cp313t-manylinux_2_24_armv7l.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "d6f25b2d2ad35809f2fba7c3eed4e888c25494044f9b2be839bb437855fbfa95",
                "md5": "c3a39971683cba3c2f4d0e1e9c8c3b57",
                "sha256": "6b80afd4c69ee9b08fcf6ee2234a8832560c103991102b985775b9d6cdea15b6"
            },
            "downloads": -1,
            "filename": "tzfpy-0.16.4-cp39-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl",
            "has_sig": false,
            "md5_digest": "c3a39971683cba3c2f4d0e1e9c8c3b57",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 12710914,
            "upload_time": "2025-02-04T07:39:17",
            "upload_time_iso_8601": "2025-02-04T07:39:17.271545Z",
            "url": "https://files.pythonhosted.org/packages/d6/f2/5b2d2ad35809f2fba7c3eed4e888c25494044f9b2be839bb437855fbfa95/tzfpy-0.16.4-cp39-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "882b7c3f44af6e4f785b8e5880d5e4f0fd2056d99feb0f3b87e0b7743bc3f64b",
                "md5": "99e66234e378ed3c18877d221aec7bf6",
                "sha256": "0c859cf4121ba2513106f8be621a32e8702c33be74b5c96e845ff7667af9db1a"
            },
            "downloads": -1,
            "filename": "tzfpy-0.16.4-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "99e66234e378ed3c18877d221aec7bf6",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 6335608,
            "upload_time": "2025-02-04T07:39:23",
            "upload_time_iso_8601": "2025-02-04T07:39:23.021721Z",
            "url": "https://files.pythonhosted.org/packages/88/2b/7c3f44af6e4f785b8e5880d5e4f0fd2056d99feb0f3b87e0b7743bc3f64b/tzfpy-0.16.4-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "da8a6e1ee3609a16c2bf06b7ba4aacf10712b3aa5f8e995ee60d70ad0e111162",
                "md5": "42ff71de0b587e939b15949aab2168cb",
                "sha256": "7e1b2035c015d66461767bafdd7e119624c559163d48c593897f9fb67e487276"
            },
            "downloads": -1,
            "filename": "tzfpy-0.16.4-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "42ff71de0b587e939b15949aab2168cb",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 6337934,
            "upload_time": "2025-02-04T07:39:11",
            "upload_time_iso_8601": "2025-02-04T07:39:11.332771Z",
            "url": "https://files.pythonhosted.org/packages/da/8a/6e1ee3609a16c2bf06b7ba4aacf10712b3aa5f8e995ee60d70ad0e111162/tzfpy-0.16.4-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "0e813ff871408e7fe6699799c93767e4ed1af7992bc3fea97f3eea871ace6873",
                "md5": "3d63399ed1851fba78a0008c6d3ad21d",
                "sha256": "d716dac88456614e87771519de189391950c9358a66f157b71a6bf51e837249c"
            },
            "downloads": -1,
            "filename": "tzfpy-0.16.4-cp39-abi3-manylinux_2_24_armv7l.whl",
            "has_sig": false,
            "md5_digest": "3d63399ed1851fba78a0008c6d3ad21d",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 6344619,
            "upload_time": "2025-02-04T07:39:05",
            "upload_time_iso_8601": "2025-02-04T07:39:05.905289Z",
            "url": "https://files.pythonhosted.org/packages/0e/81/3ff871408e7fe6699799c93767e4ed1af7992bc3fea97f3eea871ace6873/tzfpy-0.16.4-cp39-abi3-manylinux_2_24_armv7l.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "c0005577795dd4c5b185da03e8fbab8d8ddca38fe34f3bef293cbf4df8686cd0",
                "md5": "78b1383724f8866a886b3366e12b1a82",
                "sha256": "10fd22a5a22878093a15d6d8bda491a0c4f01a7e8d4449a481e6449a997ca046"
            },
            "downloads": -1,
            "filename": "tzfpy-0.16.4-cp39-abi3-musllinux_1_1_aarch64.whl",
            "has_sig": false,
            "md5_digest": "78b1383724f8866a886b3366e12b1a82",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 6507831,
            "upload_time": "2025-02-04T07:39:24",
            "upload_time_iso_8601": "2025-02-04T07:39:24.947601Z",
            "url": "https://files.pythonhosted.org/packages/c0/00/5577795dd4c5b185da03e8fbab8d8ddca38fe34f3bef293cbf4df8686cd0/tzfpy-0.16.4-cp39-abi3-musllinux_1_1_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "97cc8f95fe31290ed63eda1e4f95b66cb68101a7e97d8a4011df99902e4438f4",
                "md5": "6bdb2772c9880f83868e3f46a4e6fd06",
                "sha256": "1abbc88b2c7fc077e3ea82cf9e8b43ffe2274517c5ebc5f713c923eb7329f135"
            },
            "downloads": -1,
            "filename": "tzfpy-0.16.4-cp39-abi3-musllinux_1_1_x86_64.whl",
            "has_sig": false,
            "md5_digest": "6bdb2772c9880f83868e3f46a4e6fd06",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 6503444,
            "upload_time": "2025-02-04T07:39:26",
            "upload_time_iso_8601": "2025-02-04T07:39:26.638584Z",
            "url": "https://files.pythonhosted.org/packages/97/cc/8f95fe31290ed63eda1e4f95b66cb68101a7e97d8a4011df99902e4438f4/tzfpy-0.16.4-cp39-abi3-musllinux_1_1_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "58b95ab53ebec1a42224b6157b05258d3d1ab29a27646b3d1461234fd123b36b",
                "md5": "3b856b88ec3855154b52b4df0045f448",
                "sha256": "2aac2144a2c3ac6dea479243c002339d8c128f17b2ad2027e313ead4f15171f5"
            },
            "downloads": -1,
            "filename": "tzfpy-0.16.4-cp39-abi3-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "3b856b88ec3855154b52b4df0045f448",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 6195924,
            "upload_time": "2025-02-04T07:39:30",
            "upload_time_iso_8601": "2025-02-04T07:39:30.043838Z",
            "url": "https://files.pythonhosted.org/packages/58/b9/5ab53ebec1a42224b6157b05258d3d1ab29a27646b3d1461234fd123b36b/tzfpy-0.16.4-cp39-abi3-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "ffec62f531985ad669cb6d4c480c7f266274b9fd69144b257c2b69ecdfd23eff",
                "md5": "00e75c642f3f89f6f0ba7232aa10cdcd",
                "sha256": "0814dfbec51ed58b95c09a6f16e1d6231bb34fe3006513c4e2d803de57936e21"
            },
            "downloads": -1,
            "filename": "tzfpy-0.16.4.tar.gz",
            "has_sig": false,
            "md5_digest": "00e75c642f3f89f6f0ba7232aa10cdcd",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 75118,
            "upload_time": "2025-02-04T07:39:28",
            "upload_time_iso_8601": "2025-02-04T07:39:28.142558Z",
            "url": "https://files.pythonhosted.org/packages/ff/ec/62f531985ad669cb6d4c480c7f266274b9fd69144b257c2b69ecdfd23eff/tzfpy-0.16.4.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-02-04 07:39:28",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "ringsaturn",
    "github_project": "tzfpy",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "tzfpy"
}
        
Elapsed time: 3.78653s