-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
40 changed files
with
19,032 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
.idea | ||
*.bak |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
Keypirinha Time | ||
======================= | ||
|
||
This is a package that extends the fast keystroke launcher keypirinha (http://keypirinha.com/) with | ||
a command to convert and format datetime strings. | ||
|
||
## Usage | ||
|
||
Use the `Time:` item. (configurable) | ||
If no other input is entered the displayed datetime is the current time. | ||
Any input is interpreted as date string (or at least tried to) | ||
|
||
Executing any of the suggestions copies the selected item to the clipboard. | ||
|
||
## Installation | ||
|
||
### With [PackageControl](https://github.com/ueffel/Keypirinha-PackageControl) | ||
|
||
Install Package "Keypirinha-Time" | ||
|
||
### Manually | ||
|
||
* Download the `Time.keypirinha-package` from the [Release Notes](https://github.com/ueffel/Keypirinha-Time/releases/latest). | ||
* Copy the file into `%APPDATA%\Keypirinha\InstalledPackages` (installed mode) or | ||
`<Keypirinha_Home>\portable\Profile\InstalledPackages` (portable mode) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
@echo off | ||
set PACKAGE_NAME=Time | ||
|
||
set SEVENZIP= | ||
where 7z > nul 2>&1 | ||
if not errorlevel 1 ( | ||
set SEVENZIP=7z | ||
goto done_sevenzip | ||
) | ||
|
||
where 7za > nul 2>&1 | ||
if not errorlevel 1 ( | ||
set SEVENZIP=7za | ||
goto done_sevenzip | ||
) | ||
|
||
if exist "c:\Program Files (x86)\7-Zip\7z.exe" ( | ||
set "SEVENZIP=c:\Program Files (x86)\7-Zip\7z.exe" | ||
goto done_sevenzip | ||
) | ||
|
||
if exist "c:\Program Files (x86)\7-Zip\7za.exe" ( | ||
set "SEVENZIP=c:\Program Files (x86)\7-Zip\7za.exe" | ||
goto done_sevenzip | ||
) | ||
|
||
if exist "c:\Program Files\7-Zip\7z.exe" ( | ||
set "SEVENZIP=c:\Program Files\7-Zip\7z.exe" | ||
goto done_sevenzip | ||
) | ||
|
||
if exist "c:\Program Files\7-Zip\7za.exe" ( | ||
set "SEVENZIP=c:\Program Files\7-Zip\7za.exe" | ||
goto done_sevenzip | ||
) | ||
|
||
if NOT DEFINED SEVENZIP ( | ||
echo 7zip not found | ||
exit /b 1 | ||
) | ||
:done_sevenzip | ||
|
||
:pack | ||
if exist %PACKAGE_NAME%.keypirinha-package ( | ||
del %PACKAGE_NAME%.keypirinha-package | ||
) | ||
echo Using "%SEVENZIP%" to pack | ||
"%SEVENZIP%" a -mx9 ^ | ||
-tzip "%PACKAGE_NAME%.keypirinha-package" ^ | ||
-x!%~nx0 ^ | ||
-xr!.git ^ | ||
-x@.gitignore ^ | ||
-x!.gitignore ^ | ||
* |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
# -*- coding: utf-8 -*- | ||
try: | ||
from ._version import version as __version__ | ||
except ImportError: | ||
__version__ = 'unknown' | ||
|
||
__all__ = ['easter', 'parser', 'relativedelta', 'rrule', 'tz', | ||
'utils', 'zoneinfo'] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
""" | ||
Common code used in multiple modules. | ||
""" | ||
|
||
|
||
class weekday(object): | ||
__slots__ = ["weekday", "n"] | ||
|
||
def __init__(self, weekday, n=None): | ||
self.weekday = weekday | ||
self.n = n | ||
|
||
def __call__(self, n): | ||
if n == self.n: | ||
return self | ||
else: | ||
return self.__class__(self.weekday, n) | ||
|
||
def __eq__(self, other): | ||
try: | ||
if self.weekday != other.weekday or self.n != other.n: | ||
return False | ||
except AttributeError: | ||
return False | ||
return True | ||
|
||
def __hash__(self): | ||
return hash(( | ||
self.weekday, | ||
self.n, | ||
)) | ||
|
||
def __ne__(self, other): | ||
return not (self == other) | ||
|
||
def __repr__(self): | ||
s = ("MO", "TU", "WE", "TH", "FR", "SA", "SU")[self.weekday] | ||
if not self.n: | ||
return s | ||
else: | ||
return "%s(%+d)" % (s, self.n) | ||
|
||
# vim:ts=4:sw=4:et |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
# coding: utf-8 | ||
# file generated by setuptools_scm | ||
# don't change, don't track in version control | ||
version = '2.7.3' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,89 @@ | ||
# -*- coding: utf-8 -*- | ||
""" | ||
This module offers a generic easter computing method for any given year, using | ||
Western, Orthodox or Julian algorithms. | ||
""" | ||
|
||
import datetime | ||
|
||
__all__ = ["easter", "EASTER_JULIAN", "EASTER_ORTHODOX", "EASTER_WESTERN"] | ||
|
||
EASTER_JULIAN = 1 | ||
EASTER_ORTHODOX = 2 | ||
EASTER_WESTERN = 3 | ||
|
||
|
||
def easter(year, method=EASTER_WESTERN): | ||
""" | ||
This method was ported from the work done by GM Arts, | ||
on top of the algorithm by Claus Tondering, which was | ||
based in part on the algorithm of Ouding (1940), as | ||
quoted in "Explanatory Supplement to the Astronomical | ||
Almanac", P. Kenneth Seidelmann, editor. | ||
This algorithm implements three different easter | ||
calculation methods: | ||
1 - Original calculation in Julian calendar, valid in | ||
dates after 326 AD | ||
2 - Original method, with date converted to Gregorian | ||
calendar, valid in years 1583 to 4099 | ||
3 - Revised method, in Gregorian calendar, valid in | ||
years 1583 to 4099 as well | ||
These methods are represented by the constants: | ||
* ``EASTER_JULIAN = 1`` | ||
* ``EASTER_ORTHODOX = 2`` | ||
* ``EASTER_WESTERN = 3`` | ||
The default method is method 3. | ||
More about the algorithm may be found at: | ||
`GM Arts: Easter Algorithms <http://www.gmarts.org/index.php?go=415>`_ | ||
and | ||
`The Calendar FAQ: Easter <https://www.tondering.dk/claus/cal/easter.php>`_ | ||
""" | ||
|
||
if not (1 <= method <= 3): | ||
raise ValueError("invalid method") | ||
|
||
# g - Golden year - 1 | ||
# c - Century | ||
# h - (23 - Epact) mod 30 | ||
# i - Number of days from March 21 to Paschal Full Moon | ||
# j - Weekday for PFM (0=Sunday, etc) | ||
# p - Number of days from March 21 to Sunday on or before PFM | ||
# (-6 to 28 methods 1 & 3, to 56 for method 2) | ||
# e - Extra days to add for method 2 (converting Julian | ||
# date to Gregorian date) | ||
|
||
y = year | ||
g = y % 19 | ||
e = 0 | ||
if method < 3: | ||
# Old method | ||
i = (19*g + 15) % 30 | ||
j = (y + y//4 + i) % 7 | ||
if method == 2: | ||
# Extra dates to convert Julian to Gregorian date | ||
e = 10 | ||
if y > 1600: | ||
e = e + y//100 - 16 - (y//100 - 16)//4 | ||
else: | ||
# New method | ||
c = y//100 | ||
h = (c - c//4 - (8*c + 13)//25 + 19*g + 15) % 30 | ||
i = h - (h//28)*(1 - (h//28)*(29//(h + 1))*((21 - g)//11)) | ||
j = (y + y//4 + i + 2 - c + c//4) % 7 | ||
|
||
# p can be from -6 to 56 corresponding to dates 22 March to 23 May | ||
# (later dates apply to method 2, although 23 May never actually occurs) | ||
p = i - j + e | ||
d = 1 + (p + 27 + (p + 6)//40) % 31 | ||
m = 3 + (p + 26)//30 | ||
return datetime.date(int(y), int(m), int(d)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
# -*- coding: utf-8 -*- | ||
from ._parser import parse, parser, parserinfo | ||
from ._parser import DEFAULTPARSER, DEFAULTTZPARSER | ||
from ._parser import UnknownTimezoneWarning | ||
|
||
from ._parser import __doc__ | ||
|
||
from .isoparser import isoparser, isoparse | ||
|
||
__all__ = ['parse', 'parser', 'parserinfo', | ||
'isoparse', 'isoparser', | ||
'UnknownTimezoneWarning'] | ||
|
||
|
||
### | ||
# Deprecate portions of the private interface so that downstream code that | ||
# is improperly relying on it is given *some* notice. | ||
|
||
|
||
def __deprecated_private_func(f): | ||
from functools import wraps | ||
import warnings | ||
|
||
msg = ('{name} is a private function and may break without warning, ' | ||
'it will be moved and or renamed in future versions.') | ||
msg = msg.format(name=f.__name__) | ||
|
||
@wraps(f) | ||
def deprecated_func(*args, **kwargs): | ||
warnings.warn(msg, DeprecationWarning) | ||
return f(*args, **kwargs) | ||
|
||
return deprecated_func | ||
|
||
def __deprecate_private_class(c): | ||
import warnings | ||
|
||
msg = ('{name} is a private class and may break without warning, ' | ||
'it will be moved and or renamed in future versions.') | ||
msg = msg.format(name=c.__name__) | ||
|
||
class private_class(c): | ||
__doc__ = c.__doc__ | ||
|
||
def __init__(self, *args, **kwargs): | ||
warnings.warn(msg, DeprecationWarning) | ||
super(private_class, self).__init__(*args, **kwargs) | ||
|
||
private_class.__name__ = c.__name__ | ||
|
||
return private_class | ||
|
||
|
||
from ._parser import _timelex, _resultbase | ||
from ._parser import _tzparser, _parsetz | ||
|
||
_timelex = __deprecate_private_class(_timelex) | ||
_tzparser = __deprecate_private_class(_tzparser) | ||
_resultbase = __deprecate_private_class(_resultbase) | ||
_parsetz = __deprecated_private_func(_parsetz) |
Oops, something went wrong.