Compare commits

..

22 Commits

Author SHA1 Message Date
kennethreitz 8af92bc33c fixes #19 2016-12-20 12:20:50 -05:00
kennethreitz 917420071f v0.1.2 2016-12-20 12:15:01 -05:00
kennethreitz 2bb430b91d make setup.py python 2/3 compatible 2016-12-20 12:14:48 -05:00
kennethreitz 967638228a -e . 2016-12-20 12:12:59 -05:00
kennethreitz 1ba2dac284 Merge pull request #23 from aaronjeline/master
setup.py fix
2016-12-20 12:12:04 -05:00
Aaron Eline 89a54abf1f Added fix from @joaoleveiga 2016-12-20 09:56:00 -05:00
Aaron Eline f119fe927b Fixed missing comma in setup.py 2016-12-20 09:53:51 -05:00
kennethreitz 8b6ca639cb Merge pull request #21 from Factr/master
Python files executable, ruamel.yaml required
2016-12-19 13:29:32 -08:00
Adam Nelson 48c245a8ad Python files executable, ruamel.yaml required 2016-12-19 16:22:22 -05:00
kennethreitz 29a5b990fd day_first in tests 2016-12-19 13:31:03 -05:00
kennethreitz 69c88552d7 day_first 2016-12-19 13:02:47 -05:00
kennethreitz 2126c8f33e Merge pull request #20 from jerry2yu/master
Add datafirst parameter to parse method. Set datafirst true to parse …
2016-12-19 10:01:31 -08:00
kennethreitz dbc20b3026 Merge pull request #18 from harshit98/master
Update README.rst
2016-12-19 09:49:19 -08:00
Jerry Yu c521672f0e Add datafirst parameter to parse method. Set datafirst true to parse the first value in date (e.g. 01/05/2016) as the day 2016-12-19 13:00:18 -04:00
Harshit Prasad f756b13d4d Update README.rst 2016-12-19 21:01:07 +05:30
kennethreitz 2ce5a23e38 Merge pull request #16 from andrewthehan/typoReadme
Fix typo in README.rst
2016-12-18 21:37:03 -08:00
Andrew Han 605e15ae27 Fix typo in README.rst 2016-12-18 20:10:00 -08:00
kennethreitz 07a3e814a2 Update README.rst 2016-12-18 16:49:37 -05:00
kennethreitz 2e811d8689 Update README.rst 2016-12-18 16:47:28 -05:00
kennethreitz cbbd7d92c1 Update README.rst 2016-12-18 16:45:59 -05:00
kennethreitz d9e08034dd Update README.rst 2016-12-18 16:29:14 -05:00
kennethreitz e3b1eacb77 fix datetime formatting 2016-12-18 13:09:21 -05:00
5 changed files with 47 additions and 12 deletions
+14 -2
View File
@@ -8,6 +8,9 @@ simple things **much** easier, while admitting that time is an illusion
Datetimes should be interacted with via an API written for humans.
Maya is mostly built around the headaches and use-cases around parsing datetime data from websites.
☤ Basic Usage of Maya
---------------------
@@ -52,8 +55,6 @@ Behold, datetimes for humans!
>>> rand_day.timezone
UTC
☤ Why is this useful?
---------------------
@@ -65,6 +66,17 @@ Behold, datetimes for humans!
- This library is based around epoch time, but dates before Jan 1 1970 are indeed supported, via negative integers.
- Maya never panics, and always carries a towel.
☤ What about Delorean, Arrow, & Pendulum?
-----------------------------------------
Arrow, for example, is a fantastic library, but isn't what I wanted in a datetime library. In many ways, it's better than Maya for certain things. In some ways, in my opinion, it's not.
I simply desire a sane API for datetimes that made sense to me for all the things I'd ever want to do—especially when dealing with timezone algebra. Arrow doesn't do all of the things I need (but it does a lot more!). Maya does do exactly what I need.
I think these projects complement each-other, personally. Maya is great for parsing websites. For example- Arrow supports floors and ceilings and spans of dates, which Maya does not at all.
☤ Installing Maya
-----------------
Regular → Executable
+9 -4
View File
@@ -34,7 +34,7 @@ class MayaDT(object):
def __format__(self, *args, **kwargs):
"""Return's the datetime's format"""
return format(self.datetime(*args, **kwargs))
return format(self.datetime(), *args, **kwargs)
# Timezone Crap
# -------------
@@ -104,12 +104,16 @@ class MayaDT(object):
dt = self.datetime().astimezone(pytz.timezone(to_timezone))
else:
dt = Datetime.utcfromtimestamp(self._epoch)
dt.replace(tzinfo=self._tz)
# Strip the timezone info if requested to do so.
if naive:
return dt.replace(tzinfo=None)
else:
if dt.tzinfo is None:
dt = dt.replace(tzinfo=self._tz)
return dt.replace(tzinfo=self._tz)
return dt
def iso8601(self):
"""Returns an ISO 8601 representation of the MayaDT."""
@@ -196,13 +200,14 @@ def when(string, timezone='UTC'):
return MayaDT.from_datetime(dt)
def parse(string):
def parse(string, day_first=False):
""""Returns a MayaDT instance for the machine-produced moment specified.
Powered by dateutil. Accepts most known formats. Useful for working with data.
Keyword Arguments:
string -- string to be parsed
day_first -- if true, the first value (e.g. 01/05/2016) is parsed as day (default: False)
"""
dt = dateutil.parser.parse(string)
dt = dateutil.parser.parse(string, dayfirst=day_first)
return MayaDT.from_datetime(dt)
+1
View File
@@ -1,3 +1,4 @@
-e .
dateparser==0.5.0
humanize==0.5.1
iso8601==0.1.11
Regular → Executable
+16 -3
View File
@@ -3,9 +3,21 @@
import os
import sys
import codecs
from setuptools import setup
try:
# Python 3
from os import dirname
except ImportError:
# Python 2
from os.path import dirname
here = os.path.abspath(dirname(__file__))
def read(*parts):
return codecs.open(os.path.join(here, *parts), 'r').read()
if sys.argv[-1] == "publish":
os.system("python setup.py sdist bdist_wheel upload")
@@ -16,14 +28,15 @@ required = [
'pytz',
'dateparser',
'iso8601',
'python-dateutil'
'python-dateutil',
'ruamel.yaml'
]
setup(
name='maya',
version='0.1.0',
version='0.1.2',
description='Datetimes for Humans.',
long_description=open('README.rst').read(),
long_description= '\n' + read('README.rst'),
author='Kenneth Reitz',
author_email='me@kennethreitz.com',
url='https://github.com/kennethreitz/maya',
Regular → Executable
+7 -3
View File
@@ -63,8 +63,6 @@ def test_print_date(capsys):
out, err = capsys.readouterr()
assert out == '<MayaDT epoch=1321488000.0>\n'
assert type(d.__format__()) is datetime
def test_invalid_date():
with pytest.raises(ValueError):
@@ -83,6 +81,12 @@ def test_slang_time():
def test_format():
d = maya.parse('February 21, 1994')
assert format(d) == format(d.datetime())
assert format(d) == '1994-02-21 00:00:00+00:00'
d = maya.parse('01/05/2016')
assert format(d) == '2016-01-05 00:00:00+00:00'
d = maya.parse('01/05/2016', day_first=True)
assert format(d) == '2016-05-01 00:00:00+00:00'
# rand_day = maya.when('2011-02-07', timezone='US/Eastern')