kronos-daterange


Namekronos-daterange JSON
Version 0.0.14 PyPI version JSON
download
home_pagehttps://github.com/nat5142/kronos
SummaryKronos makes date ranges easier.
upload_time2023-12-13 22:28:49
maintainer
docs_urlNone
authorNick Tulli
requires_python>=3.7,<3.11
license
keywords kronos kronos-daterange daterange
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            
# Kronos


<div align="center">

[![PyPI - Version](https://img.shields.io/pypi/v/kronos-daterange.svg)](https://pypi.python.org/pypi/kronos-daterange)
[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/kronos-daterange.svg)](https://pypi.python.org/pypi/kronos-daterange)
[![Tests](https://github.com/nat5142/kronos/workflows/tests/badge.svg)](https://github.com/nat5142/kronos/actions?workflow=tests)
[![Codecov](https://codecov.io/gh/nat5142/kronos/branch/main/graph/badge.svg)](https://codecov.io/gh/nat5142/kronos)
[![Read the Docs](https://readthedocs.org/projects/nat5142-kronos/badge/)](https://kronos.readthedocs.io/)
[![PyPI - License](https://img.shields.io/pypi/l/kronos-daterange.svg)](https://pypi.python.org/pypi/kronos-daterange)

[![Black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
[![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://github.com/pre-commit/pre-commit)


</div>


Kronos makes dateranges easier.


* GitHub repo: <https://github.com/nat5142/kronos.git>
* Documentation: <https://nat5142-kronos.readthedocs.io/>
* Free software: BSD

<br>

## Quickstart
---

Install from pip:

```shell
pip install kronos-daterange
```

Import & basic init:
```python
from kronos import Kronos

kronos = Kronos(start_date='2022-01-01', end_date='2022-01-31')
```

<br>

## Feature Demo
---

```python
# import
from kronos import Kronos

# init --> defaults to range of <yesterday, today> unless otherwise specified by `KRONOS_DATERANGE` environment variable
kronos = Kronos()

# manually set dates
kronos = Kronos(start_date='2022-10-17', end_date='2022-10-23')

# set timezone
kronos = Kronos(timezone='America/New_York') 

# specify date format
kronos = Kronos(start_date='10/20/2022', end_date='10/31/2022', date_format='%m/%d/%Y')

# access start, end dates
kronos = Kronos()
kronos.start_date
# 2022-10-19
kronos.end_date
# 2022-10-20

# `date_format` carries over to properties:
kronos = Kronos(date_format='%m/%d/%Y')
kronos.start_date
# 10/19/2022
kronos.end_date
# 10/20/2022

# format start and end date with new format
kronos.format_start('%Y-%m-%d %H:%M:%S')
# 2022-10-20 00:00:00
kronos.format_end('%Y-%m-%d %H:%M:%S')
# 2022-10-21 23:59:59

# get the current date in specified timezone
kronos = Kronos('America/Los_Angeles')
kronos.current_date
# 2022-10-20
kronos = Kronos('America/Los_Angeles', date_format='%m/%d/%Y')
kronos.current_date
# 10/20/2022

# overwrite your object's timezone without altering the time
kronos = Kronos(timezone='UTC')
kronos.change_timezone(tz='America/New_York')

# relative shift forward/back
kronos = Kronos()
kronos.shift_range(weeks=-1)  # pipes kwargs into timedelta
# Kronos(start_date='2022-10-12', end_date='2022-10-13', ... )

# pass start and end dates as datetime objects
start_dt = datetime(2023, 3, 8, 12, 0, 0)
end_dt = datetime(2023, 3, 9, 12, 0, 0)
kronos = Kronos(start_dt, end_dt)
kronos.format_start('%Y-%m-%d %H:%M:%S')
# 2023-03-08 12:00:00
kronos.format_end('%Y-%m-%d %H:%M:%S')
# 2023-03-09 12:00:00

# bisect a daterange
kronos = Kronos('2023-03-01', '2023-03-09')
k1, k2 = kronos.splice('2023-03-04')
print(k1)
# Kronos(start_date='2023-03-01', end_date='2023-03-04', ...) 
print(k2)
# Kronos(start_date='2023-03-04', end_date='2023-03-09', ...)
```

<br>

## Defaults/Environment Variables
---

Kronos is prepared to accept the following environment variables:

- `KRONOS_TIMEZONE`, which defaults to UTC if not set. Can often be overridden at method-levels for one-off timezone conversions.
- `KRONOS_FORMAT`, the strptime date format string for your dates.
- `KRONOS_DATERANGE` (see below)

Note that both `KRONOS_TIMEZONE` and `KRONOS_FORMAT` can be set during init as `timezone=` and `date_format=` arguments, respectively.

### `KRONOS_TIMEZONE`:

Can be any valid timezone name (find them at `pytz.all_timezones`)

### `KRONOS_DATERANGE`:

List of accepted values:

- `LATEST`: start/end dates of yesterady/today
- `YESTERDAY_TODAY`: same as `LATEST`
- `LAST_MONTH`: previous calendar month
- `MTD`: month-to-date
- `LAST_{X}_DAYS`: relative range where end_date is today, start date is set X days behind.
- `THIS_WEEK__{X}`: week-to-date starting on previous day of week specified by X. Valid values for X: `SUN, MON, TUES, WED, THURS, FRI, SAT`

<br>

## Credits
---

This package was created with [Cookiecutter][cookiecutter] and the [fedejaure/cookiecutter-modern-pypackage][cookiecutter-modern-pypackage] project template.

[cookiecutter]: https://github.com/cookiecutter/cookiecutter
[cookiecutter-modern-pypackage]: https://github.com/fedejaure/cookiecutter-modern-pypackage

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/nat5142/kronos",
    "name": "kronos-daterange",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.7,<3.11",
    "maintainer_email": "",
    "keywords": "kronos,kronos-daterange,daterange",
    "author": "Nick Tulli",
    "author_email": "ntulli.dev@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/a1/2e/bdd3ac156c235863c223bfbd0f96b3de1b32f0b12db043be7f4bae9bdbd5/kronos-daterange-0.0.14.tar.gz",
    "platform": null,
    "description": "\n# Kronos\n\n\n<div align=\"center\">\n\n[![PyPI - Version](https://img.shields.io/pypi/v/kronos-daterange.svg)](https://pypi.python.org/pypi/kronos-daterange)\n[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/kronos-daterange.svg)](https://pypi.python.org/pypi/kronos-daterange)\n[![Tests](https://github.com/nat5142/kronos/workflows/tests/badge.svg)](https://github.com/nat5142/kronos/actions?workflow=tests)\n[![Codecov](https://codecov.io/gh/nat5142/kronos/branch/main/graph/badge.svg)](https://codecov.io/gh/nat5142/kronos)\n[![Read the Docs](https://readthedocs.org/projects/nat5142-kronos/badge/)](https://kronos.readthedocs.io/)\n[![PyPI - License](https://img.shields.io/pypi/l/kronos-daterange.svg)](https://pypi.python.org/pypi/kronos-daterange)\n\n[![Black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n[![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://github.com/pre-commit/pre-commit)\n\n\n</div>\n\n\nKronos makes dateranges easier.\n\n\n* GitHub repo: <https://github.com/nat5142/kronos.git>\n* Documentation: <https://nat5142-kronos.readthedocs.io/>\n* Free software: BSD\n\n<br>\n\n## Quickstart\n---\n\nInstall from pip:\n\n```shell\npip install kronos-daterange\n```\n\nImport & basic init:\n```python\nfrom kronos import Kronos\n\nkronos = Kronos(start_date='2022-01-01', end_date='2022-01-31')\n```\n\n<br>\n\n## Feature Demo\n---\n\n```python\n# import\nfrom kronos import Kronos\n\n# init --> defaults to range of <yesterday, today> unless otherwise specified by `KRONOS_DATERANGE` environment variable\nkronos = Kronos()\n\n# manually set dates\nkronos = Kronos(start_date='2022-10-17', end_date='2022-10-23')\n\n# set timezone\nkronos = Kronos(timezone='America/New_York') \n\n# specify date format\nkronos = Kronos(start_date='10/20/2022', end_date='10/31/2022', date_format='%m/%d/%Y')\n\n# access start, end dates\nkronos = Kronos()\nkronos.start_date\n# 2022-10-19\nkronos.end_date\n# 2022-10-20\n\n# `date_format` carries over to properties:\nkronos = Kronos(date_format='%m/%d/%Y')\nkronos.start_date\n# 10/19/2022\nkronos.end_date\n# 10/20/2022\n\n# format start and end date with new format\nkronos.format_start('%Y-%m-%d %H:%M:%S')\n# 2022-10-20 00:00:00\nkronos.format_end('%Y-%m-%d %H:%M:%S')\n# 2022-10-21 23:59:59\n\n# get the current date in specified timezone\nkronos = Kronos('America/Los_Angeles')\nkronos.current_date\n# 2022-10-20\nkronos = Kronos('America/Los_Angeles', date_format='%m/%d/%Y')\nkronos.current_date\n# 10/20/2022\n\n# overwrite your object's timezone without altering the time\nkronos = Kronos(timezone='UTC')\nkronos.change_timezone(tz='America/New_York')\n\n# relative shift forward/back\nkronos = Kronos()\nkronos.shift_range(weeks=-1)  # pipes kwargs into timedelta\n# Kronos(start_date='2022-10-12', end_date='2022-10-13', ... )\n\n# pass start and end dates as datetime objects\nstart_dt = datetime(2023, 3, 8, 12, 0, 0)\nend_dt = datetime(2023, 3, 9, 12, 0, 0)\nkronos = Kronos(start_dt, end_dt)\nkronos.format_start('%Y-%m-%d %H:%M:%S')\n# 2023-03-08 12:00:00\nkronos.format_end('%Y-%m-%d %H:%M:%S')\n# 2023-03-09 12:00:00\n\n# bisect a daterange\nkronos = Kronos('2023-03-01', '2023-03-09')\nk1, k2 = kronos.splice('2023-03-04')\nprint(k1)\n# Kronos(start_date='2023-03-01', end_date='2023-03-04', ...) \nprint(k2)\n# Kronos(start_date='2023-03-04', end_date='2023-03-09', ...)\n```\n\n<br>\n\n## Defaults/Environment Variables\n---\n\nKronos is prepared to accept the following environment variables:\n\n- `KRONOS_TIMEZONE`, which defaults to UTC if not set. Can often be overridden at method-levels for one-off timezone conversions.\n- `KRONOS_FORMAT`, the strptime date format string for your dates.\n- `KRONOS_DATERANGE` (see below)\n\nNote that both `KRONOS_TIMEZONE` and `KRONOS_FORMAT` can be set during init as `timezone=` and `date_format=` arguments, respectively.\n\n### `KRONOS_TIMEZONE`:\n\nCan be any valid timezone name (find them at `pytz.all_timezones`)\n\n### `KRONOS_DATERANGE`:\n\nList of accepted values:\n\n- `LATEST`: start/end dates of yesterady/today\n- `YESTERDAY_TODAY`: same as `LATEST`\n- `LAST_MONTH`: previous calendar month\n- `MTD`: month-to-date\n- `LAST_{X}_DAYS`: relative range where end_date is today, start date is set X days behind.\n- `THIS_WEEK__{X}`: week-to-date starting on previous day of week specified by X. Valid values for X: `SUN, MON, TUES, WED, THURS, FRI, SAT`\n\n<br>\n\n## Credits\n---\n\nThis package was created with [Cookiecutter][cookiecutter] and the [fedejaure/cookiecutter-modern-pypackage][cookiecutter-modern-pypackage] project template.\n\n[cookiecutter]: https://github.com/cookiecutter/cookiecutter\n[cookiecutter-modern-pypackage]: https://github.com/fedejaure/cookiecutter-modern-pypackage\n",
    "bugtrack_url": null,
    "license": "",
    "summary": "Kronos makes date ranges easier.",
    "version": "0.0.14",
    "project_urls": {
        "Bug Tracker": "https://github.com/nat5142/kronos/issues",
        "Documentation": "https://nat5142-kronos.readthedocs.io/",
        "Homepage": "https://github.com/nat5142/kronos",
        "Repository": "https://github.com/nat5142/kronos"
    },
    "split_keywords": [
        "kronos",
        "kronos-daterange",
        "daterange"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1a4cd932fcde8169cd6fd6a25c95935db2a38e22fb57545692b0beffd5393c4c",
                "md5": "cbc642627ea0393dd6c63e2c946ee50d",
                "sha256": "0fff921864c93b4f8f0372fb1c9d61f0ac5529b3c8d71cbb0867a40af7413ea0"
            },
            "downloads": -1,
            "filename": "kronos_daterange-0.0.14-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "cbc642627ea0393dd6c63e2c946ee50d",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7,<3.11",
            "size": 10994,
            "upload_time": "2023-12-13T22:28:50",
            "upload_time_iso_8601": "2023-12-13T22:28:50.671279Z",
            "url": "https://files.pythonhosted.org/packages/1a/4c/d932fcde8169cd6fd6a25c95935db2a38e22fb57545692b0beffd5393c4c/kronos_daterange-0.0.14-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a12ebdd3ac156c235863c223bfbd0f96b3de1b32f0b12db043be7f4bae9bdbd5",
                "md5": "335909632aee663f1dac72810c2f5f50",
                "sha256": "539f7563eab6a930bd4506ecc0c64f487911d24af192a7c085f18bea45bbe6dc"
            },
            "downloads": -1,
            "filename": "kronos-daterange-0.0.14.tar.gz",
            "has_sig": false,
            "md5_digest": "335909632aee663f1dac72810c2f5f50",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7,<3.11",
            "size": 12938,
            "upload_time": "2023-12-13T22:28:49",
            "upload_time_iso_8601": "2023-12-13T22:28:49.323112Z",
            "url": "https://files.pythonhosted.org/packages/a1/2e/bdd3ac156c235863c223bfbd0f96b3de1b32f0b12db043be7f4bae9bdbd5/kronos-daterange-0.0.14.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-12-13 22:28:49",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "nat5142",
    "github_project": "kronos",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "kronos-daterange"
}
        
Elapsed time: 0.16995s