# 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/5d/14/3cfafb33686eefa7d38d7ecb3183ce5de8ce991abb0785eff340acd64a9c/cytimes-2.0.2.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.2",
"project_urls": {
"Homepage": "https://github.com/AresJef/cyTimes"
},
"split_keywords": [
"cytimes",
" parser",
" datetime",
" pandas",
" series",
" datetimeindex"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "6d207c2c35054368ec47c6fe10a8cfd66381604e84a8365f76f58abdedd5f396",
"md5": "f882af0e0919f2a0ca14b3dc36c71461",
"sha256": "59f1fcd9d308997186c1167c7a5d9f492d247bdff2db2bfba7be3c5c342b186a"
},
"downloads": -1,
"filename": "cytimes-2.0.2-cp310-cp310-macosx_10_9_universal2.whl",
"has_sig": false,
"md5_digest": "f882af0e0919f2a0ca14b3dc36c71461",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.10",
"size": 4369154,
"upload_time": "2024-12-17T11:47:05",
"upload_time_iso_8601": "2024-12-17T11:47:05.325731Z",
"url": "https://files.pythonhosted.org/packages/6d/20/7c2c35054368ec47c6fe10a8cfd66381604e84a8365f76f58abdedd5f396/cytimes-2.0.2-cp310-cp310-macosx_10_9_universal2.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "82757f7cd7ac78ed5fb05acf358897bd38542ffe70a5840ecc50496f6d8e5d7d",
"md5": "9f7a1e288c962ae4db94b5c826683106",
"sha256": "32ea4fe4f773a662e655c9bfcb5fa46ed21485210edbd73ac4371c906678fa38"
},
"downloads": -1,
"filename": "cytimes-2.0.2-cp310-cp310-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "9f7a1e288c962ae4db94b5c826683106",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.10",
"size": 3326955,
"upload_time": "2024-12-17T11:47:08",
"upload_time_iso_8601": "2024-12-17T11:47:08.533573Z",
"url": "https://files.pythonhosted.org/packages/82/75/7f7cd7ac78ed5fb05acf358897bd38542ffe70a5840ecc50496f6d8e5d7d/cytimes-2.0.2-cp310-cp310-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "8820715ecc1a19a8c4473fa352d499e0a662aa4e6b25c992de460c400903bb74",
"md5": "62c3b160e30b536ac6fe3ae2c722eef4",
"sha256": "e827ddf51a14847fda3ade9a1c49635b1b5960650225586596896160adaf82d5"
},
"downloads": -1,
"filename": "cytimes-2.0.2-cp310-cp310-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "62c3b160e30b536ac6fe3ae2c722eef4",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.10",
"size": 3236641,
"upload_time": "2024-12-17T11:47:11",
"upload_time_iso_8601": "2024-12-17T11:47:11.411721Z",
"url": "https://files.pythonhosted.org/packages/88/20/715ecc1a19a8c4473fa352d499e0a662aa4e6b25c992de460c400903bb74/cytimes-2.0.2-cp310-cp310-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "06960e1bfb8e4831f22b171e1496f2d4ed1a0d27ccfc9ecb5dcc009fcfc1f9ee",
"md5": "53e7d5a666a03fca946035545f02eb3a",
"sha256": "edffa6495c6abe7a3b1630ce89f870a7bd3b5236fb1cc4c361ec5a38a9f13e65"
},
"downloads": -1,
"filename": "cytimes-2.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "53e7d5a666a03fca946035545f02eb3a",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.10",
"size": 8958009,
"upload_time": "2024-12-17T11:47:14",
"upload_time_iso_8601": "2024-12-17T11:47:14.695674Z",
"url": "https://files.pythonhosted.org/packages/06/96/0e1bfb8e4831f22b171e1496f2d4ed1a0d27ccfc9ecb5dcc009fcfc1f9ee/cytimes-2.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "58e0ef2514d73a5c90445ac6a6a174da7593cc662662e68b25f96c330c496555",
"md5": "47e21baaad4e01b3b2b8398f9e377c2f",
"sha256": "625796e729d95525306c74cb3b1b9076efd6e579fc0967eaafdd2f06d1c6122d"
},
"downloads": -1,
"filename": "cytimes-2.0.2-cp310-cp310-musllinux_1_1_x86_64.whl",
"has_sig": false,
"md5_digest": "47e21baaad4e01b3b2b8398f9e377c2f",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.10",
"size": 8977578,
"upload_time": "2024-12-17T11:47:18",
"upload_time_iso_8601": "2024-12-17T11:47:18.467814Z",
"url": "https://files.pythonhosted.org/packages/58/e0/ef2514d73a5c90445ac6a6a174da7593cc662662e68b25f96c330c496555/cytimes-2.0.2-cp310-cp310-musllinux_1_1_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "558c4396aa37a630a6a4ad5e6759c248afa33ddbd922c006f1d102afbb80feb8",
"md5": "d66e394aece5072557c4264be002709d",
"sha256": "47ff8e1f431a14b51849e4f2c136a58cb5b1eeb2def3cfc3cc64e9d0785a9871"
},
"downloads": -1,
"filename": "cytimes-2.0.2-cp310-cp310-win32.whl",
"has_sig": false,
"md5_digest": "d66e394aece5072557c4264be002709d",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.10",
"size": 3019218,
"upload_time": "2024-12-17T11:47:22",
"upload_time_iso_8601": "2024-12-17T11:47:22.675775Z",
"url": "https://files.pythonhosted.org/packages/55/8c/4396aa37a630a6a4ad5e6759c248afa33ddbd922c006f1d102afbb80feb8/cytimes-2.0.2-cp310-cp310-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "d64b2a4428b6b214a197e36633cbfc75ef5a47f8d7f665abf48935cdafb5d4f9",
"md5": "95ecc3562bc3963eeb92ddcdae084eeb",
"sha256": "b75af55e3247a40a5ad97ea164a2505f7fdcab122059acfde484691ad507f01f"
},
"downloads": -1,
"filename": "cytimes-2.0.2-cp310-cp310-win_amd64.whl",
"has_sig": false,
"md5_digest": "95ecc3562bc3963eeb92ddcdae084eeb",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.10",
"size": 3109254,
"upload_time": "2024-12-17T11:47:25",
"upload_time_iso_8601": "2024-12-17T11:47:25.547646Z",
"url": "https://files.pythonhosted.org/packages/d6/4b/2a4428b6b214a197e36633cbfc75ef5a47f8d7f665abf48935cdafb5d4f9/cytimes-2.0.2-cp310-cp310-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "aad4930107cc6a92aea09793c6b343f556a059a95d2a77bfdb07a6d09032d686",
"md5": "2f962986a9921eb2e6502958582b1cb9",
"sha256": "57b05ec51f3d4606dcef55e613565dff72cf565aa8ffd87836ee606b1480ac79"
},
"downloads": -1,
"filename": "cytimes-2.0.2-cp311-cp311-macosx_10_9_universal2.whl",
"has_sig": false,
"md5_digest": "2f962986a9921eb2e6502958582b1cb9",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.10",
"size": 4381301,
"upload_time": "2024-12-17T11:47:28",
"upload_time_iso_8601": "2024-12-17T11:47:28.381589Z",
"url": "https://files.pythonhosted.org/packages/aa/d4/930107cc6a92aea09793c6b343f556a059a95d2a77bfdb07a6d09032d686/cytimes-2.0.2-cp311-cp311-macosx_10_9_universal2.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "90145605027b0b271eb6b8e0f11adb5b1e4666140cf0a15023654facd019f049",
"md5": "dc561114d20e6f5bbe1a6a39215fe4d4",
"sha256": "770ebe30073be5babbc75e48857f1ca3131db2f55611128e4af6eb806bc411ff"
},
"downloads": -1,
"filename": "cytimes-2.0.2-cp311-cp311-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "dc561114d20e6f5bbe1a6a39215fe4d4",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.10",
"size": 3335178,
"upload_time": "2024-12-17T11:47:30",
"upload_time_iso_8601": "2024-12-17T11:47:30.467800Z",
"url": "https://files.pythonhosted.org/packages/90/14/5605027b0b271eb6b8e0f11adb5b1e4666140cf0a15023654facd019f049/cytimes-2.0.2-cp311-cp311-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "1869d38c1ae2b0c05f58f40d6187be1fafad288f62b912b42792b9bcdb211ff1",
"md5": "c8a3263266a072585e61032110e01496",
"sha256": "4aa9e66a27dd7dbfb528305340664c822bc9289abce3fd2a9031a70b19fea4c6"
},
"downloads": -1,
"filename": "cytimes-2.0.2-cp311-cp311-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "c8a3263266a072585e61032110e01496",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.10",
"size": 3239927,
"upload_time": "2024-12-17T11:47:32",
"upload_time_iso_8601": "2024-12-17T11:47:32.192357Z",
"url": "https://files.pythonhosted.org/packages/18/69/d38c1ae2b0c05f58f40d6187be1fafad288f62b912b42792b9bcdb211ff1/cytimes-2.0.2-cp311-cp311-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "ce9f187f011bd00f5212bee36a00d56748cae52eb160df7c356eb15a5fc8edbd",
"md5": "fb58b39b168be6eb38cdd4f33d43ce49",
"sha256": "6a19350e4301a0e135574bedd3fcfd3bfcd500b6fb49a0d0c3cae860fd623e8b"
},
"downloads": -1,
"filename": "cytimes-2.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "fb58b39b168be6eb38cdd4f33d43ce49",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.10",
"size": 9414644,
"upload_time": "2024-12-17T11:47:34",
"upload_time_iso_8601": "2024-12-17T11:47:34.772848Z",
"url": "https://files.pythonhosted.org/packages/ce/9f/187f011bd00f5212bee36a00d56748cae52eb160df7c356eb15a5fc8edbd/cytimes-2.0.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "2d0283c3505170c25f7f05c378359b1db05a89faf0aece155adcef1aec7a82dc",
"md5": "bc56266b3ea31318c9d30f5c21d09ca8",
"sha256": "729dfd99ef1644a5af86dd73a12a5e11921311f95d2233b62dbd5500e7168e12"
},
"downloads": -1,
"filename": "cytimes-2.0.2-cp311-cp311-musllinux_1_1_x86_64.whl",
"has_sig": false,
"md5_digest": "bc56266b3ea31318c9d30f5c21d09ca8",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.10",
"size": 9460648,
"upload_time": "2024-12-17T11:47:37",
"upload_time_iso_8601": "2024-12-17T11:47:37.401715Z",
"url": "https://files.pythonhosted.org/packages/2d/02/83c3505170c25f7f05c378359b1db05a89faf0aece155adcef1aec7a82dc/cytimes-2.0.2-cp311-cp311-musllinux_1_1_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "0b810d33af8146e730e3419d313215167ed32b891c5ceb85bfc5f3b3b030cbf9",
"md5": "96f20251bb31ab35d95f161b1d2f60d4",
"sha256": "710ce6b98d5bf90c5941cefb868b134d30e8b5e07f1b4766c9b7b791e508fa49"
},
"downloads": -1,
"filename": "cytimes-2.0.2-cp311-cp311-win32.whl",
"has_sig": false,
"md5_digest": "96f20251bb31ab35d95f161b1d2f60d4",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.10",
"size": 3015040,
"upload_time": "2024-12-17T11:47:40",
"upload_time_iso_8601": "2024-12-17T11:47:40.874223Z",
"url": "https://files.pythonhosted.org/packages/0b/81/0d33af8146e730e3419d313215167ed32b891c5ceb85bfc5f3b3b030cbf9/cytimes-2.0.2-cp311-cp311-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "3611be492635448b0ec78f8be0bf61f62a687fe71efeccb060f134cbb54f74e6",
"md5": "97f90c7500a20e5ef500225711a948b7",
"sha256": "6d80fa25d7555267abfc664ad8627acb53127361a1b69e82db9fc69b76dd3fbc"
},
"downloads": -1,
"filename": "cytimes-2.0.2-cp311-cp311-win_amd64.whl",
"has_sig": false,
"md5_digest": "97f90c7500a20e5ef500225711a948b7",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.10",
"size": 3118552,
"upload_time": "2024-12-17T11:47:43",
"upload_time_iso_8601": "2024-12-17T11:47:43.795870Z",
"url": "https://files.pythonhosted.org/packages/36/11/be492635448b0ec78f8be0bf61f62a687fe71efeccb060f134cbb54f74e6/cytimes-2.0.2-cp311-cp311-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "6ae234276d20f68b07af5ebc5e1b8edab1b2d307bf3e9e35cd5f8c4c48619ed5",
"md5": "5faa1f5252a483e0bc5e37cc88e0d956",
"sha256": "1780a0aeb22270982c40de274579f0e5c161d784e54fa52f9853aafefbe60823"
},
"downloads": -1,
"filename": "cytimes-2.0.2-cp312-cp312-macosx_10_9_universal2.whl",
"has_sig": false,
"md5_digest": "5faa1f5252a483e0bc5e37cc88e0d956",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.10",
"size": 4389987,
"upload_time": "2024-12-17T11:47:46",
"upload_time_iso_8601": "2024-12-17T11:47:46.880459Z",
"url": "https://files.pythonhosted.org/packages/6a/e2/34276d20f68b07af5ebc5e1b8edab1b2d307bf3e9e35cd5f8c4c48619ed5/cytimes-2.0.2-cp312-cp312-macosx_10_9_universal2.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c27b87a19b74342e669796b4d2cc09f5d444a5a098a9db5785ceb5f08b3bae3a",
"md5": "ddd681f8d70c42e53cd985dfd8b79750",
"sha256": "384a10633988da40e4b7562f10f5dbcc1ca586d903110f60a03c632578d94328"
},
"downloads": -1,
"filename": "cytimes-2.0.2-cp312-cp312-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "ddd681f8d70c42e53cd985dfd8b79750",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.10",
"size": 3341713,
"upload_time": "2024-12-17T11:47:48",
"upload_time_iso_8601": "2024-12-17T11:47:48.391779Z",
"url": "https://files.pythonhosted.org/packages/c2/7b/87a19b74342e669796b4d2cc09f5d444a5a098a9db5785ceb5f08b3bae3a/cytimes-2.0.2-cp312-cp312-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "4a56dd8e647565a4e6d8f0e3414f363c0036b33ea1fe011fbba00b99a1839e96",
"md5": "71e893daecfc0c4aa1a638a02677df6d",
"sha256": "9cf9752bcb857158640c0fc0e3f217e237e56606f8d73d353716180495758c36"
},
"downloads": -1,
"filename": "cytimes-2.0.2-cp312-cp312-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "71e893daecfc0c4aa1a638a02677df6d",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.10",
"size": 3244172,
"upload_time": "2024-12-17T11:47:51",
"upload_time_iso_8601": "2024-12-17T11:47:51.085573Z",
"url": "https://files.pythonhosted.org/packages/4a/56/dd8e647565a4e6d8f0e3414f363c0036b33ea1fe011fbba00b99a1839e96/cytimes-2.0.2-cp312-cp312-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "fe720427632b7b4cb178d6d24b7cb7bb246aaa3984461408127ac0e7634c07b6",
"md5": "9c8e1536b9ea38ff217c1e0b93cfb8ec",
"sha256": "4e48782b46b08b7de71a25f4bdbaadbcbc9b9d4f9107327f693812dea5cef3ec"
},
"downloads": -1,
"filename": "cytimes-2.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "9c8e1536b9ea38ff217c1e0b93cfb8ec",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.10",
"size": 9149359,
"upload_time": "2024-12-17T11:47:53",
"upload_time_iso_8601": "2024-12-17T11:47:53.207652Z",
"url": "https://files.pythonhosted.org/packages/fe/72/0427632b7b4cb178d6d24b7cb7bb246aaa3984461408127ac0e7634c07b6/cytimes-2.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "ca1d17bfb4eed8124bb70cbae78966c41f4b077938bb6ea059f1e820953e9e5e",
"md5": "454a386c166e6065ed03e6414cf88ad1",
"sha256": "fc5580c3bbc1c8f451611ce0d6578daa9ff1c655673419aeb03156bd0daa8d84"
},
"downloads": -1,
"filename": "cytimes-2.0.2-cp312-cp312-musllinux_1_1_x86_64.whl",
"has_sig": false,
"md5_digest": "454a386c166e6065ed03e6414cf88ad1",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.10",
"size": 9125478,
"upload_time": "2024-12-17T11:47:56",
"upload_time_iso_8601": "2024-12-17T11:47:56.113136Z",
"url": "https://files.pythonhosted.org/packages/ca/1d/17bfb4eed8124bb70cbae78966c41f4b077938bb6ea059f1e820953e9e5e/cytimes-2.0.2-cp312-cp312-musllinux_1_1_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "9bdf5001d4399cec2df91c673b626e88328c3eaa4452cbeaa94b2b85d6bfb7f7",
"md5": "1addd1c432e89668d54556d9bdb1c2bc",
"sha256": "ce2469fb976f5a1d9909073eba08bf1a792eaf6cecb2497b03f8ef11620ce83b"
},
"downloads": -1,
"filename": "cytimes-2.0.2-cp312-cp312-win32.whl",
"has_sig": false,
"md5_digest": "1addd1c432e89668d54556d9bdb1c2bc",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.10",
"size": 3010151,
"upload_time": "2024-12-17T11:48:00",
"upload_time_iso_8601": "2024-12-17T11:48:00.271608Z",
"url": "https://files.pythonhosted.org/packages/9b/df/5001d4399cec2df91c673b626e88328c3eaa4452cbeaa94b2b85d6bfb7f7/cytimes-2.0.2-cp312-cp312-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "4d2666351b010a3a4c49030c466bfd1ac61a44a31c30da450a3aa7c804b97437",
"md5": "2a8e3088a2c893b1ced48e644542e2a3",
"sha256": "d6727da00592b99fb1c1c92bb210ece6e9a52e6dc1d3a7a8ca77f6dba7ef7df5"
},
"downloads": -1,
"filename": "cytimes-2.0.2-cp312-cp312-win_amd64.whl",
"has_sig": false,
"md5_digest": "2a8e3088a2c893b1ced48e644542e2a3",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.10",
"size": 3112009,
"upload_time": "2024-12-17T11:48:01",
"upload_time_iso_8601": "2024-12-17T11:48:01.833103Z",
"url": "https://files.pythonhosted.org/packages/4d/26/66351b010a3a4c49030c466bfd1ac61a44a31c30da450a3aa7c804b97437/cytimes-2.0.2-cp312-cp312-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "5d143cfafb33686eefa7d38d7ecb3183ce5de8ce991abb0785eff340acd64a9c",
"md5": "d271c36c8ebef9833b55bd166cd903ea",
"sha256": "02c44b902543160558b7cda481502c8aa2022f8a73097854d48d2260bc23d706"
},
"downloads": -1,
"filename": "cytimes-2.0.2.tar.gz",
"has_sig": false,
"md5_digest": "d271c36c8ebef9833b55bd166cd903ea",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 2096176,
"upload_time": "2024-12-17T11:48:03",
"upload_time_iso_8601": "2024-12-17T11:48:03.432033Z",
"url": "https://files.pythonhosted.org/packages/5d/14/3cfafb33686eefa7d38d7ecb3183ce5de8ce991abb0785eff340acd64a9c/cytimes-2.0.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-12-17 11:48:03",
"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"
}