SEARCH
NEW RPMS
DIRECTORIES
ABOUT
FAQ
VARIOUS
BLOG

 
 

python310-pendulum rpm build for : openSUSE Tumbleweed. For other distributions click python310-pendulum.

Name : python310-pendulum
Version : 2.0.5 Vendor : obs://build_opensuse_org/home:ocurero
Release : 1.262 Date : 2024-10-11 22:21:46
Group : Development/Languages/Python Source RPM : python-pendulum-2.0.5-1.262.src.rpm
Size : 0.63 MB
Packager : (none)
Summary : Python datetimes made easy
Description :
Pendulum


.. image:: https://img.shields.io/pypi/v/pendulum.svg
:target: https://pypi.python.org/pypi/pendulum

.. image:: https://img.shields.io/pypi/l/pendulum.svg
:target: https://pypi.python.org/pypi/pendulum

.. image:: https://img.shields.io/codecov/c/github/sdispater/pendulum/master.svg
:target: https://codecov.io/gh/sdispater/pendulum/branch/master

.. image:: https://travis-ci.org/sdispater/pendulum.svg
:alt: Pendulum Build status
:target: https://travis-ci.org/sdispater/pendulum

Python datetimes made easy.

Supports Python **2.7** and **3.4+**.


.. code-block:: python

>>> import pendulum

>>> now_in_paris = pendulum.now(\'Europe/Paris\')
>>> now_in_paris
\'2016-07-04T00:49:58.502116+02:00\'


>>> now_in_paris.in_timezone(\'UTC\')
\'2016-07-03T22:49:58.502116+00:00\'

>>> tomorrow = pendulum.now().add(days=1)
>>> last_week = pendulum.now().subtract(weeks=1)

>>> past = pendulum.now().subtract(minutes=2)
>>> past.diff_for_humans()
>>> \'2 minutes ago\'

>>> delta = past - last_week
>>> delta.hours
23
>>> delta.in_words(locale=\'en\')
\'6 days 23 hours 58 minutes\'


>>> pendulum.datetime(2013, 3, 31, 2, 30, tz=\'Europe/Paris\')
\'2013-03-31T03:30:00+02:00\' # 2:30 does not exist (Skipped time)


>>> just_before = pendulum.datetime(2013, 3, 31, 1, 59, 59, 999999, tz=\'Europe/Paris\')
\'2013-03-31T01:59:59.999999+01:00\'
>>> just_before.add(microseconds=1)
\'2013-03-31T03:00:00+02:00\'


Why Pendulum?
=============

Native ``datetime`` instances are enough for basic cases but when you face more complex use-cases
they often show limitations and are not so intuitive to work with.
``Pendulum`` provides a cleaner and more easy to use API while still relying on the standard library.
So it\'s still ``datetime`` but better.

Unlike other datetime libraries for Python, Pendulum is a drop-in replacement
for the standard ``datetime`` class (it inherits from it), so, basically, you can replace all your ``datetime``
instances by ``DateTime`` instances in you code (exceptions exist for libraries that check
the type of the objects by using the ``type`` function like ``sqlite3`` or ``PyMySQL`` for instance).

It also removes the notion of naive datetimes: each ``Pendulum`` instance is timezone-aware
and by default in ``UTC`` for ease of use.

Pendulum also improves the standard ``timedelta`` class by providing more intuitive methods and properties.


Why not Arrow?
==============

Arrow is the most popular datetime library for Python right now, however its behavior
and API can be erratic and unpredictable. The ``get()`` method can receive pretty much anything
and it will try its best to return something while silently failing to handle some cases:

.. code-block:: python

arrow.get(\'2016-1-17\')


pendulum.parse(\'2016-1-17\')


arrow.get(\'20160413\')


pendulum.parse(\'20160413\')


arrow.get(\'2016-W07-5\')


pendulum.parse(\'2016-W07-5\')



just_before = arrow.Arrow(2013, 3, 31, 1, 59, 59, 999999, \'Europe/Paris\')
just_after = just_before.replace(microseconds=1)
\'2013-03-31T02:00:00+02:00\'


(just_after.to(\'utc\') - just_before.to(\'utc\')).total_seconds()
-3599.999999


just_before = pendulum.datetime(2013, 3, 31, 1, 59, 59, 999999, \'Europe/Paris\')
just_after = just_before.add(microseconds=1)
\'2013-03-31T03:00:00+02:00\'

(just_after.in_timezone(\'utc\') - just_before.in_timezone(\'utc\')).total_seconds()
1e-06

Those are a few examples showing that Arrow cannot always be trusted to have a consistent
behavior with the data you are passing to it.


Limitations
===========

Even though the ``DateTime`` class is a subclass of ``datetime`` there are some rare cases where
it can\'t replace the native class directly. Here is a list (non-exhaustive) of the reported cases with
a possible solution, if any:

* ``sqlite3`` will use the ``type()`` function to determine the type of the object by default. To work around it you can register a new adapter:

.. code-block:: python

from pendulum import DateTime
from sqlite3 import register_adapter

register_adapter(DateTime, lambda val: val.isoformat(\' \'))

* ``mysqlclient`` (former ``MySQLdb``) and ``PyMySQL`` will use the ``type()`` function to determine the type of the object by default. To work around it you can register a new adapter:

.. code-block:: python

import MySQLdb.converters
import pymysql.converters

from pendulum import DateTime

MySQLdb.converters.conversions[DateTime] = MySQLdb.converters.DateTime2literal
pymysql.converters.conversions[DateTime] = pymysql.converters.escape_datetime

* ``django`` will use the ``isoformat()`` method to store datetimes in the database. However since ``pendulum`` is always timezone aware the offset information will always be returned by ``isoformat()`` raising an error, at least for MySQL databases. To work around it you can either create your own ``DateTimeField`` or use the previous workaround for ``MySQLdb``:

.. code-block:: python

from django.db.models import DateTimeField as BaseDateTimeField
from pendulum import DateTime


class DateTimeField(BaseDateTimeField):

def value_to_string(self, obj):
val = self.value_from_object(obj)

if isinstance(value, DateTime):
return value.to_datetime_string()

return \'\' if val is None else val.isoformat()


Resources
=========

* `Official Website < https://pendulum.eustace.io>`_
* `Documentation < https://pendulum.eustace.io/docs/>`_
* `Issue Tracker < https://github.com/sdispater/pendulum/issues>`_


Contributing
============

Contributions are welcome, especially with localization.

Getting started
---------------

To work on the Pendulum codebase, you\'ll want to clone the project locally
and install the required depedendencies via `poetry < https://poetry.eustace.io>`_.

.. code-block:: bash

$ git clone gitAATTgithub.com:sdispater/pendulum.git
$ poetry install

Localization
------------

If you want to help with localization, there are two different cases: the locale already exists
or not.

If the locale does not exist you will need to create it by using the ``clock`` utility:

.. code-block:: bash

./clock locale:create < your-locale>

It will generate a directory in ``pendulum/locales`` named after your locale, with the following
structure:

.. code-block:: text

< your-locale>/
- custom.py
- locale.py

The ``locale.py`` file must not be modified. It contains the translations provided by
the CLDR database.

The ``custom.py`` file is the one you want to modify. It contains the data needed
by Pendulum that are not provided by the CLDR database. You can take the `en < https://github.com/sdispater/pendulum/tree/master/pendulum/locales/en/custom.py>`_
data as a reference to see which data is needed.

You should also add tests for the created or modified locale.

RPM found in directory: /packages/linux-pbone/ftp5.gwdg.de/pub/opensuse/repositories/home:/ocurero:/openbm:/Tumbleweed/openSUSE_Tumbleweed/i586

Content of RPM  Provides Requires

Hmm ... It's impossible ;-) This RPM doesn't exist on any FTP server

Provides :
python3.10dist(pendulum)
python310-pendulum
python310-pendulum(x86-32)
python3dist(pendulum)

Requires :
libc.so.6
libc.so.6(GLIBC_2.0)
libc.so.6(GLIBC_2.1.3)
libc.so.6(GLIBC_2.3.4)
libc.so.6(GLIBC_2.4)
python(abi) = 3.10
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PartialHardlinkSets) <= 4.0.4-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(PayloadIsZstd) <= 5.4.18-1


Content of RPM :
/usr/lib/python3.10/site-packages/pendulum
/usr/lib/python3.10/site-packages/pendulum-2.0.5-py3.10.egg-info
/usr/lib/python3.10/site-packages/pendulum-2.0.5-py3.10.egg-info/PKG-INFO
/usr/lib/python3.10/site-packages/pendulum-2.0.5-py3.10.egg-info/SOURCES.txt
/usr/lib/python3.10/site-packages/pendulum-2.0.5-py3.10.egg-info/dependency_links.txt
/usr/lib/python3.10/site-packages/pendulum-2.0.5-py3.10.egg-info/requires.txt
/usr/lib/python3.10/site-packages/pendulum-2.0.5-py3.10.egg-info/top_level.txt
/usr/lib/python3.10/site-packages/pendulum/__init__.py
/usr/lib/python3.10/site-packages/pendulum/__pycache__
/usr/lib/python3.10/site-packages/pendulum/__pycache__/__init__.cpython-310.opt-1.pyc
/usr/lib/python3.10/site-packages/pendulum/__pycache__/__init__.cpython-310.pyc
/usr/lib/python3.10/site-packages/pendulum/__pycache__/__version__.cpython-310.opt-1.pyc
/usr/lib/python3.10/site-packages/pendulum/__pycache__/__version__.cpython-310.pyc
/usr/lib/python3.10/site-packages/pendulum/__pycache__/constants.cpython-310.opt-1.pyc
/usr/lib/python3.10/site-packages/pendulum/__pycache__/constants.cpython-310.pyc
/usr/lib/python3.10/site-packages/pendulum/__pycache__/date.cpython-310.opt-1.pyc
/usr/lib/python3.10/site-packages/pendulum/__pycache__/date.cpython-310.pyc
/usr/lib/python3.10/site-packages/pendulum/__pycache__/datetime.cpython-310.opt-1.pyc
/usr/lib/python3.10/site-packages/pendulum/__pycache__/datetime.cpython-310.pyc
/usr/lib/python3.10/site-packages/pendulum/__pycache__/duration.cpython-310.opt-1.pyc
/usr/lib/python3.10/site-packages/pendulum/__pycache__/duration.cpython-310.pyc
/usr/lib/python3.10/site-packages/pendulum/__pycache__/exceptions.cpython-310.opt-1.pyc
/usr/lib/python3.10/site-packages/pendulum/__pycache__/exceptions.cpython-310.pyc
/usr/lib/python3.10/site-packages/pendulum/__pycache__/helpers.cpython-310.opt-1.pyc
/usr/lib/python3.10/site-packages/pendulum/__pycache__/helpers.cpython-310.pyc
/usr/lib/python3.10/site-packages/pendulum/__pycache__/parser.cpython-310.opt-1.pyc
/usr/lib/python3.10/site-packages/pendulum/__pycache__/parser.cpython-310.pyc
/usr/lib/python3.10/site-packages/pendulum/__pycache__/period.cpython-310.opt-1.pyc
/usr/lib/python3.10/site-packages/pendulum/__pycache__/period.cpython-310.pyc
/usr/lib/python3.10/site-packages/pendulum/__pycache__/time.cpython-310.opt-1.pyc
There is 251 files more in these RPM.

 
ICM