# Make working with datetimes in Python simpler and more powerful.
Created to be used in a project, this package is published to github for ease of management and installation across different modules.
## Installation
Install from `PyPi`
```bash
pip install cytimes
```
Install from `github`
```bash
pip install git+https://github.com/AresJef/cyTimes.git
```
## Compatibility
Supports Python 3.10 and above.
## Features
`cyTimes` introduces two classes that simplify and enhance working with datetimes:
- `Pydt` (Python datetime.datetime)
- `Pddt` (Pandas DatetimeIndex)
Both provide similar functionalities:
- Direct drop-in replacements (subclasses) for standard Python `datetime` and Pandas `DatetimeIndex`.
- Cython-optimized for high-performance parsing, creation, and manipulation.
- Well-documented methods with type annotations.
- Flexible constructors accepting multiple input formats (strings, datetime objects, timestamps, etc.).
- Rich conversion options (ISO strings, ordinals, timestamps, and more).
- Comprehensive manipulation for precise datetime fields adjustments (years, quarters, months, days, time).
- Direct calendar information insights (e.g., days in month, leap years).
- Extended timezone-related capabilities.
- Supports adding or subtracting deltas, and compute deltas against datetime-like object(s).
## `Pydt` Usage
The `Pydt` class operates similarly to Python’s native `datetime.datetime`, with added methods and improvements.
### Construction
```python
from cytimes import Pydt
import datetime, numpy as np
Pydt(1970, 1, 1, tzinfo="UTC")
>>> 1970-01-01 00:00:00+0000
Pydt.parse("1970 Jan 1 00:00:01 PM")
>>> 1970-01-01 12:00:01
Pydt.now()
>>> 2024-12-06 10:37:25.619593
Pydt.utcnow()
>>> 2024-12-06 09:37:36.743159+0000
Pydt.combine("1970-01-01", "00:00:01")
>>> 1970-01-01 00:00:01
Pydt.fromordinal(1)
>>> 0001-01-01 00:00:00
Pydt.fromseconds(1)
>>> 1970-01-01 00:00:01
Pydt.fromicroseconds(1)
>>> 1970-01-01 00:00:00.000001
Pydt.fromtimestamp(1, datetime.UTC)
>>> 1970-01-01 00:00:01+0000
Pydt.utcfromtimestamp(1)
>>> 1970-01-01 00:00:01+0000
Pydt.fromisoformat("1970-01-01T00:00:01")
>>> 1970-01-01 00:00:01
Pydt.fromisocalendar(1970, 1, 4)
>>> 1970-01-01 00:00:00
Pydt.fromdate(datetime.date(1970, 1, 1))
>>> 1970-01-01 00:00:00
Pydt.fromdatetime(datetime.datetime(1970, 1, 1))
>>> 1970-01-01 00:00:00
Pydt.fromdatetime64(np.datetime64(1, "s"))
>>> 1970-01-01 00:00:01
Pydt.strptime("00:00:01 1970-01-01", "%H:%M:%S %Y-%m-%d")
>>> 1970-01-01 00:00:01
```
### Conversion
```python
from cytimes import Pydt
dt = Pydt(1970, 1, 1, tzinfo="CET")
dt.ctime()
>>> "Thu Jan 1 00:00:00 1970"
dt.strftime("%Y-%m-%d %H:%M:%S %Z")
>>> "1970-01-01 00:00:00 CET"
dt.isoformat()
>>> "1970-01-01T00:00:00+01:00"
dt.timetuple()
>>> (1970, 1, 1, 0, 0, 0, 3, 1, 0)
dt.toordinal()
>>> 719163
dt.seconds()
>>> 0.0
dt.microseconds()
>>> 0
dt.timestamp()
>>> -3600.0
dt.date()
>>> 1970-01-01
dt.time()
>>> 00:00:00
dt.timetz()
>>> 00:00:00
```
### Manipulation
```python
from cytimes import Pydt
dt = Pydt(1970, 2, 2, 2, 2, 2, 2, "CET")
# . replace
dt.replace(year=2007, microsecond=1, tzinfo="UTC")
>>> 2007-02-02 02:02:02.000001+0000
# . year
dt.to_curr_year(3, 15)
>>> 1970-03-15 02:02:02.000002+0100
dt.to_prev_year("Feb", 30)
>>> 1969-02-28 02:02:02.000002+0100
dt.to_next_year("十二月", 31)
>>> 1971-12-31 02:02:02.000002+0100
dt.to_year(100, "noviembre", 30)
>>> 2070-11-30 02:02:02.000002+0100
# . quarter
dt.to_curr_quarter(3, 15)
>>> 1970-03-15 02:02:02.000002+0100
dt.to_prev_quarter(3, 15)
>>> 1969-12-15 02:02:02.000002+0100
dt.to_next_quarter(3, 15)
>>> 1970-06-15 02:02:02.000002+0100
dt.to_quarter(100, 3, 15)
>>> 1995-03-15 02:02:02.000002+0100
# . month
dt.to_curr_month(15)
>>> 1970-02-15 02:02:02.000002+0100
dt.to_prev_month(15)
>>> 1970-01-15 02:02:02.000002+0100
dt.to_next_month(15)
>>> 1970-03-15 02:02:02.000002+0100
dt.to_month(100, 15)
>>> 1978-06-15 02:02:02.000002+0200
# . weekday
dt.to_monday()
>>> 1970-02-02 02:02:02.000002+0100
dt.to_sunday()
>>> 1970-02-08 02:02:02.000002+0100
dt.to_curr_weekday(4)
>>> 1970-02-06 02:02:02.000002+0100
dt.to_prev_weekday(4)
>>> 1970-01-30 02:02:02.000002+0100
dt.to_next_weekday(4)
>>> 1970-02-13 02:02:02.000002+0100
dt.to_weekday(100, 4)
>>> 1972-01-07 02:02:02.000002+0100
# . day
dt.to_yesterday()
>>> 1970-02-01 02:02:02.000002+0100
dt.to_tomorrow()
>>> 1970-02-03 02:02:02.000002+0100
dt.to_day(100)
>>> 1970-05-13 02:02:02.000002+0100
# . date&time
dt.to_first_of("Y")
>>> 1970-01-01 02:02:02.000002+0100
dt.to_last_of("Q")
>>> 1970-03-31 02:02:02.000002+0100
dt.to_start_of("M")
>>> 1970-02-01 00:00:00+0100
dt.to_end_of("W")
>>> 1970-02-08 23:59:59.999999+0100
# . round / ceil / floor
dt.round("h")
>>> 1970-02-02 02:00:00+0100
dt.ceil("m")
>>> 1970-02-02 02:03:00+0100
dt.floor("s")
>>> 1970-02-02 02:02:02+0100
```
### Calendar Information
```python
from cytimes import Pydt
dt = Pydt(1970, 2, 2, tzinfo="UTC")
# . iso
dt.isocalendar()
>>> {'year': 1970, 'week': 6, 'weekday': 1}
dt.isoyear()
>>> 1970
dt.isoweek()
>>> 6
dt.isoweekday()
>>> 1
# . year
dt.is_leap_year()
>>> False
dt.is_long_year()
>>> True
dt.leap_bt_year(2007)
>>> 9
dt.days_in_year()
>>> 365
dt.days_bf_year()
>>> 719162
dt.days_of_year()
>>> 33
dt.is_year(1970)
>>> True
# . quarter
dt.days_in_quarter()
>>> 90
dt.days_bf_quarter()
>>> 0
dt.days_of_quarter()
>>> 33
dt.is_quarter(1)
>>> True
# . month
dt.days_in_month()
>>> 28
dt.days_bf_month()
>>> 31
dt.days_of_month()
>>> 2
dt.is_month("Feb")
>>> True
dt.month_name("es")
>>> "febrero"
# . weekday
dt.is_weekday("Monday")
>>> True
# . day
dt.is_day(2)
>>> True
dt.day_name("fr")
>>> "lundi"
# . date&time
dt.is_first_of("Y")
>>> False
dt.is_last_of("Q")
>>> False
dt.is_start_of("M")
>>> False
dt.is_end_of("W")
>>> False
```
### Timezone Operation
```python
from cytimes import Pydt
dt = Pydt(1970, 1, 1, tzinfo="UTC")
dt.is_local()
>>> False
dt.is_utc()
>>> True
dt.is_dst()
>>> False
dt.tzname()
>>> "UTC"
dt.utcoffset()
>>> 0:00:00
dt.utcoffset_seconds()
>>> 0
dt.dst()
>>> None
dt.astimezone("CET")
>>> 1970-01-01 01:00:00+0100
dt.tz_localize(None)
>>> 1970-01-01 00:00:00
dt.tz_convert("CET")
>>> 1970-01-01 01:00:00+0100
dt.tz_switch("CET")
>>> 1970-01-01 01:00:00+0100
```
### Arithmetic
```python
from cytimes import Pydt
dt = Pydt(1970, 1, 1, tzinfo="UTC")
dt.add(years=1, weeks=1, microseconds=1)
>>> 1971-01-08 00:00:00.000001+0000
dt.sub(quarters=1, days=1, seconds=1)
>>> 1969-09-29 23:59:59+0000
dt.diff("2007-01-01 01:01:01+01:00", "s")
>>> -1167609662
```
### Comparison
```python
from cytimes import Pydt
dt = Pydt(1970, 1, 1)
dt.is_past()
>>> True
dt.is_future()
>>> False
dt.closest("1970-01-02", "2007-01-01")
>>> 1970-01-02 00:00:00
dt.farthest("1970-01-02", "2007-01-01")
>>> 2007-01-01 00:00:00
```
## `Pddt` Usage
`Pddt` extends similar functionalities to Pandas `DatetimeIndex`, making it behave more like native Python `datetime.datetime`, but for arrays of datetime values. It supports:
- Vectorized parsing, creation, and manipulation.
- Most of the same methods and properties as `Pydt` (see examples above), adapted for datetime-arrays.
- Automatic handling of out-of-range datetimes in nanoseconds by downcasting to microsecond precision `'us'` to avoid overflow.
### Handling Nanosecond Overflow
By default, `DatetimeIndex` uses nanosecond precision `'ns'`, which cannot represent datetimes outside the range 1677-09-21 to 2262-04-11. Pddt automatically downcasts to microseconds `us` when encountering out-of-range datetimes, sacrificing nanosecond precision to allow a broader range support.
```python
from cytimes import Pddt
Pddt(["9999-01-01 00:00:00+00:00", "9999-01-02 00:00:00+00:00"])
>>> Pddt(['9999-01-01 00:00:00+00:00', '9999-01-02 00:00:00+00:00'],
dtype='datetime64[us, UTC]', freq=None)
```
Downcasting mechanism also automacially applies to all methods that modify the datetimes, resulting values out of the `'ns'` range:
```python
from cytimes import Pddt
pt = Pddt(["1970-01-01 00:00:00+00:00", "1970-01-02 00:00:00+00:00"])
# Pddt(['1970-01-01 00:00:00+00:00', '1970-01-02 00:00:00+00:00'],
# dtype='datetime64[ns, UTC]', freq=None)
pt.to_year(1000, "Feb", 30)
>>> Pddt(['2970-02-28 00:00:00+00:00', '2970-02-28 00:00:00+00:00'],
dtype='datetime64[us, UTC]', freq=None)
```
### Acknowledgements
cyTimes is based on several open-source repositories.
- [babel](https://github.com/python-babel/babel)
- [numpy](https://github.com/numpy/numpy)
- [pandas](https://github.com/pandas-dev/pandas)
cyTimes is built on the following open-source repositories:
- [dateutil](https://github.com/dateutil/dateutil)
Class <'Parser'> and <'Delta'> in this package are the cythonized version of <'dateutil.parser'> and <'dateutil.relativedelta'>. Credit and thanks go to the original authors and contributors of the `dateutil` library.
Raw data
{
"_id": null,
"home_page": "https://github.com/AresJef/cyTimes",
"name": "cytimes",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": null,
"keywords": "cytimes, parser, datetime, pandas, Series, DatetimeIndex",
"author": "Jiefu Chen",
"author_email": "keppa1991@163.com",
"download_url": "https://files.pythonhosted.org/packages/70/e1/12f80401cfdea8c8ea5d048c73925e17a0c936220eea286f91cf396a1d47/cytimes-2.0.3.tar.gz",
"platform": null,
"description": "# Make working with datetimes in Python simpler and more powerful.\n\nCreated to be used in a project, this package is published to github for ease of management and installation across different modules.\n\n## Installation\n\nInstall from `PyPi`\n\n```bash\npip install cytimes\n```\n\nInstall from `github`\n\n```bash\npip install git+https://github.com/AresJef/cyTimes.git\n```\n\n## Compatibility\n\nSupports Python 3.10 and above.\n\n## Features\n\n`cyTimes` introduces two classes that simplify and enhance working with datetimes:\n\n- `Pydt` (Python datetime.datetime)\n- `Pddt` (Pandas DatetimeIndex)\n\nBoth provide similar functionalities:\n\n- Direct drop-in replacements (subclasses) for standard Python `datetime` and Pandas `DatetimeIndex`.\n- Cython-optimized for high-performance parsing, creation, and manipulation.\n- Well-documented methods with type annotations.\n- Flexible constructors accepting multiple input formats (strings, datetime objects, timestamps, etc.).\n- Rich conversion options (ISO strings, ordinals, timestamps, and more).\n- Comprehensive manipulation for precise datetime fields adjustments (years, quarters, months, days, time).\n- Direct calendar information insights (e.g., days in month, leap years).\n- Extended timezone-related capabilities.\n- Supports adding or subtracting deltas, and compute deltas against datetime-like object(s).\n\n## `Pydt` Usage\n\nThe `Pydt` class operates similarly to Python\u2019s native `datetime.datetime`, with added methods and improvements.\n\n### Construction\n\n```python\nfrom cytimes import Pydt\nimport datetime, numpy as np\n\nPydt(1970, 1, 1, tzinfo=\"UTC\")\n>>> 1970-01-01 00:00:00+0000\nPydt.parse(\"1970 Jan 1 00:00:01 PM\")\n>>> 1970-01-01 12:00:01\nPydt.now()\n>>> 2024-12-06 10:37:25.619593\nPydt.utcnow()\n>>> 2024-12-06 09:37:36.743159+0000\nPydt.combine(\"1970-01-01\", \"00:00:01\")\n>>> 1970-01-01 00:00:01\nPydt.fromordinal(1)\n>>> 0001-01-01 00:00:00\nPydt.fromseconds(1)\n>>> 1970-01-01 00:00:01\nPydt.fromicroseconds(1)\n>>> 1970-01-01 00:00:00.000001\nPydt.fromtimestamp(1, datetime.UTC)\n>>> 1970-01-01 00:00:01+0000\nPydt.utcfromtimestamp(1)\n>>> 1970-01-01 00:00:01+0000\nPydt.fromisoformat(\"1970-01-01T00:00:01\")\n>>> 1970-01-01 00:00:01\nPydt.fromisocalendar(1970, 1, 4)\n>>> 1970-01-01 00:00:00\nPydt.fromdate(datetime.date(1970, 1, 1))\n>>> 1970-01-01 00:00:00\nPydt.fromdatetime(datetime.datetime(1970, 1, 1))\n>>> 1970-01-01 00:00:00\nPydt.fromdatetime64(np.datetime64(1, \"s\"))\n>>> 1970-01-01 00:00:01\nPydt.strptime(\"00:00:01 1970-01-01\", \"%H:%M:%S %Y-%m-%d\")\n>>> 1970-01-01 00:00:01\n```\n\n### Conversion\n\n```python\nfrom cytimes import Pydt\n\ndt = Pydt(1970, 1, 1, tzinfo=\"CET\")\n\ndt.ctime()\n>>> \"Thu Jan 1 00:00:00 1970\"\ndt.strftime(\"%Y-%m-%d %H:%M:%S %Z\")\n>>> \"1970-01-01 00:00:00 CET\"\ndt.isoformat()\n>>> \"1970-01-01T00:00:00+01:00\"\ndt.timetuple()\n>>> (1970, 1, 1, 0, 0, 0, 3, 1, 0)\ndt.toordinal()\n>>> 719163\ndt.seconds()\n>>> 0.0\ndt.microseconds()\n>>> 0\ndt.timestamp()\n>>> -3600.0\ndt.date()\n>>> 1970-01-01\ndt.time()\n>>> 00:00:00\ndt.timetz()\n>>> 00:00:00\n```\n\n### Manipulation\n\n```python\nfrom cytimes import Pydt\n\ndt = Pydt(1970, 2, 2, 2, 2, 2, 2, \"CET\")\n\n# . replace\ndt.replace(year=2007, microsecond=1, tzinfo=\"UTC\")\n>>> 2007-02-02 02:02:02.000001+0000\n\n# . year\ndt.to_curr_year(3, 15)\n>>> 1970-03-15 02:02:02.000002+0100\ndt.to_prev_year(\"Feb\", 30)\n>>> 1969-02-28 02:02:02.000002+0100\ndt.to_next_year(\"\u5341\u4e8c\u6708\", 31)\n>>> 1971-12-31 02:02:02.000002+0100\ndt.to_year(100, \"noviembre\", 30)\n>>> 2070-11-30 02:02:02.000002+0100\n\n# . quarter\ndt.to_curr_quarter(3, 15)\n>>> 1970-03-15 02:02:02.000002+0100\ndt.to_prev_quarter(3, 15)\n>>> 1969-12-15 02:02:02.000002+0100\ndt.to_next_quarter(3, 15)\n>>> 1970-06-15 02:02:02.000002+0100\ndt.to_quarter(100, 3, 15)\n>>> 1995-03-15 02:02:02.000002+0100\n\n# . month\ndt.to_curr_month(15)\n>>> 1970-02-15 02:02:02.000002+0100\ndt.to_prev_month(15)\n>>> 1970-01-15 02:02:02.000002+0100\ndt.to_next_month(15)\n>>> 1970-03-15 02:02:02.000002+0100\ndt.to_month(100, 15)\n>>> 1978-06-15 02:02:02.000002+0200\n\n# . weekday\ndt.to_monday()\n>>> 1970-02-02 02:02:02.000002+0100\ndt.to_sunday()\n>>> 1970-02-08 02:02:02.000002+0100\ndt.to_curr_weekday(4)\n>>> 1970-02-06 02:02:02.000002+0100\ndt.to_prev_weekday(4)\n>>> 1970-01-30 02:02:02.000002+0100\ndt.to_next_weekday(4)\n>>> 1970-02-13 02:02:02.000002+0100\ndt.to_weekday(100, 4)\n>>> 1972-01-07 02:02:02.000002+0100\n\n# . day\ndt.to_yesterday()\n>>> 1970-02-01 02:02:02.000002+0100\ndt.to_tomorrow()\n>>> 1970-02-03 02:02:02.000002+0100\ndt.to_day(100)\n>>> 1970-05-13 02:02:02.000002+0100\n\n# . date&time\ndt.to_first_of(\"Y\")\n>>> 1970-01-01 02:02:02.000002+0100\ndt.to_last_of(\"Q\")\n>>> 1970-03-31 02:02:02.000002+0100\ndt.to_start_of(\"M\")\n>>> 1970-02-01 00:00:00+0100\ndt.to_end_of(\"W\")\n>>> 1970-02-08 23:59:59.999999+0100\n\n# . round / ceil / floor\ndt.round(\"h\")\n>>> 1970-02-02 02:00:00+0100\ndt.ceil(\"m\")\n>>> 1970-02-02 02:03:00+0100\ndt.floor(\"s\")\n>>> 1970-02-02 02:02:02+0100\n```\n\n### Calendar Information\n\n```python\nfrom cytimes import Pydt\n\ndt = Pydt(1970, 2, 2, tzinfo=\"UTC\")\n\n# . iso\ndt.isocalendar()\n>>> {'year': 1970, 'week': 6, 'weekday': 1}\ndt.isoyear()\n>>> 1970\ndt.isoweek()\n>>> 6\ndt.isoweekday()\n>>> 1\n\n# . year\ndt.is_leap_year()\n>>> False\ndt.is_long_year()\n>>> True\ndt.leap_bt_year(2007)\n>>> 9\ndt.days_in_year()\n>>> 365\ndt.days_bf_year()\n>>> 719162\ndt.days_of_year()\n>>> 33\ndt.is_year(1970)\n>>> True\n\n# . quarter\ndt.days_in_quarter()\n>>> 90\ndt.days_bf_quarter()\n>>> 0\ndt.days_of_quarter()\n>>> 33\ndt.is_quarter(1)\n>>> True\n\n# . month\ndt.days_in_month()\n>>> 28\ndt.days_bf_month()\n>>> 31\ndt.days_of_month()\n>>> 2\ndt.is_month(\"Feb\")\n>>> True\ndt.month_name(\"es\")\n>>> \"febrero\"\n\n# . weekday\ndt.is_weekday(\"Monday\")\n>>> True\n\n# . day\ndt.is_day(2)\n>>> True\ndt.day_name(\"fr\")\n>>> \"lundi\"\n\n# . date&time\ndt.is_first_of(\"Y\")\n>>> False\ndt.is_last_of(\"Q\")\n>>> False\ndt.is_start_of(\"M\")\n>>> False\ndt.is_end_of(\"W\")\n>>> False\n```\n\n### Timezone Operation\n\n```python\nfrom cytimes import Pydt\n\ndt = Pydt(1970, 1, 1, tzinfo=\"UTC\")\n\ndt.is_local()\n>>> False\ndt.is_utc()\n>>> True\ndt.is_dst()\n>>> False\ndt.tzname()\n>>> \"UTC\"\ndt.utcoffset()\n>>> 0:00:00\ndt.utcoffset_seconds()\n>>> 0\ndt.dst()\n>>> None\ndt.astimezone(\"CET\")\n>>> 1970-01-01 01:00:00+0100\ndt.tz_localize(None)\n>>> 1970-01-01 00:00:00\ndt.tz_convert(\"CET\")\n>>> 1970-01-01 01:00:00+0100\ndt.tz_switch(\"CET\")\n>>> 1970-01-01 01:00:00+0100\n```\n\n### Arithmetic\n\n```python\nfrom cytimes import Pydt\n\ndt = Pydt(1970, 1, 1, tzinfo=\"UTC\")\n\ndt.add(years=1, weeks=1, microseconds=1)\n>>> 1971-01-08 00:00:00.000001+0000\ndt.sub(quarters=1, days=1, seconds=1)\n>>> 1969-09-29 23:59:59+0000\ndt.diff(\"2007-01-01 01:01:01+01:00\", \"s\")\n>>> -1167609662\n```\n\n### Comparison\n\n```python\nfrom cytimes import Pydt\n\ndt = Pydt(1970, 1, 1)\n\ndt.is_past()\n>>> True\ndt.is_future()\n>>> False\ndt.closest(\"1970-01-02\", \"2007-01-01\")\n>>> 1970-01-02 00:00:00\ndt.farthest(\"1970-01-02\", \"2007-01-01\")\n>>> 2007-01-01 00:00:00\n```\n\n## `Pddt` Usage\n\n`Pddt` extends similar functionalities to Pandas `DatetimeIndex`, making it behave more like native Python `datetime.datetime`, but for arrays of datetime values. It supports:\n\n- Vectorized parsing, creation, and manipulation.\n- Most of the same methods and properties as `Pydt` (see examples above), adapted for datetime-arrays.\n- Automatic handling of out-of-range datetimes in nanoseconds by downcasting to microsecond precision `'us'` to avoid overflow.\n\n### Handling Nanosecond Overflow\n\nBy default, `DatetimeIndex` uses nanosecond precision `'ns'`, which cannot represent datetimes outside the range 1677-09-21 to 2262-04-11. Pddt automatically downcasts to microseconds `us` when encountering out-of-range datetimes, sacrificing nanosecond precision to allow a broader range support.\n\n```python\nfrom cytimes import Pddt\n\nPddt([\"9999-01-01 00:00:00+00:00\", \"9999-01-02 00:00:00+00:00\"])\n>>> Pddt(['9999-01-01 00:00:00+00:00', '9999-01-02 00:00:00+00:00'],\n dtype='datetime64[us, UTC]', freq=None)\n```\n\nDowncasting mechanism also automacially applies to all methods that modify the datetimes, resulting values out of the `'ns'` range:\n\n```python\nfrom cytimes import Pddt\n\npt = Pddt([\"1970-01-01 00:00:00+00:00\", \"1970-01-02 00:00:00+00:00\"])\n# Pddt(['1970-01-01 00:00:00+00:00', '1970-01-02 00:00:00+00:00'],\n# dtype='datetime64[ns, UTC]', freq=None)\npt.to_year(1000, \"Feb\", 30)\n>>> Pddt(['2970-02-28 00:00:00+00:00', '2970-02-28 00:00:00+00:00'],\n dtype='datetime64[us, UTC]', freq=None)\n```\n\n### Acknowledgements\n\ncyTimes is based on several open-source repositories.\n\n- [babel](https://github.com/python-babel/babel)\n- [numpy](https://github.com/numpy/numpy)\n- [pandas](https://github.com/pandas-dev/pandas)\n\ncyTimes is built on the following open-source repositories:\n\n- [dateutil](https://github.com/dateutil/dateutil)\n\n Class <'Parser'> and <'Delta'> in this package are the cythonized version of <'dateutil.parser'> and <'dateutil.relativedelta'>. Credit and thanks go to the original authors and contributors of the `dateutil` library.\n",
"bugtrack_url": null,
"license": "MIT license, Apache License 2.0, BSD 3-Clause",
"summary": "Make working with datetimes in Python simpler and more powerful.",
"version": "2.0.3",
"project_urls": {
"Homepage": "https://github.com/AresJef/cyTimes"
},
"split_keywords": [
"cytimes",
" parser",
" datetime",
" pandas",
" series",
" datetimeindex"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "3e9396c4e8140085ef8d5e5f081712d22149fc55a47caa8b3c056226a7cb385d",
"md5": "5e512df603dbb0e1d840dd3cc5083f32",
"sha256": "05b0d7e90531dae04718bae7df8f783772635fa400907a8a440db8f919c8c8e4"
},
"downloads": -1,
"filename": "cytimes-2.0.3-cp310-cp310-macosx_10_9_universal2.whl",
"has_sig": false,
"md5_digest": "5e512df603dbb0e1d840dd3cc5083f32",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.10",
"size": 4369136,
"upload_time": "2025-02-06T04:45:10",
"upload_time_iso_8601": "2025-02-06T04:45:10.761185Z",
"url": "https://files.pythonhosted.org/packages/3e/93/96c4e8140085ef8d5e5f081712d22149fc55a47caa8b3c056226a7cb385d/cytimes-2.0.3-cp310-cp310-macosx_10_9_universal2.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "7708cbeb4e66aca68b67d22f59503d379165fb76084edfef4228162c010a263d",
"md5": "1057f3a193f2b97094db7460f8e72e5c",
"sha256": "1df28621f1be38d2f05165e9ee839fbff307e2fe215de881e76f21a311f6955e"
},
"downloads": -1,
"filename": "cytimes-2.0.3-cp310-cp310-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "1057f3a193f2b97094db7460f8e72e5c",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.10",
"size": 3326913,
"upload_time": "2025-02-06T04:45:12",
"upload_time_iso_8601": "2025-02-06T04:45:12.623166Z",
"url": "https://files.pythonhosted.org/packages/77/08/cbeb4e66aca68b67d22f59503d379165fb76084edfef4228162c010a263d/cytimes-2.0.3-cp310-cp310-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "4778a087ea3387f7fc2acf575e4b925df3d31456f725afc73b8b816f744d3231",
"md5": "5c08b1bc4f78f3846e75c40486420021",
"sha256": "8e0f640df00131fdb403585a4e84a1e910b63bcd74a51e8cd32545ae32f1cfb7"
},
"downloads": -1,
"filename": "cytimes-2.0.3-cp310-cp310-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "5c08b1bc4f78f3846e75c40486420021",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.10",
"size": 3236608,
"upload_time": "2025-02-06T04:45:14",
"upload_time_iso_8601": "2025-02-06T04:45:14.948229Z",
"url": "https://files.pythonhosted.org/packages/47/78/a087ea3387f7fc2acf575e4b925df3d31456f725afc73b8b816f744d3231/cytimes-2.0.3-cp310-cp310-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "5c0759a839fc381eb102e171e018e1d29ed4aae6f4505bb2842618afe5de95cd",
"md5": "df4321bb7a0736d08aa2d1e68f12781e",
"sha256": "fe3a8c0deaf06a66f9a481121571cd2fb3e4fa8ebf38419b323b1554988309eb"
},
"downloads": -1,
"filename": "cytimes-2.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "df4321bb7a0736d08aa2d1e68f12781e",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.10",
"size": 8957963,
"upload_time": "2025-02-06T04:45:17",
"upload_time_iso_8601": "2025-02-06T04:45:17.735802Z",
"url": "https://files.pythonhosted.org/packages/5c/07/59a839fc381eb102e171e018e1d29ed4aae6f4505bb2842618afe5de95cd/cytimes-2.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "76482fd1a689eb0e1d674dd236af465c2a2ca0e27934ba2fd3cced8f6716fd43",
"md5": "197a0c3773d0a4667f655ba9b8d81e1d",
"sha256": "54d65fa45838bd1e4969bf623ea9954ab07f9b7e952b67a448dc5de1da0918ae"
},
"downloads": -1,
"filename": "cytimes-2.0.3-cp310-cp310-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "197a0c3773d0a4667f655ba9b8d81e1d",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.10",
"size": 8925221,
"upload_time": "2025-02-06T04:45:21",
"upload_time_iso_8601": "2025-02-06T04:45:21.037181Z",
"url": "https://files.pythonhosted.org/packages/76/48/2fd1a689eb0e1d674dd236af465c2a2ca0e27934ba2fd3cced8f6716fd43/cytimes-2.0.3-cp310-cp310-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "8bc869e73391648189eaa830199f9e3122a9f30277b44126da8ff23941745f38",
"md5": "0b4095e15f19ab081ade4af9d9d28f66",
"sha256": "46ffce221b16fa125a691a8f654d9e4e23d5532ca2491fadb5a154f84099519d"
},
"downloads": -1,
"filename": "cytimes-2.0.3-cp310-cp310-win32.whl",
"has_sig": false,
"md5_digest": "0b4095e15f19ab081ade4af9d9d28f66",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.10",
"size": 3019196,
"upload_time": "2025-02-06T04:45:24",
"upload_time_iso_8601": "2025-02-06T04:45:24.226824Z",
"url": "https://files.pythonhosted.org/packages/8b/c8/69e73391648189eaa830199f9e3122a9f30277b44126da8ff23941745f38/cytimes-2.0.3-cp310-cp310-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "e94b96a541fe5f4108d805b504d35530ac9bf849794053544186021895684b76",
"md5": "7ebcd350d75b41ff2803e9b00867d7b6",
"sha256": "eab867ef43fa8e95d34e4330b553329772bbc40839abf1d2d975b4ea3fcf6215"
},
"downloads": -1,
"filename": "cytimes-2.0.3-cp310-cp310-win_amd64.whl",
"has_sig": false,
"md5_digest": "7ebcd350d75b41ff2803e9b00867d7b6",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.10",
"size": 3109218,
"upload_time": "2025-02-06T04:45:27",
"upload_time_iso_8601": "2025-02-06T04:45:27.590525Z",
"url": "https://files.pythonhosted.org/packages/e9/4b/96a541fe5f4108d805b504d35530ac9bf849794053544186021895684b76/cytimes-2.0.3-cp310-cp310-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "6ddfbbcd8538226ff3f816f2d5265c5a3ce09865046d8a69c50aa091f3a3108c",
"md5": "7c11a2c34ee98dd1a4f7359079ea8ec1",
"sha256": "4955e1b202cf914de5c747ce76392570c9e3670eb503306b6a5bac92052b528f"
},
"downloads": -1,
"filename": "cytimes-2.0.3-cp311-cp311-macosx_10_9_universal2.whl",
"has_sig": false,
"md5_digest": "7c11a2c34ee98dd1a4f7359079ea8ec1",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.10",
"size": 4381248,
"upload_time": "2025-02-06T04:45:30",
"upload_time_iso_8601": "2025-02-06T04:45:30.148240Z",
"url": "https://files.pythonhosted.org/packages/6d/df/bbcd8538226ff3f816f2d5265c5a3ce09865046d8a69c50aa091f3a3108c/cytimes-2.0.3-cp311-cp311-macosx_10_9_universal2.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "67286140b141e57fc73eddbd046bdb4790aa9f8d04cd31c014b7dcafd8ea8607",
"md5": "5afd69568baab5c56fa6df5b82b3efa3",
"sha256": "c3ee829d479b8f301703636d9b17f6e512018983772f49ae56f89b29241a09b0"
},
"downloads": -1,
"filename": "cytimes-2.0.3-cp311-cp311-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "5afd69568baab5c56fa6df5b82b3efa3",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.10",
"size": 3335147,
"upload_time": "2025-02-06T04:45:33",
"upload_time_iso_8601": "2025-02-06T04:45:33.075817Z",
"url": "https://files.pythonhosted.org/packages/67/28/6140b141e57fc73eddbd046bdb4790aa9f8d04cd31c014b7dcafd8ea8607/cytimes-2.0.3-cp311-cp311-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f3812d109a0626138c88b690d54092bcfa4b0078b35333248c8ab20fe8b0eec2",
"md5": "3a52fd0d51227d567fc0850b45e95113",
"sha256": "e06142e23032ce8bee78d8d5505122436d69d2b4c6742751d4e9b81a186e29df"
},
"downloads": -1,
"filename": "cytimes-2.0.3-cp311-cp311-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "3a52fd0d51227d567fc0850b45e95113",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.10",
"size": 3239904,
"upload_time": "2025-02-06T04:45:36",
"upload_time_iso_8601": "2025-02-06T04:45:36.537166Z",
"url": "https://files.pythonhosted.org/packages/f3/81/2d109a0626138c88b690d54092bcfa4b0078b35333248c8ab20fe8b0eec2/cytimes-2.0.3-cp311-cp311-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "ea9fce52916c692a4634c3b6562b703863718f88bdb6fd66e5629c10e6e99e39",
"md5": "641aebf1ab352ab1793f675547071ec5",
"sha256": "4f8bb5dbb498b380eaf35871d9383ed296539b9ac95ed9c29ce2f15edd7eeca8"
},
"downloads": -1,
"filename": "cytimes-2.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "641aebf1ab352ab1793f675547071ec5",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.10",
"size": 9414526,
"upload_time": "2025-02-06T04:45:38",
"upload_time_iso_8601": "2025-02-06T04:45:38.470138Z",
"url": "https://files.pythonhosted.org/packages/ea/9f/ce52916c692a4634c3b6562b703863718f88bdb6fd66e5629c10e6e99e39/cytimes-2.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "89ff8c8b6c78dc32b2d185fd2083a21fbc8d02c7350f147cd22cb67627fc1e89",
"md5": "7d59c59da6858463f42b8190531f4110",
"sha256": "65c621584fafe31f0640c44c718e9b4c6e3ca362014752df7e5383b9d74d009b"
},
"downloads": -1,
"filename": "cytimes-2.0.3-cp311-cp311-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "7d59c59da6858463f42b8190531f4110",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.10",
"size": 9440084,
"upload_time": "2025-02-06T04:45:41",
"upload_time_iso_8601": "2025-02-06T04:45:41.141694Z",
"url": "https://files.pythonhosted.org/packages/89/ff/8c8b6c78dc32b2d185fd2083a21fbc8d02c7350f147cd22cb67627fc1e89/cytimes-2.0.3-cp311-cp311-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "a9452bd5a987d66fedbd3227c32c196c178f2918b33991684d83cfce663b9732",
"md5": "826fb3cf85ebc8f9b55e0d13c70d0621",
"sha256": "e59b3a4162939b4ae1014ec2f4e02af410bb5cbd76a03021fc23088c6cc08648"
},
"downloads": -1,
"filename": "cytimes-2.0.3-cp311-cp311-win32.whl",
"has_sig": false,
"md5_digest": "826fb3cf85ebc8f9b55e0d13c70d0621",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.10",
"size": 3014988,
"upload_time": "2025-02-06T04:45:43",
"upload_time_iso_8601": "2025-02-06T04:45:43.357069Z",
"url": "https://files.pythonhosted.org/packages/a9/45/2bd5a987d66fedbd3227c32c196c178f2918b33991684d83cfce663b9732/cytimes-2.0.3-cp311-cp311-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "48788c570076a330fd9191fc4aabac1376c3db21ea9f0c472b6dacbe5f831ab5",
"md5": "eaf98125c089a3c637bfca9e88da2b6e",
"sha256": "852528de09d96ee7309104921ff8699b2f75eb5c13f7ff613ecef015bb10aeaf"
},
"downloads": -1,
"filename": "cytimes-2.0.3-cp311-cp311-win_amd64.whl",
"has_sig": false,
"md5_digest": "eaf98125c089a3c637bfca9e88da2b6e",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.10",
"size": 3118504,
"upload_time": "2025-02-06T04:45:45",
"upload_time_iso_8601": "2025-02-06T04:45:45.787554Z",
"url": "https://files.pythonhosted.org/packages/48/78/8c570076a330fd9191fc4aabac1376c3db21ea9f0c472b6dacbe5f831ab5/cytimes-2.0.3-cp311-cp311-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f3f96d5f3c740317de3d03144fb96482e791b9964d2265d303a0edb77de537ca",
"md5": "a3ff837a1b35021018ec0b436877ba88",
"sha256": "bdda50067e1e795718571328d1f7481a2ef4dd7d1cdebe0ce47e208293d9be6e"
},
"downloads": -1,
"filename": "cytimes-2.0.3-cp312-cp312-macosx_10_9_universal2.whl",
"has_sig": false,
"md5_digest": "a3ff837a1b35021018ec0b436877ba88",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.10",
"size": 4389959,
"upload_time": "2025-02-06T04:45:47",
"upload_time_iso_8601": "2025-02-06T04:45:47.317333Z",
"url": "https://files.pythonhosted.org/packages/f3/f9/6d5f3c740317de3d03144fb96482e791b9964d2265d303a0edb77de537ca/cytimes-2.0.3-cp312-cp312-macosx_10_9_universal2.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "1a457fd0daec599febc478a162af5cd5edf1e380fd0c709bbe574ed419e9d465",
"md5": "40cf7765f27af0584a540b4383b10f5b",
"sha256": "8ea7b51631340101fbfb9818614057b278d2b6b14a7c812ace8a1e9f42321b83"
},
"downloads": -1,
"filename": "cytimes-2.0.3-cp312-cp312-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "40cf7765f27af0584a540b4383b10f5b",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.10",
"size": 3341667,
"upload_time": "2025-02-06T04:45:48",
"upload_time_iso_8601": "2025-02-06T04:45:48.946956Z",
"url": "https://files.pythonhosted.org/packages/1a/45/7fd0daec599febc478a162af5cd5edf1e380fd0c709bbe574ed419e9d465/cytimes-2.0.3-cp312-cp312-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "c99f261b0202bf339ba933198dbf66766b104007d60363803ece71bb29d347e9",
"md5": "c788550fd8dfb1b7fd35520a8c948e7c",
"sha256": "5ac1940b97a16dafac9ec2ba78cbe563928a9218b0f1c9af1484300ab613198f"
},
"downloads": -1,
"filename": "cytimes-2.0.3-cp312-cp312-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "c788550fd8dfb1b7fd35520a8c948e7c",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.10",
"size": 3244116,
"upload_time": "2025-02-06T04:45:51",
"upload_time_iso_8601": "2025-02-06T04:45:51.459448Z",
"url": "https://files.pythonhosted.org/packages/c9/9f/261b0202bf339ba933198dbf66766b104007d60363803ece71bb29d347e9/cytimes-2.0.3-cp312-cp312-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "5effc78aae559c0ddf3e456ab0ee6a42ce7f2e01d90734de36cd863ce4a177d6",
"md5": "edb77148d66d17e7b4ba314da9c988e9",
"sha256": "b3d77cea68b0518a1f01c929cb0563a6c3dcb2dc7aa93204fc67b8110c9d2aed"
},
"downloads": -1,
"filename": "cytimes-2.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "edb77148d66d17e7b4ba314da9c988e9",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.10",
"size": 9140334,
"upload_time": "2025-02-06T04:45:53",
"upload_time_iso_8601": "2025-02-06T04:45:53.237172Z",
"url": "https://files.pythonhosted.org/packages/5e/ff/c78aae559c0ddf3e456ab0ee6a42ce7f2e01d90734de36cd863ce4a177d6/cytimes-2.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "73f29b7297d535f915bd71281daf40bf2ed7876d9476dd30b403710ab54b21c7",
"md5": "1619df6e52456535592cd3baf25213c2",
"sha256": "f5f9d3010e15af6599f1fde62abccdbf7b829361b5781e10725b4b183155aee9"
},
"downloads": -1,
"filename": "cytimes-2.0.3-cp312-cp312-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "1619df6e52456535592cd3baf25213c2",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.10",
"size": 9221883,
"upload_time": "2025-02-06T04:45:56",
"upload_time_iso_8601": "2025-02-06T04:45:56.070567Z",
"url": "https://files.pythonhosted.org/packages/73/f2/9b7297d535f915bd71281daf40bf2ed7876d9476dd30b403710ab54b21c7/cytimes-2.0.3-cp312-cp312-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "6128b249e9fb388ac1d1caf41703e912798fef82aefccda828414f0ec458f36f",
"md5": "82db1bd191d52976d380bc53d22947c7",
"sha256": "693af547fe01ac9db86b0c7cff230070655b54eb6c20915feead727d7c568628"
},
"downloads": -1,
"filename": "cytimes-2.0.3-cp312-cp312-win32.whl",
"has_sig": false,
"md5_digest": "82db1bd191d52976d380bc53d22947c7",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.10",
"size": 3010027,
"upload_time": "2025-02-06T04:45:58",
"upload_time_iso_8601": "2025-02-06T04:45:58.987184Z",
"url": "https://files.pythonhosted.org/packages/61/28/b249e9fb388ac1d1caf41703e912798fef82aefccda828414f0ec458f36f/cytimes-2.0.3-cp312-cp312-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "9832407c35fa98857f995cb8176b756cc801807dc25b6f76473ceeaaeef8c84c",
"md5": "a6e9355eb72d837035fdac71e9c75296",
"sha256": "2ec3d029c6c3ce00f6661145132afdd04f4fd73f8842ddc0d0c46ab651b7f5f2"
},
"downloads": -1,
"filename": "cytimes-2.0.3-cp312-cp312-win_amd64.whl",
"has_sig": false,
"md5_digest": "a6e9355eb72d837035fdac71e9c75296",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.10",
"size": 3111979,
"upload_time": "2025-02-06T04:46:00",
"upload_time_iso_8601": "2025-02-06T04:46:00.641432Z",
"url": "https://files.pythonhosted.org/packages/98/32/407c35fa98857f995cb8176b756cc801807dc25b6f76473ceeaaeef8c84c/cytimes-2.0.3-cp312-cp312-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "876baafb51b6609b3c6d3b7291f44b05162d034e76fbd0398f5ff318f9fe9446",
"md5": "57271183c75a0c37796f73aceeea1d5b",
"sha256": "84565e8181b4b4d564cdc96710b21dd6a7e08584b8f4a735c30df41b7c70c1b3"
},
"downloads": -1,
"filename": "cytimes-2.0.3-cp313-cp313-macosx_10_13_universal2.whl",
"has_sig": false,
"md5_digest": "57271183c75a0c37796f73aceeea1d5b",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.10",
"size": 4375451,
"upload_time": "2025-02-06T04:46:02",
"upload_time_iso_8601": "2025-02-06T04:46:02.195444Z",
"url": "https://files.pythonhosted.org/packages/87/6b/aafb51b6609b3c6d3b7291f44b05162d034e76fbd0398f5ff318f9fe9446/cytimes-2.0.3-cp313-cp313-macosx_10_13_universal2.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "00cc80e3ff9b671ea204416b9f8dd631b110f98a5bbb5a6241276cbd557fbbda",
"md5": "a71f552ed78e3c0eb1efdbbf342e570d",
"sha256": "0e83b8e00e96136a6ea37119b6705ddd513807ee3a8877d078503c04b0523a6a"
},
"downloads": -1,
"filename": "cytimes-2.0.3-cp313-cp313-macosx_10_13_x86_64.whl",
"has_sig": false,
"md5_digest": "a71f552ed78e3c0eb1efdbbf342e570d",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.10",
"size": 3333774,
"upload_time": "2025-02-06T04:46:04",
"upload_time_iso_8601": "2025-02-06T04:46:04.148150Z",
"url": "https://files.pythonhosted.org/packages/00/cc/80e3ff9b671ea204416b9f8dd631b110f98a5bbb5a6241276cbd557fbbda/cytimes-2.0.3-cp313-cp313-macosx_10_13_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "595589fc30686dff6ca6d888a84acb082fdbb32199f15fc10a24d1a4e8849da2",
"md5": "4b93d5837d62027360a1197a79884591",
"sha256": "762d3f623549b4be8c8980845e58a483e0d43e5cc2c1303699550ea1c88bb1a2"
},
"downloads": -1,
"filename": "cytimes-2.0.3-cp313-cp313-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "4b93d5837d62027360a1197a79884591",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.10",
"size": 3237107,
"upload_time": "2025-02-06T04:46:05",
"upload_time_iso_8601": "2025-02-06T04:46:05.941692Z",
"url": "https://files.pythonhosted.org/packages/59/55/89fc30686dff6ca6d888a84acb082fdbb32199f15fc10a24d1a4e8849da2/cytimes-2.0.3-cp313-cp313-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f10ad45e4f5e88885c4bd3b22287bbf2076714e90041bb841c71fb675e41dfa6",
"md5": "a3ed4d68eda67684130ca527c30a7f4d",
"sha256": "5147505de1872559e0d177988a695d0c274dfaaaefaed3fcbed66bb6eff2d56e"
},
"downloads": -1,
"filename": "cytimes-2.0.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "a3ed4d68eda67684130ca527c30a7f4d",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.10",
"size": 9135331,
"upload_time": "2025-02-06T04:46:07",
"upload_time_iso_8601": "2025-02-06T04:46:07.762059Z",
"url": "https://files.pythonhosted.org/packages/f1/0a/d45e4f5e88885c4bd3b22287bbf2076714e90041bb841c71fb675e41dfa6/cytimes-2.0.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f14fa81a8834c7f313da394d0d7c563239418478c96718f17b165ee2f73d6ce8",
"md5": "451281c46db81e343b6f5a7f0b847e28",
"sha256": "30eb061c27ee174f4cf5fc9707522409bf3144a9b3b70cfbda545bdce4f66766"
},
"downloads": -1,
"filename": "cytimes-2.0.3-cp313-cp313-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "451281c46db81e343b6f5a7f0b847e28",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.10",
"size": 9212723,
"upload_time": "2025-02-06T04:46:10",
"upload_time_iso_8601": "2025-02-06T04:46:10.518707Z",
"url": "https://files.pythonhosted.org/packages/f1/4f/a81a8834c7f313da394d0d7c563239418478c96718f17b165ee2f73d6ce8/cytimes-2.0.3-cp313-cp313-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "ee54ad6acf6917059481eebc0952f3bec5f5bc0f4ef365a719776092d4197356",
"md5": "db3782cba7cd9431d84e136e8848fc7f",
"sha256": "a8cb2ef02061ab0e1502a5c07d33fe3b35d00b23929c066d2a75d40815dc5fc6"
},
"downloads": -1,
"filename": "cytimes-2.0.3-cp313-cp313-win32.whl",
"has_sig": false,
"md5_digest": "db3782cba7cd9431d84e136e8848fc7f",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.10",
"size": 3007365,
"upload_time": "2025-02-06T04:46:12",
"upload_time_iso_8601": "2025-02-06T04:46:12.881520Z",
"url": "https://files.pythonhosted.org/packages/ee/54/ad6acf6917059481eebc0952f3bec5f5bc0f4ef365a719776092d4197356/cytimes-2.0.3-cp313-cp313-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "a3ad11562203a03188185cd0f61068da5ca62e29d069f285fc45d2925505080a",
"md5": "522a9fd8b6f46386f86173ac80ded2c9",
"sha256": "30f5a6979ecd75134e4ae1ff83c171eec46809883aa3e431a9ab720e75c8c4af"
},
"downloads": -1,
"filename": "cytimes-2.0.3-cp313-cp313-win_amd64.whl",
"has_sig": false,
"md5_digest": "522a9fd8b6f46386f86173ac80ded2c9",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.10",
"size": 3108708,
"upload_time": "2025-02-06T04:46:15",
"upload_time_iso_8601": "2025-02-06T04:46:15.148568Z",
"url": "https://files.pythonhosted.org/packages/a3/ad/11562203a03188185cd0f61068da5ca62e29d069f285fc45d2925505080a/cytimes-2.0.3-cp313-cp313-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "70e112f80401cfdea8c8ea5d048c73925e17a0c936220eea286f91cf396a1d47",
"md5": "8b02ffa28554fd49b0bf8e1d8806178e",
"sha256": "a025578f2824c91f467599b83effea7a3f76c34038ee1111948b9da2ac934b6b"
},
"downloads": -1,
"filename": "cytimes-2.0.3.tar.gz",
"has_sig": false,
"md5_digest": "8b02ffa28554fd49b0bf8e1d8806178e",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 2096203,
"upload_time": "2025-02-06T04:46:16",
"upload_time_iso_8601": "2025-02-06T04:46:16.552714Z",
"url": "https://files.pythonhosted.org/packages/70/e1/12f80401cfdea8c8ea5d048c73925e17a0c936220eea286f91cf396a1d47/cytimes-2.0.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-02-06 04:46:16",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "AresJef",
"github_project": "cyTimes",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "babel",
"specs": [
[
">=",
"2.12.0"
]
]
},
{
"name": "numpy",
"specs": [
[
">=",
"1.25.2"
]
]
},
{
"name": "pandas",
"specs": [
[
">=",
"2.1.0"
]
]
},
{
"name": "pyarrow",
"specs": [
[
">=",
"13.0.0"
]
]
},
{
"name": "python-dateutil",
"specs": [
[
">=",
"2.8.2"
]
]
},
{
"name": "typing-extensions",
"specs": [
[
">=",
"4.9.0"
]
]
}
],
"lcname": "cytimes"
}