diff --git a/wakatime/main.py b/wakatime/main.py index 8e91bff..2547801 100644 --- a/wakatime/main.py +++ b/wakatime/main.py @@ -50,10 +50,7 @@ try: from .packages import simplejson as json # pragma: nocover except (ImportError, SyntaxError): # pragma: nocover import json -try: - from .packages import tzlocal -except: # pragma: nocover - from .packages import tzlocal3 as tzlocal +from .packages import tzlocal log = logging.getLogger('WakaTime') diff --git a/wakatime/packages/__init__.py b/wakatime/packages/__init__.py index e69de29..2efb3f3 100644 --- a/wakatime/packages/__init__.py +++ b/wakatime/packages/__init__.py @@ -0,0 +1,14 @@ +import os +import sys + +from ..compat import is_py2 + +if is_py2: + sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)), 'py2')) +else: + sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)), 'py3')) + +import tzlocal +from pygments.lexers import get_lexer_by_name, guess_lexer_for_filename +from pygments.modeline import get_filetype_from_buffer +from pygments.util import ClassNotFound diff --git a/wakatime/packages/pygments_py2/pygments/__init__.py b/wakatime/packages/py2/pygments/__init__.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/__init__.py rename to wakatime/packages/py2/pygments/__init__.py diff --git a/wakatime/packages/pygments_py2/pygments/cmdline.py b/wakatime/packages/py2/pygments/cmdline.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/cmdline.py rename to wakatime/packages/py2/pygments/cmdline.py diff --git a/wakatime/packages/pygments_py2/pygments/console.py b/wakatime/packages/py2/pygments/console.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/console.py rename to wakatime/packages/py2/pygments/console.py diff --git a/wakatime/packages/pygments_py2/pygments/filter.py b/wakatime/packages/py2/pygments/filter.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/filter.py rename to wakatime/packages/py2/pygments/filter.py diff --git a/wakatime/packages/pygments_py2/pygments/filters/__init__.py b/wakatime/packages/py2/pygments/filters/__init__.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/filters/__init__.py rename to wakatime/packages/py2/pygments/filters/__init__.py diff --git a/wakatime/packages/pygments_py2/pygments/formatter.py b/wakatime/packages/py2/pygments/formatter.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/formatter.py rename to wakatime/packages/py2/pygments/formatter.py diff --git a/wakatime/packages/pygments_py2/pygments/formatters/__init__.py b/wakatime/packages/py2/pygments/formatters/__init__.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/formatters/__init__.py rename to wakatime/packages/py2/pygments/formatters/__init__.py diff --git a/wakatime/packages/pygments_py2/pygments/formatters/_mapping.py b/wakatime/packages/py2/pygments/formatters/_mapping.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/formatters/_mapping.py rename to wakatime/packages/py2/pygments/formatters/_mapping.py diff --git a/wakatime/packages/pygments_py2/pygments/formatters/bbcode.py b/wakatime/packages/py2/pygments/formatters/bbcode.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/formatters/bbcode.py rename to wakatime/packages/py2/pygments/formatters/bbcode.py diff --git a/wakatime/packages/pygments_py2/pygments/formatters/html.py b/wakatime/packages/py2/pygments/formatters/html.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/formatters/html.py rename to wakatime/packages/py2/pygments/formatters/html.py diff --git a/wakatime/packages/pygments_py2/pygments/formatters/img.py b/wakatime/packages/py2/pygments/formatters/img.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/formatters/img.py rename to wakatime/packages/py2/pygments/formatters/img.py diff --git a/wakatime/packages/pygments_py2/pygments/formatters/latex.py b/wakatime/packages/py2/pygments/formatters/latex.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/formatters/latex.py rename to wakatime/packages/py2/pygments/formatters/latex.py diff --git a/wakatime/packages/pygments_py2/pygments/formatters/other.py b/wakatime/packages/py2/pygments/formatters/other.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/formatters/other.py rename to wakatime/packages/py2/pygments/formatters/other.py diff --git a/wakatime/packages/pygments_py2/pygments/formatters/rtf.py b/wakatime/packages/py2/pygments/formatters/rtf.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/formatters/rtf.py rename to wakatime/packages/py2/pygments/formatters/rtf.py diff --git a/wakatime/packages/pygments_py2/pygments/formatters/svg.py b/wakatime/packages/py2/pygments/formatters/svg.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/formatters/svg.py rename to wakatime/packages/py2/pygments/formatters/svg.py diff --git a/wakatime/packages/pygments_py2/pygments/formatters/terminal.py b/wakatime/packages/py2/pygments/formatters/terminal.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/formatters/terminal.py rename to wakatime/packages/py2/pygments/formatters/terminal.py diff --git a/wakatime/packages/pygments_py2/pygments/formatters/terminal256.py b/wakatime/packages/py2/pygments/formatters/terminal256.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/formatters/terminal256.py rename to wakatime/packages/py2/pygments/formatters/terminal256.py diff --git a/wakatime/packages/pygments_py2/pygments/lexer.py b/wakatime/packages/py2/pygments/lexer.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexer.py rename to wakatime/packages/py2/pygments/lexer.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/__init__.py b/wakatime/packages/py2/pygments/lexers/__init__.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/__init__.py rename to wakatime/packages/py2/pygments/lexers/__init__.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/_asy_builtins.py b/wakatime/packages/py2/pygments/lexers/_asy_builtins.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/_asy_builtins.py rename to wakatime/packages/py2/pygments/lexers/_asy_builtins.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/_cl_builtins.py b/wakatime/packages/py2/pygments/lexers/_cl_builtins.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/_cl_builtins.py rename to wakatime/packages/py2/pygments/lexers/_cl_builtins.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/_cocoa_builtins.py b/wakatime/packages/py2/pygments/lexers/_cocoa_builtins.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/_cocoa_builtins.py rename to wakatime/packages/py2/pygments/lexers/_cocoa_builtins.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/_lasso_builtins.py b/wakatime/packages/py2/pygments/lexers/_lasso_builtins.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/_lasso_builtins.py rename to wakatime/packages/py2/pygments/lexers/_lasso_builtins.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/_lua_builtins.py b/wakatime/packages/py2/pygments/lexers/_lua_builtins.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/_lua_builtins.py rename to wakatime/packages/py2/pygments/lexers/_lua_builtins.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/_mapping.py b/wakatime/packages/py2/pygments/lexers/_mapping.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/_mapping.py rename to wakatime/packages/py2/pygments/lexers/_mapping.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/_mql_builtins.py b/wakatime/packages/py2/pygments/lexers/_mql_builtins.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/_mql_builtins.py rename to wakatime/packages/py2/pygments/lexers/_mql_builtins.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/_openedge_builtins.py b/wakatime/packages/py2/pygments/lexers/_openedge_builtins.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/_openedge_builtins.py rename to wakatime/packages/py2/pygments/lexers/_openedge_builtins.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/_php_builtins.py b/wakatime/packages/py2/pygments/lexers/_php_builtins.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/_php_builtins.py rename to wakatime/packages/py2/pygments/lexers/_php_builtins.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/_postgres_builtins.py b/wakatime/packages/py2/pygments/lexers/_postgres_builtins.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/_postgres_builtins.py rename to wakatime/packages/py2/pygments/lexers/_postgres_builtins.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/_scilab_builtins.py b/wakatime/packages/py2/pygments/lexers/_scilab_builtins.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/_scilab_builtins.py rename to wakatime/packages/py2/pygments/lexers/_scilab_builtins.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/_sourcemod_builtins.py b/wakatime/packages/py2/pygments/lexers/_sourcemod_builtins.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/_sourcemod_builtins.py rename to wakatime/packages/py2/pygments/lexers/_sourcemod_builtins.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/_stan_builtins.py b/wakatime/packages/py2/pygments/lexers/_stan_builtins.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/_stan_builtins.py rename to wakatime/packages/py2/pygments/lexers/_stan_builtins.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/_vim_builtins.py b/wakatime/packages/py2/pygments/lexers/_vim_builtins.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/_vim_builtins.py rename to wakatime/packages/py2/pygments/lexers/_vim_builtins.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/actionscript.py b/wakatime/packages/py2/pygments/lexers/actionscript.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/actionscript.py rename to wakatime/packages/py2/pygments/lexers/actionscript.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/agile.py b/wakatime/packages/py2/pygments/lexers/agile.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/agile.py rename to wakatime/packages/py2/pygments/lexers/agile.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/algebra.py b/wakatime/packages/py2/pygments/lexers/algebra.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/algebra.py rename to wakatime/packages/py2/pygments/lexers/algebra.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/ambient.py b/wakatime/packages/py2/pygments/lexers/ambient.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/ambient.py rename to wakatime/packages/py2/pygments/lexers/ambient.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/apl.py b/wakatime/packages/py2/pygments/lexers/apl.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/apl.py rename to wakatime/packages/py2/pygments/lexers/apl.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/asm.py b/wakatime/packages/py2/pygments/lexers/asm.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/asm.py rename to wakatime/packages/py2/pygments/lexers/asm.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/automation.py b/wakatime/packages/py2/pygments/lexers/automation.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/automation.py rename to wakatime/packages/py2/pygments/lexers/automation.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/basic.py b/wakatime/packages/py2/pygments/lexers/basic.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/basic.py rename to wakatime/packages/py2/pygments/lexers/basic.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/business.py b/wakatime/packages/py2/pygments/lexers/business.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/business.py rename to wakatime/packages/py2/pygments/lexers/business.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/c_cpp.py b/wakatime/packages/py2/pygments/lexers/c_cpp.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/c_cpp.py rename to wakatime/packages/py2/pygments/lexers/c_cpp.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/c_like.py b/wakatime/packages/py2/pygments/lexers/c_like.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/c_like.py rename to wakatime/packages/py2/pygments/lexers/c_like.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/chapel.py b/wakatime/packages/py2/pygments/lexers/chapel.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/chapel.py rename to wakatime/packages/py2/pygments/lexers/chapel.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/compiled.py b/wakatime/packages/py2/pygments/lexers/compiled.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/compiled.py rename to wakatime/packages/py2/pygments/lexers/compiled.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/configs.py b/wakatime/packages/py2/pygments/lexers/configs.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/configs.py rename to wakatime/packages/py2/pygments/lexers/configs.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/console.py b/wakatime/packages/py2/pygments/lexers/console.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/console.py rename to wakatime/packages/py2/pygments/lexers/console.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/css.py b/wakatime/packages/py2/pygments/lexers/css.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/css.py rename to wakatime/packages/py2/pygments/lexers/css.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/d.py b/wakatime/packages/py2/pygments/lexers/d.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/d.py rename to wakatime/packages/py2/pygments/lexers/d.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/dalvik.py b/wakatime/packages/py2/pygments/lexers/dalvik.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/dalvik.py rename to wakatime/packages/py2/pygments/lexers/dalvik.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/data.py b/wakatime/packages/py2/pygments/lexers/data.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/data.py rename to wakatime/packages/py2/pygments/lexers/data.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/diff.py b/wakatime/packages/py2/pygments/lexers/diff.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/diff.py rename to wakatime/packages/py2/pygments/lexers/diff.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/dotnet.py b/wakatime/packages/py2/pygments/lexers/dotnet.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/dotnet.py rename to wakatime/packages/py2/pygments/lexers/dotnet.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/dsls.py b/wakatime/packages/py2/pygments/lexers/dsls.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/dsls.py rename to wakatime/packages/py2/pygments/lexers/dsls.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/dylan.py b/wakatime/packages/py2/pygments/lexers/dylan.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/dylan.py rename to wakatime/packages/py2/pygments/lexers/dylan.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/ecl.py b/wakatime/packages/py2/pygments/lexers/ecl.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/ecl.py rename to wakatime/packages/py2/pygments/lexers/ecl.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/eiffel.py b/wakatime/packages/py2/pygments/lexers/eiffel.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/eiffel.py rename to wakatime/packages/py2/pygments/lexers/eiffel.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/erlang.py b/wakatime/packages/py2/pygments/lexers/erlang.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/erlang.py rename to wakatime/packages/py2/pygments/lexers/erlang.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/esoteric.py b/wakatime/packages/py2/pygments/lexers/esoteric.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/esoteric.py rename to wakatime/packages/py2/pygments/lexers/esoteric.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/factor.py b/wakatime/packages/py2/pygments/lexers/factor.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/factor.py rename to wakatime/packages/py2/pygments/lexers/factor.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/fantom.py b/wakatime/packages/py2/pygments/lexers/fantom.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/fantom.py rename to wakatime/packages/py2/pygments/lexers/fantom.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/felix.py b/wakatime/packages/py2/pygments/lexers/felix.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/felix.py rename to wakatime/packages/py2/pygments/lexers/felix.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/fortran.py b/wakatime/packages/py2/pygments/lexers/fortran.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/fortran.py rename to wakatime/packages/py2/pygments/lexers/fortran.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/foxpro.py b/wakatime/packages/py2/pygments/lexers/foxpro.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/foxpro.py rename to wakatime/packages/py2/pygments/lexers/foxpro.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/functional.py b/wakatime/packages/py2/pygments/lexers/functional.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/functional.py rename to wakatime/packages/py2/pygments/lexers/functional.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/go.py b/wakatime/packages/py2/pygments/lexers/go.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/go.py rename to wakatime/packages/py2/pygments/lexers/go.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/graph.py b/wakatime/packages/py2/pygments/lexers/graph.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/graph.py rename to wakatime/packages/py2/pygments/lexers/graph.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/graphics.py b/wakatime/packages/py2/pygments/lexers/graphics.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/graphics.py rename to wakatime/packages/py2/pygments/lexers/graphics.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/haskell.py b/wakatime/packages/py2/pygments/lexers/haskell.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/haskell.py rename to wakatime/packages/py2/pygments/lexers/haskell.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/haxe.py b/wakatime/packages/py2/pygments/lexers/haxe.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/haxe.py rename to wakatime/packages/py2/pygments/lexers/haxe.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/hdl.py b/wakatime/packages/py2/pygments/lexers/hdl.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/hdl.py rename to wakatime/packages/py2/pygments/lexers/hdl.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/html.py b/wakatime/packages/py2/pygments/lexers/html.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/html.py rename to wakatime/packages/py2/pygments/lexers/html.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/idl.py b/wakatime/packages/py2/pygments/lexers/idl.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/idl.py rename to wakatime/packages/py2/pygments/lexers/idl.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/igor.py b/wakatime/packages/py2/pygments/lexers/igor.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/igor.py rename to wakatime/packages/py2/pygments/lexers/igor.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/inferno.py b/wakatime/packages/py2/pygments/lexers/inferno.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/inferno.py rename to wakatime/packages/py2/pygments/lexers/inferno.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/installers.py b/wakatime/packages/py2/pygments/lexers/installers.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/installers.py rename to wakatime/packages/py2/pygments/lexers/installers.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/int_fiction.py b/wakatime/packages/py2/pygments/lexers/int_fiction.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/int_fiction.py rename to wakatime/packages/py2/pygments/lexers/int_fiction.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/iolang.py b/wakatime/packages/py2/pygments/lexers/iolang.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/iolang.py rename to wakatime/packages/py2/pygments/lexers/iolang.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/javascript.py b/wakatime/packages/py2/pygments/lexers/javascript.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/javascript.py rename to wakatime/packages/py2/pygments/lexers/javascript.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/julia.py b/wakatime/packages/py2/pygments/lexers/julia.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/julia.py rename to wakatime/packages/py2/pygments/lexers/julia.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/jvm.py b/wakatime/packages/py2/pygments/lexers/jvm.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/jvm.py rename to wakatime/packages/py2/pygments/lexers/jvm.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/lisp.py b/wakatime/packages/py2/pygments/lexers/lisp.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/lisp.py rename to wakatime/packages/py2/pygments/lexers/lisp.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/make.py b/wakatime/packages/py2/pygments/lexers/make.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/make.py rename to wakatime/packages/py2/pygments/lexers/make.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/markup.py b/wakatime/packages/py2/pygments/lexers/markup.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/markup.py rename to wakatime/packages/py2/pygments/lexers/markup.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/math.py b/wakatime/packages/py2/pygments/lexers/math.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/math.py rename to wakatime/packages/py2/pygments/lexers/math.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/matlab.py b/wakatime/packages/py2/pygments/lexers/matlab.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/matlab.py rename to wakatime/packages/py2/pygments/lexers/matlab.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/ml.py b/wakatime/packages/py2/pygments/lexers/ml.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/ml.py rename to wakatime/packages/py2/pygments/lexers/ml.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/modeling.py b/wakatime/packages/py2/pygments/lexers/modeling.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/modeling.py rename to wakatime/packages/py2/pygments/lexers/modeling.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/nimrod.py b/wakatime/packages/py2/pygments/lexers/nimrod.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/nimrod.py rename to wakatime/packages/py2/pygments/lexers/nimrod.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/nit.py b/wakatime/packages/py2/pygments/lexers/nit.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/nit.py rename to wakatime/packages/py2/pygments/lexers/nit.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/nix.py b/wakatime/packages/py2/pygments/lexers/nix.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/nix.py rename to wakatime/packages/py2/pygments/lexers/nix.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/objective.py b/wakatime/packages/py2/pygments/lexers/objective.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/objective.py rename to wakatime/packages/py2/pygments/lexers/objective.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/ooc.py b/wakatime/packages/py2/pygments/lexers/ooc.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/ooc.py rename to wakatime/packages/py2/pygments/lexers/ooc.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/other.py b/wakatime/packages/py2/pygments/lexers/other.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/other.py rename to wakatime/packages/py2/pygments/lexers/other.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/parsers.py b/wakatime/packages/py2/pygments/lexers/parsers.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/parsers.py rename to wakatime/packages/py2/pygments/lexers/parsers.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/pascal.py b/wakatime/packages/py2/pygments/lexers/pascal.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/pascal.py rename to wakatime/packages/py2/pygments/lexers/pascal.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/pawn.py b/wakatime/packages/py2/pygments/lexers/pawn.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/pawn.py rename to wakatime/packages/py2/pygments/lexers/pawn.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/perl.py b/wakatime/packages/py2/pygments/lexers/perl.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/perl.py rename to wakatime/packages/py2/pygments/lexers/perl.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/php.py b/wakatime/packages/py2/pygments/lexers/php.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/php.py rename to wakatime/packages/py2/pygments/lexers/php.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/prolog.py b/wakatime/packages/py2/pygments/lexers/prolog.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/prolog.py rename to wakatime/packages/py2/pygments/lexers/prolog.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/python.py b/wakatime/packages/py2/pygments/lexers/python.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/python.py rename to wakatime/packages/py2/pygments/lexers/python.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/r.py b/wakatime/packages/py2/pygments/lexers/r.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/r.py rename to wakatime/packages/py2/pygments/lexers/r.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/rdf.py b/wakatime/packages/py2/pygments/lexers/rdf.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/rdf.py rename to wakatime/packages/py2/pygments/lexers/rdf.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/rebol.py b/wakatime/packages/py2/pygments/lexers/rebol.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/rebol.py rename to wakatime/packages/py2/pygments/lexers/rebol.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/resource.py b/wakatime/packages/py2/pygments/lexers/resource.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/resource.py rename to wakatime/packages/py2/pygments/lexers/resource.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/robotframework.py b/wakatime/packages/py2/pygments/lexers/robotframework.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/robotframework.py rename to wakatime/packages/py2/pygments/lexers/robotframework.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/ruby.py b/wakatime/packages/py2/pygments/lexers/ruby.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/ruby.py rename to wakatime/packages/py2/pygments/lexers/ruby.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/rust.py b/wakatime/packages/py2/pygments/lexers/rust.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/rust.py rename to wakatime/packages/py2/pygments/lexers/rust.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/scripting.py b/wakatime/packages/py2/pygments/lexers/scripting.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/scripting.py rename to wakatime/packages/py2/pygments/lexers/scripting.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/shell.py b/wakatime/packages/py2/pygments/lexers/shell.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/shell.py rename to wakatime/packages/py2/pygments/lexers/shell.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/smalltalk.py b/wakatime/packages/py2/pygments/lexers/smalltalk.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/smalltalk.py rename to wakatime/packages/py2/pygments/lexers/smalltalk.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/snobol.py b/wakatime/packages/py2/pygments/lexers/snobol.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/snobol.py rename to wakatime/packages/py2/pygments/lexers/snobol.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/special.py b/wakatime/packages/py2/pygments/lexers/special.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/special.py rename to wakatime/packages/py2/pygments/lexers/special.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/sql.py b/wakatime/packages/py2/pygments/lexers/sql.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/sql.py rename to wakatime/packages/py2/pygments/lexers/sql.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/tcl.py b/wakatime/packages/py2/pygments/lexers/tcl.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/tcl.py rename to wakatime/packages/py2/pygments/lexers/tcl.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/templates.py b/wakatime/packages/py2/pygments/lexers/templates.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/templates.py rename to wakatime/packages/py2/pygments/lexers/templates.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/testing.py b/wakatime/packages/py2/pygments/lexers/testing.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/testing.py rename to wakatime/packages/py2/pygments/lexers/testing.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/text.py b/wakatime/packages/py2/pygments/lexers/text.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/text.py rename to wakatime/packages/py2/pygments/lexers/text.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/textedit.py b/wakatime/packages/py2/pygments/lexers/textedit.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/textedit.py rename to wakatime/packages/py2/pygments/lexers/textedit.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/textfmts.py b/wakatime/packages/py2/pygments/lexers/textfmts.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/textfmts.py rename to wakatime/packages/py2/pygments/lexers/textfmts.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/theorem.py b/wakatime/packages/py2/pygments/lexers/theorem.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/theorem.py rename to wakatime/packages/py2/pygments/lexers/theorem.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/urbi.py b/wakatime/packages/py2/pygments/lexers/urbi.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/urbi.py rename to wakatime/packages/py2/pygments/lexers/urbi.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/web.py b/wakatime/packages/py2/pygments/lexers/web.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/web.py rename to wakatime/packages/py2/pygments/lexers/web.py diff --git a/wakatime/packages/pygments_py2/pygments/lexers/webmisc.py b/wakatime/packages/py2/pygments/lexers/webmisc.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/lexers/webmisc.py rename to wakatime/packages/py2/pygments/lexers/webmisc.py diff --git a/wakatime/packages/pygments_py2/pygments/modeline.py b/wakatime/packages/py2/pygments/modeline.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/modeline.py rename to wakatime/packages/py2/pygments/modeline.py diff --git a/wakatime/packages/pygments_py2/pygments/plugin.py b/wakatime/packages/py2/pygments/plugin.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/plugin.py rename to wakatime/packages/py2/pygments/plugin.py diff --git a/wakatime/packages/pygments_py2/pygments/regexopt.py b/wakatime/packages/py2/pygments/regexopt.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/regexopt.py rename to wakatime/packages/py2/pygments/regexopt.py diff --git a/wakatime/packages/pygments_py2/pygments/scanner.py b/wakatime/packages/py2/pygments/scanner.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/scanner.py rename to wakatime/packages/py2/pygments/scanner.py diff --git a/wakatime/packages/pygments_py2/pygments/sphinxext.py b/wakatime/packages/py2/pygments/sphinxext.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/sphinxext.py rename to wakatime/packages/py2/pygments/sphinxext.py diff --git a/wakatime/packages/pygments_py2/pygments/style.py b/wakatime/packages/py2/pygments/style.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/style.py rename to wakatime/packages/py2/pygments/style.py diff --git a/wakatime/packages/pygments_py2/pygments/styles/__init__.py b/wakatime/packages/py2/pygments/styles/__init__.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/styles/__init__.py rename to wakatime/packages/py2/pygments/styles/__init__.py diff --git a/wakatime/packages/pygments_py2/pygments/styles/autumn.py b/wakatime/packages/py2/pygments/styles/autumn.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/styles/autumn.py rename to wakatime/packages/py2/pygments/styles/autumn.py diff --git a/wakatime/packages/pygments_py2/pygments/styles/borland.py b/wakatime/packages/py2/pygments/styles/borland.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/styles/borland.py rename to wakatime/packages/py2/pygments/styles/borland.py diff --git a/wakatime/packages/pygments_py2/pygments/styles/bw.py b/wakatime/packages/py2/pygments/styles/bw.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/styles/bw.py rename to wakatime/packages/py2/pygments/styles/bw.py diff --git a/wakatime/packages/pygments_py2/pygments/styles/colorful.py b/wakatime/packages/py2/pygments/styles/colorful.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/styles/colorful.py rename to wakatime/packages/py2/pygments/styles/colorful.py diff --git a/wakatime/packages/pygments_py2/pygments/styles/default.py b/wakatime/packages/py2/pygments/styles/default.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/styles/default.py rename to wakatime/packages/py2/pygments/styles/default.py diff --git a/wakatime/packages/pygments_py2/pygments/styles/emacs.py b/wakatime/packages/py2/pygments/styles/emacs.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/styles/emacs.py rename to wakatime/packages/py2/pygments/styles/emacs.py diff --git a/wakatime/packages/pygments_py2/pygments/styles/friendly.py b/wakatime/packages/py2/pygments/styles/friendly.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/styles/friendly.py rename to wakatime/packages/py2/pygments/styles/friendly.py diff --git a/wakatime/packages/pygments_py2/pygments/styles/fruity.py b/wakatime/packages/py2/pygments/styles/fruity.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/styles/fruity.py rename to wakatime/packages/py2/pygments/styles/fruity.py diff --git a/wakatime/packages/pygments_py2/pygments/styles/igor.py b/wakatime/packages/py2/pygments/styles/igor.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/styles/igor.py rename to wakatime/packages/py2/pygments/styles/igor.py diff --git a/wakatime/packages/pygments_py2/pygments/styles/manni.py b/wakatime/packages/py2/pygments/styles/manni.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/styles/manni.py rename to wakatime/packages/py2/pygments/styles/manni.py diff --git a/wakatime/packages/pygments_py2/pygments/styles/monokai.py b/wakatime/packages/py2/pygments/styles/monokai.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/styles/monokai.py rename to wakatime/packages/py2/pygments/styles/monokai.py diff --git a/wakatime/packages/pygments_py2/pygments/styles/murphy.py b/wakatime/packages/py2/pygments/styles/murphy.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/styles/murphy.py rename to wakatime/packages/py2/pygments/styles/murphy.py diff --git a/wakatime/packages/pygments_py2/pygments/styles/native.py b/wakatime/packages/py2/pygments/styles/native.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/styles/native.py rename to wakatime/packages/py2/pygments/styles/native.py diff --git a/wakatime/packages/pygments_py2/pygments/styles/paraiso_dark.py b/wakatime/packages/py2/pygments/styles/paraiso_dark.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/styles/paraiso_dark.py rename to wakatime/packages/py2/pygments/styles/paraiso_dark.py diff --git a/wakatime/packages/pygments_py2/pygments/styles/paraiso_light.py b/wakatime/packages/py2/pygments/styles/paraiso_light.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/styles/paraiso_light.py rename to wakatime/packages/py2/pygments/styles/paraiso_light.py diff --git a/wakatime/packages/pygments_py2/pygments/styles/pastie.py b/wakatime/packages/py2/pygments/styles/pastie.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/styles/pastie.py rename to wakatime/packages/py2/pygments/styles/pastie.py diff --git a/wakatime/packages/pygments_py2/pygments/styles/perldoc.py b/wakatime/packages/py2/pygments/styles/perldoc.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/styles/perldoc.py rename to wakatime/packages/py2/pygments/styles/perldoc.py diff --git a/wakatime/packages/pygments_py2/pygments/styles/rrt.py b/wakatime/packages/py2/pygments/styles/rrt.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/styles/rrt.py rename to wakatime/packages/py2/pygments/styles/rrt.py diff --git a/wakatime/packages/pygments_py2/pygments/styles/tango.py b/wakatime/packages/py2/pygments/styles/tango.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/styles/tango.py rename to wakatime/packages/py2/pygments/styles/tango.py diff --git a/wakatime/packages/pygments_py2/pygments/styles/trac.py b/wakatime/packages/py2/pygments/styles/trac.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/styles/trac.py rename to wakatime/packages/py2/pygments/styles/trac.py diff --git a/wakatime/packages/pygments_py2/pygments/styles/vim.py b/wakatime/packages/py2/pygments/styles/vim.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/styles/vim.py rename to wakatime/packages/py2/pygments/styles/vim.py diff --git a/wakatime/packages/pygments_py2/pygments/styles/vs.py b/wakatime/packages/py2/pygments/styles/vs.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/styles/vs.py rename to wakatime/packages/py2/pygments/styles/vs.py diff --git a/wakatime/packages/pygments_py2/pygments/styles/xcode.py b/wakatime/packages/py2/pygments/styles/xcode.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/styles/xcode.py rename to wakatime/packages/py2/pygments/styles/xcode.py diff --git a/wakatime/packages/pygments_py2/pygments/token.py b/wakatime/packages/py2/pygments/token.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/token.py rename to wakatime/packages/py2/pygments/token.py diff --git a/wakatime/packages/pygments_py2/pygments/unistring.py b/wakatime/packages/py2/pygments/unistring.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/unistring.py rename to wakatime/packages/py2/pygments/unistring.py diff --git a/wakatime/packages/pygments_py2/pygments/util.py b/wakatime/packages/py2/pygments/util.py similarity index 100% rename from wakatime/packages/pygments_py2/pygments/util.py rename to wakatime/packages/py2/pygments/util.py diff --git a/wakatime/packages/pytz/__init__.py b/wakatime/packages/py2/pytz/__init__.py similarity index 100% rename from wakatime/packages/pytz/__init__.py rename to wakatime/packages/py2/pytz/__init__.py diff --git a/wakatime/packages/pytz/exceptions.py b/wakatime/packages/py2/pytz/exceptions.py similarity index 100% rename from wakatime/packages/pytz/exceptions.py rename to wakatime/packages/py2/pytz/exceptions.py diff --git a/wakatime/packages/pytz/lazy.py b/wakatime/packages/py2/pytz/lazy.py similarity index 100% rename from wakatime/packages/pytz/lazy.py rename to wakatime/packages/py2/pytz/lazy.py diff --git a/wakatime/packages/pytz/reference.py b/wakatime/packages/py2/pytz/reference.py similarity index 100% rename from wakatime/packages/pytz/reference.py rename to wakatime/packages/py2/pytz/reference.py diff --git a/wakatime/packages/pytz/tzfile.py b/wakatime/packages/py2/pytz/tzfile.py similarity index 100% rename from wakatime/packages/pytz/tzfile.py rename to wakatime/packages/py2/pytz/tzfile.py diff --git a/wakatime/packages/pytz/tzinfo.py b/wakatime/packages/py2/pytz/tzinfo.py similarity index 100% rename from wakatime/packages/pytz/tzinfo.py rename to wakatime/packages/py2/pytz/tzinfo.py diff --git a/wakatime/packages/pytz/zoneinfo/Africa/Abidjan b/wakatime/packages/py2/pytz/zoneinfo/Africa/Abidjan similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Africa/Abidjan rename to wakatime/packages/py2/pytz/zoneinfo/Africa/Abidjan diff --git a/wakatime/packages/pytz/zoneinfo/Africa/Accra b/wakatime/packages/py2/pytz/zoneinfo/Africa/Accra similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Africa/Accra rename to wakatime/packages/py2/pytz/zoneinfo/Africa/Accra diff --git a/wakatime/packages/pytz/zoneinfo/Africa/Addis_Ababa b/wakatime/packages/py2/pytz/zoneinfo/Africa/Addis_Ababa similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Africa/Addis_Ababa rename to wakatime/packages/py2/pytz/zoneinfo/Africa/Addis_Ababa diff --git a/wakatime/packages/pytz/zoneinfo/Africa/Algiers b/wakatime/packages/py2/pytz/zoneinfo/Africa/Algiers similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Africa/Algiers rename to wakatime/packages/py2/pytz/zoneinfo/Africa/Algiers diff --git a/wakatime/packages/pytz/zoneinfo/Africa/Asmara b/wakatime/packages/py2/pytz/zoneinfo/Africa/Asmara similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Africa/Asmara rename to wakatime/packages/py2/pytz/zoneinfo/Africa/Asmara diff --git a/wakatime/packages/pytz/zoneinfo/Africa/Asmera b/wakatime/packages/py2/pytz/zoneinfo/Africa/Asmera similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Africa/Asmera rename to wakatime/packages/py2/pytz/zoneinfo/Africa/Asmera diff --git a/wakatime/packages/pytz/zoneinfo/Africa/Bamako b/wakatime/packages/py2/pytz/zoneinfo/Africa/Bamako similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Africa/Bamako rename to wakatime/packages/py2/pytz/zoneinfo/Africa/Bamako diff --git a/wakatime/packages/pytz/zoneinfo/Africa/Bangui b/wakatime/packages/py2/pytz/zoneinfo/Africa/Bangui similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Africa/Bangui rename to wakatime/packages/py2/pytz/zoneinfo/Africa/Bangui diff --git a/wakatime/packages/pytz/zoneinfo/Africa/Banjul b/wakatime/packages/py2/pytz/zoneinfo/Africa/Banjul similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Africa/Banjul rename to wakatime/packages/py2/pytz/zoneinfo/Africa/Banjul diff --git a/wakatime/packages/pytz/zoneinfo/Africa/Bissau b/wakatime/packages/py2/pytz/zoneinfo/Africa/Bissau similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Africa/Bissau rename to wakatime/packages/py2/pytz/zoneinfo/Africa/Bissau diff --git a/wakatime/packages/pytz/zoneinfo/Africa/Blantyre b/wakatime/packages/py2/pytz/zoneinfo/Africa/Blantyre similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Africa/Blantyre rename to wakatime/packages/py2/pytz/zoneinfo/Africa/Blantyre diff --git a/wakatime/packages/pytz/zoneinfo/Africa/Brazzaville b/wakatime/packages/py2/pytz/zoneinfo/Africa/Brazzaville similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Africa/Brazzaville rename to wakatime/packages/py2/pytz/zoneinfo/Africa/Brazzaville diff --git a/wakatime/packages/pytz/zoneinfo/Africa/Bujumbura b/wakatime/packages/py2/pytz/zoneinfo/Africa/Bujumbura similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Africa/Bujumbura rename to wakatime/packages/py2/pytz/zoneinfo/Africa/Bujumbura diff --git a/wakatime/packages/pytz/zoneinfo/Africa/Cairo b/wakatime/packages/py2/pytz/zoneinfo/Africa/Cairo similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Africa/Cairo rename to wakatime/packages/py2/pytz/zoneinfo/Africa/Cairo diff --git a/wakatime/packages/pytz/zoneinfo/Africa/Casablanca b/wakatime/packages/py2/pytz/zoneinfo/Africa/Casablanca similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Africa/Casablanca rename to wakatime/packages/py2/pytz/zoneinfo/Africa/Casablanca diff --git a/wakatime/packages/pytz/zoneinfo/Africa/Ceuta b/wakatime/packages/py2/pytz/zoneinfo/Africa/Ceuta similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Africa/Ceuta rename to wakatime/packages/py2/pytz/zoneinfo/Africa/Ceuta diff --git a/wakatime/packages/pytz/zoneinfo/Africa/Conakry b/wakatime/packages/py2/pytz/zoneinfo/Africa/Conakry similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Africa/Conakry rename to wakatime/packages/py2/pytz/zoneinfo/Africa/Conakry diff --git a/wakatime/packages/pytz/zoneinfo/Africa/Dakar b/wakatime/packages/py2/pytz/zoneinfo/Africa/Dakar similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Africa/Dakar rename to wakatime/packages/py2/pytz/zoneinfo/Africa/Dakar diff --git a/wakatime/packages/pytz/zoneinfo/Africa/Dar_es_Salaam b/wakatime/packages/py2/pytz/zoneinfo/Africa/Dar_es_Salaam similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Africa/Dar_es_Salaam rename to wakatime/packages/py2/pytz/zoneinfo/Africa/Dar_es_Salaam diff --git a/wakatime/packages/pytz/zoneinfo/Africa/Djibouti b/wakatime/packages/py2/pytz/zoneinfo/Africa/Djibouti similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Africa/Djibouti rename to wakatime/packages/py2/pytz/zoneinfo/Africa/Djibouti diff --git a/wakatime/packages/pytz/zoneinfo/Africa/Douala b/wakatime/packages/py2/pytz/zoneinfo/Africa/Douala similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Africa/Douala rename to wakatime/packages/py2/pytz/zoneinfo/Africa/Douala diff --git a/wakatime/packages/pytz/zoneinfo/Africa/El_Aaiun b/wakatime/packages/py2/pytz/zoneinfo/Africa/El_Aaiun similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Africa/El_Aaiun rename to wakatime/packages/py2/pytz/zoneinfo/Africa/El_Aaiun diff --git a/wakatime/packages/pytz/zoneinfo/Africa/Freetown b/wakatime/packages/py2/pytz/zoneinfo/Africa/Freetown similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Africa/Freetown rename to wakatime/packages/py2/pytz/zoneinfo/Africa/Freetown diff --git a/wakatime/packages/pytz/zoneinfo/Africa/Gaborone b/wakatime/packages/py2/pytz/zoneinfo/Africa/Gaborone similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Africa/Gaborone rename to wakatime/packages/py2/pytz/zoneinfo/Africa/Gaborone diff --git a/wakatime/packages/pytz/zoneinfo/Africa/Harare b/wakatime/packages/py2/pytz/zoneinfo/Africa/Harare similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Africa/Harare rename to wakatime/packages/py2/pytz/zoneinfo/Africa/Harare diff --git a/wakatime/packages/pytz/zoneinfo/Africa/Johannesburg b/wakatime/packages/py2/pytz/zoneinfo/Africa/Johannesburg similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Africa/Johannesburg rename to wakatime/packages/py2/pytz/zoneinfo/Africa/Johannesburg diff --git a/wakatime/packages/pytz/zoneinfo/Africa/Juba b/wakatime/packages/py2/pytz/zoneinfo/Africa/Juba similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Africa/Juba rename to wakatime/packages/py2/pytz/zoneinfo/Africa/Juba diff --git a/wakatime/packages/pytz/zoneinfo/Africa/Kampala b/wakatime/packages/py2/pytz/zoneinfo/Africa/Kampala similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Africa/Kampala rename to wakatime/packages/py2/pytz/zoneinfo/Africa/Kampala diff --git a/wakatime/packages/pytz/zoneinfo/Africa/Khartoum b/wakatime/packages/py2/pytz/zoneinfo/Africa/Khartoum similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Africa/Khartoum rename to wakatime/packages/py2/pytz/zoneinfo/Africa/Khartoum diff --git a/wakatime/packages/pytz/zoneinfo/Africa/Kigali b/wakatime/packages/py2/pytz/zoneinfo/Africa/Kigali similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Africa/Kigali rename to wakatime/packages/py2/pytz/zoneinfo/Africa/Kigali diff --git a/wakatime/packages/pytz/zoneinfo/Africa/Kinshasa b/wakatime/packages/py2/pytz/zoneinfo/Africa/Kinshasa similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Africa/Kinshasa rename to wakatime/packages/py2/pytz/zoneinfo/Africa/Kinshasa diff --git a/wakatime/packages/pytz/zoneinfo/Africa/Lagos b/wakatime/packages/py2/pytz/zoneinfo/Africa/Lagos similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Africa/Lagos rename to wakatime/packages/py2/pytz/zoneinfo/Africa/Lagos diff --git a/wakatime/packages/pytz/zoneinfo/Africa/Libreville b/wakatime/packages/py2/pytz/zoneinfo/Africa/Libreville similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Africa/Libreville rename to wakatime/packages/py2/pytz/zoneinfo/Africa/Libreville diff --git a/wakatime/packages/pytz/zoneinfo/Africa/Lome b/wakatime/packages/py2/pytz/zoneinfo/Africa/Lome similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Africa/Lome rename to wakatime/packages/py2/pytz/zoneinfo/Africa/Lome diff --git a/wakatime/packages/pytz/zoneinfo/Africa/Luanda b/wakatime/packages/py2/pytz/zoneinfo/Africa/Luanda similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Africa/Luanda rename to wakatime/packages/py2/pytz/zoneinfo/Africa/Luanda diff --git a/wakatime/packages/pytz/zoneinfo/Africa/Lubumbashi b/wakatime/packages/py2/pytz/zoneinfo/Africa/Lubumbashi similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Africa/Lubumbashi rename to wakatime/packages/py2/pytz/zoneinfo/Africa/Lubumbashi diff --git a/wakatime/packages/pytz/zoneinfo/Africa/Lusaka b/wakatime/packages/py2/pytz/zoneinfo/Africa/Lusaka similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Africa/Lusaka rename to wakatime/packages/py2/pytz/zoneinfo/Africa/Lusaka diff --git a/wakatime/packages/pytz/zoneinfo/Africa/Malabo b/wakatime/packages/py2/pytz/zoneinfo/Africa/Malabo similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Africa/Malabo rename to wakatime/packages/py2/pytz/zoneinfo/Africa/Malabo diff --git a/wakatime/packages/pytz/zoneinfo/Africa/Maputo b/wakatime/packages/py2/pytz/zoneinfo/Africa/Maputo similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Africa/Maputo rename to wakatime/packages/py2/pytz/zoneinfo/Africa/Maputo diff --git a/wakatime/packages/pytz/zoneinfo/Africa/Maseru b/wakatime/packages/py2/pytz/zoneinfo/Africa/Maseru similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Africa/Maseru rename to wakatime/packages/py2/pytz/zoneinfo/Africa/Maseru diff --git a/wakatime/packages/pytz/zoneinfo/Africa/Mbabane b/wakatime/packages/py2/pytz/zoneinfo/Africa/Mbabane similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Africa/Mbabane rename to wakatime/packages/py2/pytz/zoneinfo/Africa/Mbabane diff --git a/wakatime/packages/pytz/zoneinfo/Africa/Mogadishu b/wakatime/packages/py2/pytz/zoneinfo/Africa/Mogadishu similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Africa/Mogadishu rename to wakatime/packages/py2/pytz/zoneinfo/Africa/Mogadishu diff --git a/wakatime/packages/pytz/zoneinfo/Africa/Monrovia b/wakatime/packages/py2/pytz/zoneinfo/Africa/Monrovia similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Africa/Monrovia rename to wakatime/packages/py2/pytz/zoneinfo/Africa/Monrovia diff --git a/wakatime/packages/pytz/zoneinfo/Africa/Nairobi b/wakatime/packages/py2/pytz/zoneinfo/Africa/Nairobi similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Africa/Nairobi rename to wakatime/packages/py2/pytz/zoneinfo/Africa/Nairobi diff --git a/wakatime/packages/pytz/zoneinfo/Africa/Ndjamena b/wakatime/packages/py2/pytz/zoneinfo/Africa/Ndjamena similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Africa/Ndjamena rename to wakatime/packages/py2/pytz/zoneinfo/Africa/Ndjamena diff --git a/wakatime/packages/pytz/zoneinfo/Africa/Niamey b/wakatime/packages/py2/pytz/zoneinfo/Africa/Niamey similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Africa/Niamey rename to wakatime/packages/py2/pytz/zoneinfo/Africa/Niamey diff --git a/wakatime/packages/pytz/zoneinfo/Africa/Nouakchott b/wakatime/packages/py2/pytz/zoneinfo/Africa/Nouakchott similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Africa/Nouakchott rename to wakatime/packages/py2/pytz/zoneinfo/Africa/Nouakchott diff --git a/wakatime/packages/pytz/zoneinfo/Africa/Ouagadougou b/wakatime/packages/py2/pytz/zoneinfo/Africa/Ouagadougou similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Africa/Ouagadougou rename to wakatime/packages/py2/pytz/zoneinfo/Africa/Ouagadougou diff --git a/wakatime/packages/pytz/zoneinfo/Africa/Porto-Novo b/wakatime/packages/py2/pytz/zoneinfo/Africa/Porto-Novo similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Africa/Porto-Novo rename to wakatime/packages/py2/pytz/zoneinfo/Africa/Porto-Novo diff --git a/wakatime/packages/pytz/zoneinfo/Africa/Sao_Tome b/wakatime/packages/py2/pytz/zoneinfo/Africa/Sao_Tome similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Africa/Sao_Tome rename to wakatime/packages/py2/pytz/zoneinfo/Africa/Sao_Tome diff --git a/wakatime/packages/pytz/zoneinfo/Africa/Timbuktu b/wakatime/packages/py2/pytz/zoneinfo/Africa/Timbuktu similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Africa/Timbuktu rename to wakatime/packages/py2/pytz/zoneinfo/Africa/Timbuktu diff --git a/wakatime/packages/pytz/zoneinfo/Africa/Tripoli b/wakatime/packages/py2/pytz/zoneinfo/Africa/Tripoli similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Africa/Tripoli rename to wakatime/packages/py2/pytz/zoneinfo/Africa/Tripoli diff --git a/wakatime/packages/pytz/zoneinfo/Africa/Tunis b/wakatime/packages/py2/pytz/zoneinfo/Africa/Tunis similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Africa/Tunis rename to wakatime/packages/py2/pytz/zoneinfo/Africa/Tunis diff --git a/wakatime/packages/pytz/zoneinfo/Africa/Windhoek b/wakatime/packages/py2/pytz/zoneinfo/Africa/Windhoek similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Africa/Windhoek rename to wakatime/packages/py2/pytz/zoneinfo/Africa/Windhoek diff --git a/wakatime/packages/pytz/zoneinfo/America/Adak b/wakatime/packages/py2/pytz/zoneinfo/America/Adak similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Adak rename to wakatime/packages/py2/pytz/zoneinfo/America/Adak diff --git a/wakatime/packages/pytz/zoneinfo/America/Anchorage b/wakatime/packages/py2/pytz/zoneinfo/America/Anchorage similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Anchorage rename to wakatime/packages/py2/pytz/zoneinfo/America/Anchorage diff --git a/wakatime/packages/pytz/zoneinfo/America/Anguilla b/wakatime/packages/py2/pytz/zoneinfo/America/Anguilla similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Anguilla rename to wakatime/packages/py2/pytz/zoneinfo/America/Anguilla diff --git a/wakatime/packages/pytz/zoneinfo/America/Antigua b/wakatime/packages/py2/pytz/zoneinfo/America/Antigua similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Antigua rename to wakatime/packages/py2/pytz/zoneinfo/America/Antigua diff --git a/wakatime/packages/pytz/zoneinfo/America/Araguaina b/wakatime/packages/py2/pytz/zoneinfo/America/Araguaina similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Araguaina rename to wakatime/packages/py2/pytz/zoneinfo/America/Araguaina diff --git a/wakatime/packages/pytz/zoneinfo/America/Argentina/Buenos_Aires b/wakatime/packages/py2/pytz/zoneinfo/America/Argentina/Buenos_Aires similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Argentina/Buenos_Aires rename to wakatime/packages/py2/pytz/zoneinfo/America/Argentina/Buenos_Aires diff --git a/wakatime/packages/pytz/zoneinfo/America/Argentina/Catamarca b/wakatime/packages/py2/pytz/zoneinfo/America/Argentina/Catamarca similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Argentina/Catamarca rename to wakatime/packages/py2/pytz/zoneinfo/America/Argentina/Catamarca diff --git a/wakatime/packages/pytz/zoneinfo/America/Argentina/ComodRivadavia b/wakatime/packages/py2/pytz/zoneinfo/America/Argentina/ComodRivadavia similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Argentina/ComodRivadavia rename to wakatime/packages/py2/pytz/zoneinfo/America/Argentina/ComodRivadavia diff --git a/wakatime/packages/pytz/zoneinfo/America/Argentina/Cordoba b/wakatime/packages/py2/pytz/zoneinfo/America/Argentina/Cordoba similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Argentina/Cordoba rename to wakatime/packages/py2/pytz/zoneinfo/America/Argentina/Cordoba diff --git a/wakatime/packages/pytz/zoneinfo/America/Argentina/Jujuy b/wakatime/packages/py2/pytz/zoneinfo/America/Argentina/Jujuy similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Argentina/Jujuy rename to wakatime/packages/py2/pytz/zoneinfo/America/Argentina/Jujuy diff --git a/wakatime/packages/pytz/zoneinfo/America/Argentina/La_Rioja b/wakatime/packages/py2/pytz/zoneinfo/America/Argentina/La_Rioja similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Argentina/La_Rioja rename to wakatime/packages/py2/pytz/zoneinfo/America/Argentina/La_Rioja diff --git a/wakatime/packages/pytz/zoneinfo/America/Argentina/Mendoza b/wakatime/packages/py2/pytz/zoneinfo/America/Argentina/Mendoza similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Argentina/Mendoza rename to wakatime/packages/py2/pytz/zoneinfo/America/Argentina/Mendoza diff --git a/wakatime/packages/pytz/zoneinfo/America/Argentina/Rio_Gallegos b/wakatime/packages/py2/pytz/zoneinfo/America/Argentina/Rio_Gallegos similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Argentina/Rio_Gallegos rename to wakatime/packages/py2/pytz/zoneinfo/America/Argentina/Rio_Gallegos diff --git a/wakatime/packages/pytz/zoneinfo/America/Argentina/Salta b/wakatime/packages/py2/pytz/zoneinfo/America/Argentina/Salta similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Argentina/Salta rename to wakatime/packages/py2/pytz/zoneinfo/America/Argentina/Salta diff --git a/wakatime/packages/pytz/zoneinfo/America/Argentina/San_Juan b/wakatime/packages/py2/pytz/zoneinfo/America/Argentina/San_Juan similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Argentina/San_Juan rename to wakatime/packages/py2/pytz/zoneinfo/America/Argentina/San_Juan diff --git a/wakatime/packages/pytz/zoneinfo/America/Argentina/San_Luis b/wakatime/packages/py2/pytz/zoneinfo/America/Argentina/San_Luis similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Argentina/San_Luis rename to wakatime/packages/py2/pytz/zoneinfo/America/Argentina/San_Luis diff --git a/wakatime/packages/pytz/zoneinfo/America/Argentina/Tucuman b/wakatime/packages/py2/pytz/zoneinfo/America/Argentina/Tucuman similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Argentina/Tucuman rename to wakatime/packages/py2/pytz/zoneinfo/America/Argentina/Tucuman diff --git a/wakatime/packages/pytz/zoneinfo/America/Argentina/Ushuaia b/wakatime/packages/py2/pytz/zoneinfo/America/Argentina/Ushuaia similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Argentina/Ushuaia rename to wakatime/packages/py2/pytz/zoneinfo/America/Argentina/Ushuaia diff --git a/wakatime/packages/pytz/zoneinfo/America/Aruba b/wakatime/packages/py2/pytz/zoneinfo/America/Aruba similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Aruba rename to wakatime/packages/py2/pytz/zoneinfo/America/Aruba diff --git a/wakatime/packages/pytz/zoneinfo/America/Asuncion b/wakatime/packages/py2/pytz/zoneinfo/America/Asuncion similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Asuncion rename to wakatime/packages/py2/pytz/zoneinfo/America/Asuncion diff --git a/wakatime/packages/pytz/zoneinfo/America/Atikokan b/wakatime/packages/py2/pytz/zoneinfo/America/Atikokan similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Atikokan rename to wakatime/packages/py2/pytz/zoneinfo/America/Atikokan diff --git a/wakatime/packages/pytz/zoneinfo/America/Atka b/wakatime/packages/py2/pytz/zoneinfo/America/Atka similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Atka rename to wakatime/packages/py2/pytz/zoneinfo/America/Atka diff --git a/wakatime/packages/pytz/zoneinfo/America/Bahia b/wakatime/packages/py2/pytz/zoneinfo/America/Bahia similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Bahia rename to wakatime/packages/py2/pytz/zoneinfo/America/Bahia diff --git a/wakatime/packages/pytz/zoneinfo/America/Bahia_Banderas b/wakatime/packages/py2/pytz/zoneinfo/America/Bahia_Banderas similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Bahia_Banderas rename to wakatime/packages/py2/pytz/zoneinfo/America/Bahia_Banderas diff --git a/wakatime/packages/pytz/zoneinfo/America/Barbados b/wakatime/packages/py2/pytz/zoneinfo/America/Barbados similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Barbados rename to wakatime/packages/py2/pytz/zoneinfo/America/Barbados diff --git a/wakatime/packages/pytz/zoneinfo/America/Belem b/wakatime/packages/py2/pytz/zoneinfo/America/Belem similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Belem rename to wakatime/packages/py2/pytz/zoneinfo/America/Belem diff --git a/wakatime/packages/pytz/zoneinfo/America/Belize b/wakatime/packages/py2/pytz/zoneinfo/America/Belize similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Belize rename to wakatime/packages/py2/pytz/zoneinfo/America/Belize diff --git a/wakatime/packages/pytz/zoneinfo/America/Blanc-Sablon b/wakatime/packages/py2/pytz/zoneinfo/America/Blanc-Sablon similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Blanc-Sablon rename to wakatime/packages/py2/pytz/zoneinfo/America/Blanc-Sablon diff --git a/wakatime/packages/pytz/zoneinfo/America/Boa_Vista b/wakatime/packages/py2/pytz/zoneinfo/America/Boa_Vista similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Boa_Vista rename to wakatime/packages/py2/pytz/zoneinfo/America/Boa_Vista diff --git a/wakatime/packages/pytz/zoneinfo/America/Bogota b/wakatime/packages/py2/pytz/zoneinfo/America/Bogota similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Bogota rename to wakatime/packages/py2/pytz/zoneinfo/America/Bogota diff --git a/wakatime/packages/pytz/zoneinfo/America/Boise b/wakatime/packages/py2/pytz/zoneinfo/America/Boise similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Boise rename to wakatime/packages/py2/pytz/zoneinfo/America/Boise diff --git a/wakatime/packages/pytz/zoneinfo/America/Buenos_Aires b/wakatime/packages/py2/pytz/zoneinfo/America/Buenos_Aires similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Buenos_Aires rename to wakatime/packages/py2/pytz/zoneinfo/America/Buenos_Aires diff --git a/wakatime/packages/pytz/zoneinfo/America/Cambridge_Bay b/wakatime/packages/py2/pytz/zoneinfo/America/Cambridge_Bay similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Cambridge_Bay rename to wakatime/packages/py2/pytz/zoneinfo/America/Cambridge_Bay diff --git a/wakatime/packages/pytz/zoneinfo/America/Campo_Grande b/wakatime/packages/py2/pytz/zoneinfo/America/Campo_Grande similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Campo_Grande rename to wakatime/packages/py2/pytz/zoneinfo/America/Campo_Grande diff --git a/wakatime/packages/pytz/zoneinfo/America/Cancun b/wakatime/packages/py2/pytz/zoneinfo/America/Cancun similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Cancun rename to wakatime/packages/py2/pytz/zoneinfo/America/Cancun diff --git a/wakatime/packages/pytz/zoneinfo/America/Caracas b/wakatime/packages/py2/pytz/zoneinfo/America/Caracas similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Caracas rename to wakatime/packages/py2/pytz/zoneinfo/America/Caracas diff --git a/wakatime/packages/pytz/zoneinfo/America/Catamarca b/wakatime/packages/py2/pytz/zoneinfo/America/Catamarca similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Catamarca rename to wakatime/packages/py2/pytz/zoneinfo/America/Catamarca diff --git a/wakatime/packages/pytz/zoneinfo/America/Cayenne b/wakatime/packages/py2/pytz/zoneinfo/America/Cayenne similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Cayenne rename to wakatime/packages/py2/pytz/zoneinfo/America/Cayenne diff --git a/wakatime/packages/pytz/zoneinfo/America/Cayman b/wakatime/packages/py2/pytz/zoneinfo/America/Cayman similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Cayman rename to wakatime/packages/py2/pytz/zoneinfo/America/Cayman diff --git a/wakatime/packages/pytz/zoneinfo/America/Chicago b/wakatime/packages/py2/pytz/zoneinfo/America/Chicago similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Chicago rename to wakatime/packages/py2/pytz/zoneinfo/America/Chicago diff --git a/wakatime/packages/pytz/zoneinfo/America/Chihuahua b/wakatime/packages/py2/pytz/zoneinfo/America/Chihuahua similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Chihuahua rename to wakatime/packages/py2/pytz/zoneinfo/America/Chihuahua diff --git a/wakatime/packages/pytz/zoneinfo/America/Coral_Harbour b/wakatime/packages/py2/pytz/zoneinfo/America/Coral_Harbour similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Coral_Harbour rename to wakatime/packages/py2/pytz/zoneinfo/America/Coral_Harbour diff --git a/wakatime/packages/pytz/zoneinfo/America/Cordoba b/wakatime/packages/py2/pytz/zoneinfo/America/Cordoba similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Cordoba rename to wakatime/packages/py2/pytz/zoneinfo/America/Cordoba diff --git a/wakatime/packages/pytz/zoneinfo/America/Costa_Rica b/wakatime/packages/py2/pytz/zoneinfo/America/Costa_Rica similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Costa_Rica rename to wakatime/packages/py2/pytz/zoneinfo/America/Costa_Rica diff --git a/wakatime/packages/pytz/zoneinfo/America/Creston b/wakatime/packages/py2/pytz/zoneinfo/America/Creston similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Creston rename to wakatime/packages/py2/pytz/zoneinfo/America/Creston diff --git a/wakatime/packages/pytz/zoneinfo/America/Cuiaba b/wakatime/packages/py2/pytz/zoneinfo/America/Cuiaba similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Cuiaba rename to wakatime/packages/py2/pytz/zoneinfo/America/Cuiaba diff --git a/wakatime/packages/pytz/zoneinfo/America/Curacao b/wakatime/packages/py2/pytz/zoneinfo/America/Curacao similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Curacao rename to wakatime/packages/py2/pytz/zoneinfo/America/Curacao diff --git a/wakatime/packages/pytz/zoneinfo/America/Danmarkshavn b/wakatime/packages/py2/pytz/zoneinfo/America/Danmarkshavn similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Danmarkshavn rename to wakatime/packages/py2/pytz/zoneinfo/America/Danmarkshavn diff --git a/wakatime/packages/pytz/zoneinfo/America/Dawson b/wakatime/packages/py2/pytz/zoneinfo/America/Dawson similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Dawson rename to wakatime/packages/py2/pytz/zoneinfo/America/Dawson diff --git a/wakatime/packages/pytz/zoneinfo/America/Dawson_Creek b/wakatime/packages/py2/pytz/zoneinfo/America/Dawson_Creek similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Dawson_Creek rename to wakatime/packages/py2/pytz/zoneinfo/America/Dawson_Creek diff --git a/wakatime/packages/pytz/zoneinfo/America/Denver b/wakatime/packages/py2/pytz/zoneinfo/America/Denver similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Denver rename to wakatime/packages/py2/pytz/zoneinfo/America/Denver diff --git a/wakatime/packages/pytz/zoneinfo/America/Detroit b/wakatime/packages/py2/pytz/zoneinfo/America/Detroit similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Detroit rename to wakatime/packages/py2/pytz/zoneinfo/America/Detroit diff --git a/wakatime/packages/pytz/zoneinfo/America/Dominica b/wakatime/packages/py2/pytz/zoneinfo/America/Dominica similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Dominica rename to wakatime/packages/py2/pytz/zoneinfo/America/Dominica diff --git a/wakatime/packages/pytz/zoneinfo/America/Edmonton b/wakatime/packages/py2/pytz/zoneinfo/America/Edmonton similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Edmonton rename to wakatime/packages/py2/pytz/zoneinfo/America/Edmonton diff --git a/wakatime/packages/pytz/zoneinfo/America/Eirunepe b/wakatime/packages/py2/pytz/zoneinfo/America/Eirunepe similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Eirunepe rename to wakatime/packages/py2/pytz/zoneinfo/America/Eirunepe diff --git a/wakatime/packages/pytz/zoneinfo/America/El_Salvador b/wakatime/packages/py2/pytz/zoneinfo/America/El_Salvador similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/El_Salvador rename to wakatime/packages/py2/pytz/zoneinfo/America/El_Salvador diff --git a/wakatime/packages/pytz/zoneinfo/America/Ensenada b/wakatime/packages/py2/pytz/zoneinfo/America/Ensenada similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Ensenada rename to wakatime/packages/py2/pytz/zoneinfo/America/Ensenada diff --git a/wakatime/packages/pytz/zoneinfo/America/Fort_Wayne b/wakatime/packages/py2/pytz/zoneinfo/America/Fort_Wayne similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Fort_Wayne rename to wakatime/packages/py2/pytz/zoneinfo/America/Fort_Wayne diff --git a/wakatime/packages/pytz/zoneinfo/America/Fortaleza b/wakatime/packages/py2/pytz/zoneinfo/America/Fortaleza similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Fortaleza rename to wakatime/packages/py2/pytz/zoneinfo/America/Fortaleza diff --git a/wakatime/packages/pytz/zoneinfo/America/Glace_Bay b/wakatime/packages/py2/pytz/zoneinfo/America/Glace_Bay similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Glace_Bay rename to wakatime/packages/py2/pytz/zoneinfo/America/Glace_Bay diff --git a/wakatime/packages/pytz/zoneinfo/America/Godthab b/wakatime/packages/py2/pytz/zoneinfo/America/Godthab similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Godthab rename to wakatime/packages/py2/pytz/zoneinfo/America/Godthab diff --git a/wakatime/packages/pytz/zoneinfo/America/Goose_Bay b/wakatime/packages/py2/pytz/zoneinfo/America/Goose_Bay similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Goose_Bay rename to wakatime/packages/py2/pytz/zoneinfo/America/Goose_Bay diff --git a/wakatime/packages/pytz/zoneinfo/America/Grand_Turk b/wakatime/packages/py2/pytz/zoneinfo/America/Grand_Turk similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Grand_Turk rename to wakatime/packages/py2/pytz/zoneinfo/America/Grand_Turk diff --git a/wakatime/packages/pytz/zoneinfo/America/Grenada b/wakatime/packages/py2/pytz/zoneinfo/America/Grenada similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Grenada rename to wakatime/packages/py2/pytz/zoneinfo/America/Grenada diff --git a/wakatime/packages/pytz/zoneinfo/America/Guadeloupe b/wakatime/packages/py2/pytz/zoneinfo/America/Guadeloupe similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Guadeloupe rename to wakatime/packages/py2/pytz/zoneinfo/America/Guadeloupe diff --git a/wakatime/packages/pytz/zoneinfo/America/Guatemala b/wakatime/packages/py2/pytz/zoneinfo/America/Guatemala similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Guatemala rename to wakatime/packages/py2/pytz/zoneinfo/America/Guatemala diff --git a/wakatime/packages/pytz/zoneinfo/America/Guayaquil b/wakatime/packages/py2/pytz/zoneinfo/America/Guayaquil similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Guayaquil rename to wakatime/packages/py2/pytz/zoneinfo/America/Guayaquil diff --git a/wakatime/packages/pytz/zoneinfo/America/Guyana b/wakatime/packages/py2/pytz/zoneinfo/America/Guyana similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Guyana rename to wakatime/packages/py2/pytz/zoneinfo/America/Guyana diff --git a/wakatime/packages/pytz/zoneinfo/America/Halifax b/wakatime/packages/py2/pytz/zoneinfo/America/Halifax similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Halifax rename to wakatime/packages/py2/pytz/zoneinfo/America/Halifax diff --git a/wakatime/packages/pytz/zoneinfo/America/Havana b/wakatime/packages/py2/pytz/zoneinfo/America/Havana similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Havana rename to wakatime/packages/py2/pytz/zoneinfo/America/Havana diff --git a/wakatime/packages/pytz/zoneinfo/America/Hermosillo b/wakatime/packages/py2/pytz/zoneinfo/America/Hermosillo similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Hermosillo rename to wakatime/packages/py2/pytz/zoneinfo/America/Hermosillo diff --git a/wakatime/packages/pytz/zoneinfo/America/Indiana/Indianapolis b/wakatime/packages/py2/pytz/zoneinfo/America/Indiana/Indianapolis similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Indiana/Indianapolis rename to wakatime/packages/py2/pytz/zoneinfo/America/Indiana/Indianapolis diff --git a/wakatime/packages/pytz/zoneinfo/America/Indiana/Knox b/wakatime/packages/py2/pytz/zoneinfo/America/Indiana/Knox similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Indiana/Knox rename to wakatime/packages/py2/pytz/zoneinfo/America/Indiana/Knox diff --git a/wakatime/packages/pytz/zoneinfo/America/Indiana/Marengo b/wakatime/packages/py2/pytz/zoneinfo/America/Indiana/Marengo similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Indiana/Marengo rename to wakatime/packages/py2/pytz/zoneinfo/America/Indiana/Marengo diff --git a/wakatime/packages/pytz/zoneinfo/America/Indiana/Petersburg b/wakatime/packages/py2/pytz/zoneinfo/America/Indiana/Petersburg similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Indiana/Petersburg rename to wakatime/packages/py2/pytz/zoneinfo/America/Indiana/Petersburg diff --git a/wakatime/packages/pytz/zoneinfo/America/Indiana/Tell_City b/wakatime/packages/py2/pytz/zoneinfo/America/Indiana/Tell_City similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Indiana/Tell_City rename to wakatime/packages/py2/pytz/zoneinfo/America/Indiana/Tell_City diff --git a/wakatime/packages/pytz/zoneinfo/America/Indiana/Vevay b/wakatime/packages/py2/pytz/zoneinfo/America/Indiana/Vevay similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Indiana/Vevay rename to wakatime/packages/py2/pytz/zoneinfo/America/Indiana/Vevay diff --git a/wakatime/packages/pytz/zoneinfo/America/Indiana/Vincennes b/wakatime/packages/py2/pytz/zoneinfo/America/Indiana/Vincennes similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Indiana/Vincennes rename to wakatime/packages/py2/pytz/zoneinfo/America/Indiana/Vincennes diff --git a/wakatime/packages/pytz/zoneinfo/America/Indiana/Winamac b/wakatime/packages/py2/pytz/zoneinfo/America/Indiana/Winamac similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Indiana/Winamac rename to wakatime/packages/py2/pytz/zoneinfo/America/Indiana/Winamac diff --git a/wakatime/packages/pytz/zoneinfo/America/Indianapolis b/wakatime/packages/py2/pytz/zoneinfo/America/Indianapolis similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Indianapolis rename to wakatime/packages/py2/pytz/zoneinfo/America/Indianapolis diff --git a/wakatime/packages/pytz/zoneinfo/America/Inuvik b/wakatime/packages/py2/pytz/zoneinfo/America/Inuvik similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Inuvik rename to wakatime/packages/py2/pytz/zoneinfo/America/Inuvik diff --git a/wakatime/packages/pytz/zoneinfo/America/Iqaluit b/wakatime/packages/py2/pytz/zoneinfo/America/Iqaluit similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Iqaluit rename to wakatime/packages/py2/pytz/zoneinfo/America/Iqaluit diff --git a/wakatime/packages/pytz/zoneinfo/America/Jamaica b/wakatime/packages/py2/pytz/zoneinfo/America/Jamaica similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Jamaica rename to wakatime/packages/py2/pytz/zoneinfo/America/Jamaica diff --git a/wakatime/packages/pytz/zoneinfo/America/Jujuy b/wakatime/packages/py2/pytz/zoneinfo/America/Jujuy similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Jujuy rename to wakatime/packages/py2/pytz/zoneinfo/America/Jujuy diff --git a/wakatime/packages/pytz/zoneinfo/America/Juneau b/wakatime/packages/py2/pytz/zoneinfo/America/Juneau similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Juneau rename to wakatime/packages/py2/pytz/zoneinfo/America/Juneau diff --git a/wakatime/packages/pytz/zoneinfo/America/Kentucky/Louisville b/wakatime/packages/py2/pytz/zoneinfo/America/Kentucky/Louisville similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Kentucky/Louisville rename to wakatime/packages/py2/pytz/zoneinfo/America/Kentucky/Louisville diff --git a/wakatime/packages/pytz/zoneinfo/America/Kentucky/Monticello b/wakatime/packages/py2/pytz/zoneinfo/America/Kentucky/Monticello similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Kentucky/Monticello rename to wakatime/packages/py2/pytz/zoneinfo/America/Kentucky/Monticello diff --git a/wakatime/packages/pytz/zoneinfo/America/Knox_IN b/wakatime/packages/py2/pytz/zoneinfo/America/Knox_IN similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Knox_IN rename to wakatime/packages/py2/pytz/zoneinfo/America/Knox_IN diff --git a/wakatime/packages/pytz/zoneinfo/America/Kralendijk b/wakatime/packages/py2/pytz/zoneinfo/America/Kralendijk similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Kralendijk rename to wakatime/packages/py2/pytz/zoneinfo/America/Kralendijk diff --git a/wakatime/packages/pytz/zoneinfo/America/La_Paz b/wakatime/packages/py2/pytz/zoneinfo/America/La_Paz similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/La_Paz rename to wakatime/packages/py2/pytz/zoneinfo/America/La_Paz diff --git a/wakatime/packages/pytz/zoneinfo/America/Lima b/wakatime/packages/py2/pytz/zoneinfo/America/Lima similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Lima rename to wakatime/packages/py2/pytz/zoneinfo/America/Lima diff --git a/wakatime/packages/pytz/zoneinfo/America/Los_Angeles b/wakatime/packages/py2/pytz/zoneinfo/America/Los_Angeles similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Los_Angeles rename to wakatime/packages/py2/pytz/zoneinfo/America/Los_Angeles diff --git a/wakatime/packages/pytz/zoneinfo/America/Louisville b/wakatime/packages/py2/pytz/zoneinfo/America/Louisville similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Louisville rename to wakatime/packages/py2/pytz/zoneinfo/America/Louisville diff --git a/wakatime/packages/pytz/zoneinfo/America/Lower_Princes b/wakatime/packages/py2/pytz/zoneinfo/America/Lower_Princes similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Lower_Princes rename to wakatime/packages/py2/pytz/zoneinfo/America/Lower_Princes diff --git a/wakatime/packages/pytz/zoneinfo/America/Maceio b/wakatime/packages/py2/pytz/zoneinfo/America/Maceio similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Maceio rename to wakatime/packages/py2/pytz/zoneinfo/America/Maceio diff --git a/wakatime/packages/pytz/zoneinfo/America/Managua b/wakatime/packages/py2/pytz/zoneinfo/America/Managua similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Managua rename to wakatime/packages/py2/pytz/zoneinfo/America/Managua diff --git a/wakatime/packages/pytz/zoneinfo/America/Manaus b/wakatime/packages/py2/pytz/zoneinfo/America/Manaus similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Manaus rename to wakatime/packages/py2/pytz/zoneinfo/America/Manaus diff --git a/wakatime/packages/pytz/zoneinfo/America/Marigot b/wakatime/packages/py2/pytz/zoneinfo/America/Marigot similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Marigot rename to wakatime/packages/py2/pytz/zoneinfo/America/Marigot diff --git a/wakatime/packages/pytz/zoneinfo/America/Martinique b/wakatime/packages/py2/pytz/zoneinfo/America/Martinique similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Martinique rename to wakatime/packages/py2/pytz/zoneinfo/America/Martinique diff --git a/wakatime/packages/pytz/zoneinfo/America/Matamoros b/wakatime/packages/py2/pytz/zoneinfo/America/Matamoros similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Matamoros rename to wakatime/packages/py2/pytz/zoneinfo/America/Matamoros diff --git a/wakatime/packages/pytz/zoneinfo/America/Mazatlan b/wakatime/packages/py2/pytz/zoneinfo/America/Mazatlan similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Mazatlan rename to wakatime/packages/py2/pytz/zoneinfo/America/Mazatlan diff --git a/wakatime/packages/pytz/zoneinfo/America/Mendoza b/wakatime/packages/py2/pytz/zoneinfo/America/Mendoza similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Mendoza rename to wakatime/packages/py2/pytz/zoneinfo/America/Mendoza diff --git a/wakatime/packages/pytz/zoneinfo/America/Menominee b/wakatime/packages/py2/pytz/zoneinfo/America/Menominee similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Menominee rename to wakatime/packages/py2/pytz/zoneinfo/America/Menominee diff --git a/wakatime/packages/pytz/zoneinfo/America/Merida b/wakatime/packages/py2/pytz/zoneinfo/America/Merida similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Merida rename to wakatime/packages/py2/pytz/zoneinfo/America/Merida diff --git a/wakatime/packages/pytz/zoneinfo/America/Metlakatla b/wakatime/packages/py2/pytz/zoneinfo/America/Metlakatla similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Metlakatla rename to wakatime/packages/py2/pytz/zoneinfo/America/Metlakatla diff --git a/wakatime/packages/pytz/zoneinfo/America/Mexico_City b/wakatime/packages/py2/pytz/zoneinfo/America/Mexico_City similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Mexico_City rename to wakatime/packages/py2/pytz/zoneinfo/America/Mexico_City diff --git a/wakatime/packages/pytz/zoneinfo/America/Miquelon b/wakatime/packages/py2/pytz/zoneinfo/America/Miquelon similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Miquelon rename to wakatime/packages/py2/pytz/zoneinfo/America/Miquelon diff --git a/wakatime/packages/pytz/zoneinfo/America/Moncton b/wakatime/packages/py2/pytz/zoneinfo/America/Moncton similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Moncton rename to wakatime/packages/py2/pytz/zoneinfo/America/Moncton diff --git a/wakatime/packages/pytz/zoneinfo/America/Monterrey b/wakatime/packages/py2/pytz/zoneinfo/America/Monterrey similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Monterrey rename to wakatime/packages/py2/pytz/zoneinfo/America/Monterrey diff --git a/wakatime/packages/pytz/zoneinfo/America/Montevideo b/wakatime/packages/py2/pytz/zoneinfo/America/Montevideo similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Montevideo rename to wakatime/packages/py2/pytz/zoneinfo/America/Montevideo diff --git a/wakatime/packages/pytz/zoneinfo/America/Montreal b/wakatime/packages/py2/pytz/zoneinfo/America/Montreal similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Montreal rename to wakatime/packages/py2/pytz/zoneinfo/America/Montreal diff --git a/wakatime/packages/pytz/zoneinfo/America/Montserrat b/wakatime/packages/py2/pytz/zoneinfo/America/Montserrat similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Montserrat rename to wakatime/packages/py2/pytz/zoneinfo/America/Montserrat diff --git a/wakatime/packages/pytz/zoneinfo/America/Nassau b/wakatime/packages/py2/pytz/zoneinfo/America/Nassau similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Nassau rename to wakatime/packages/py2/pytz/zoneinfo/America/Nassau diff --git a/wakatime/packages/pytz/zoneinfo/America/New_York b/wakatime/packages/py2/pytz/zoneinfo/America/New_York similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/New_York rename to wakatime/packages/py2/pytz/zoneinfo/America/New_York diff --git a/wakatime/packages/pytz/zoneinfo/America/Nipigon b/wakatime/packages/py2/pytz/zoneinfo/America/Nipigon similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Nipigon rename to wakatime/packages/py2/pytz/zoneinfo/America/Nipigon diff --git a/wakatime/packages/pytz/zoneinfo/America/Nome b/wakatime/packages/py2/pytz/zoneinfo/America/Nome similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Nome rename to wakatime/packages/py2/pytz/zoneinfo/America/Nome diff --git a/wakatime/packages/pytz/zoneinfo/America/Noronha b/wakatime/packages/py2/pytz/zoneinfo/America/Noronha similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Noronha rename to wakatime/packages/py2/pytz/zoneinfo/America/Noronha diff --git a/wakatime/packages/pytz/zoneinfo/America/North_Dakota/Beulah b/wakatime/packages/py2/pytz/zoneinfo/America/North_Dakota/Beulah similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/North_Dakota/Beulah rename to wakatime/packages/py2/pytz/zoneinfo/America/North_Dakota/Beulah diff --git a/wakatime/packages/pytz/zoneinfo/America/North_Dakota/Center b/wakatime/packages/py2/pytz/zoneinfo/America/North_Dakota/Center similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/North_Dakota/Center rename to wakatime/packages/py2/pytz/zoneinfo/America/North_Dakota/Center diff --git a/wakatime/packages/pytz/zoneinfo/America/North_Dakota/New_Salem b/wakatime/packages/py2/pytz/zoneinfo/America/North_Dakota/New_Salem similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/North_Dakota/New_Salem rename to wakatime/packages/py2/pytz/zoneinfo/America/North_Dakota/New_Salem diff --git a/wakatime/packages/pytz/zoneinfo/America/Ojinaga b/wakatime/packages/py2/pytz/zoneinfo/America/Ojinaga similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Ojinaga rename to wakatime/packages/py2/pytz/zoneinfo/America/Ojinaga diff --git a/wakatime/packages/pytz/zoneinfo/America/Panama b/wakatime/packages/py2/pytz/zoneinfo/America/Panama similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Panama rename to wakatime/packages/py2/pytz/zoneinfo/America/Panama diff --git a/wakatime/packages/pytz/zoneinfo/America/Pangnirtung b/wakatime/packages/py2/pytz/zoneinfo/America/Pangnirtung similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Pangnirtung rename to wakatime/packages/py2/pytz/zoneinfo/America/Pangnirtung diff --git a/wakatime/packages/pytz/zoneinfo/America/Paramaribo b/wakatime/packages/py2/pytz/zoneinfo/America/Paramaribo similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Paramaribo rename to wakatime/packages/py2/pytz/zoneinfo/America/Paramaribo diff --git a/wakatime/packages/pytz/zoneinfo/America/Phoenix b/wakatime/packages/py2/pytz/zoneinfo/America/Phoenix similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Phoenix rename to wakatime/packages/py2/pytz/zoneinfo/America/Phoenix diff --git a/wakatime/packages/pytz/zoneinfo/America/Port-au-Prince b/wakatime/packages/py2/pytz/zoneinfo/America/Port-au-Prince similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Port-au-Prince rename to wakatime/packages/py2/pytz/zoneinfo/America/Port-au-Prince diff --git a/wakatime/packages/pytz/zoneinfo/America/Port_of_Spain b/wakatime/packages/py2/pytz/zoneinfo/America/Port_of_Spain similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Port_of_Spain rename to wakatime/packages/py2/pytz/zoneinfo/America/Port_of_Spain diff --git a/wakatime/packages/pytz/zoneinfo/America/Porto_Acre b/wakatime/packages/py2/pytz/zoneinfo/America/Porto_Acre similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Porto_Acre rename to wakatime/packages/py2/pytz/zoneinfo/America/Porto_Acre diff --git a/wakatime/packages/pytz/zoneinfo/America/Porto_Velho b/wakatime/packages/py2/pytz/zoneinfo/America/Porto_Velho similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Porto_Velho rename to wakatime/packages/py2/pytz/zoneinfo/America/Porto_Velho diff --git a/wakatime/packages/pytz/zoneinfo/America/Puerto_Rico b/wakatime/packages/py2/pytz/zoneinfo/America/Puerto_Rico similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Puerto_Rico rename to wakatime/packages/py2/pytz/zoneinfo/America/Puerto_Rico diff --git a/wakatime/packages/pytz/zoneinfo/America/Rainy_River b/wakatime/packages/py2/pytz/zoneinfo/America/Rainy_River similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Rainy_River rename to wakatime/packages/py2/pytz/zoneinfo/America/Rainy_River diff --git a/wakatime/packages/pytz/zoneinfo/America/Rankin_Inlet b/wakatime/packages/py2/pytz/zoneinfo/America/Rankin_Inlet similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Rankin_Inlet rename to wakatime/packages/py2/pytz/zoneinfo/America/Rankin_Inlet diff --git a/wakatime/packages/pytz/zoneinfo/America/Recife b/wakatime/packages/py2/pytz/zoneinfo/America/Recife similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Recife rename to wakatime/packages/py2/pytz/zoneinfo/America/Recife diff --git a/wakatime/packages/pytz/zoneinfo/America/Regina b/wakatime/packages/py2/pytz/zoneinfo/America/Regina similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Regina rename to wakatime/packages/py2/pytz/zoneinfo/America/Regina diff --git a/wakatime/packages/pytz/zoneinfo/America/Resolute b/wakatime/packages/py2/pytz/zoneinfo/America/Resolute similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Resolute rename to wakatime/packages/py2/pytz/zoneinfo/America/Resolute diff --git a/wakatime/packages/pytz/zoneinfo/America/Rio_Branco b/wakatime/packages/py2/pytz/zoneinfo/America/Rio_Branco similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Rio_Branco rename to wakatime/packages/py2/pytz/zoneinfo/America/Rio_Branco diff --git a/wakatime/packages/pytz/zoneinfo/America/Rosario b/wakatime/packages/py2/pytz/zoneinfo/America/Rosario similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Rosario rename to wakatime/packages/py2/pytz/zoneinfo/America/Rosario diff --git a/wakatime/packages/pytz/zoneinfo/America/Santa_Isabel b/wakatime/packages/py2/pytz/zoneinfo/America/Santa_Isabel similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Santa_Isabel rename to wakatime/packages/py2/pytz/zoneinfo/America/Santa_Isabel diff --git a/wakatime/packages/pytz/zoneinfo/America/Santarem b/wakatime/packages/py2/pytz/zoneinfo/America/Santarem similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Santarem rename to wakatime/packages/py2/pytz/zoneinfo/America/Santarem diff --git a/wakatime/packages/pytz/zoneinfo/America/Santiago b/wakatime/packages/py2/pytz/zoneinfo/America/Santiago similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Santiago rename to wakatime/packages/py2/pytz/zoneinfo/America/Santiago diff --git a/wakatime/packages/pytz/zoneinfo/America/Santo_Domingo b/wakatime/packages/py2/pytz/zoneinfo/America/Santo_Domingo similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Santo_Domingo rename to wakatime/packages/py2/pytz/zoneinfo/America/Santo_Domingo diff --git a/wakatime/packages/pytz/zoneinfo/America/Sao_Paulo b/wakatime/packages/py2/pytz/zoneinfo/America/Sao_Paulo similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Sao_Paulo rename to wakatime/packages/py2/pytz/zoneinfo/America/Sao_Paulo diff --git a/wakatime/packages/pytz/zoneinfo/America/Scoresbysund b/wakatime/packages/py2/pytz/zoneinfo/America/Scoresbysund similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Scoresbysund rename to wakatime/packages/py2/pytz/zoneinfo/America/Scoresbysund diff --git a/wakatime/packages/pytz/zoneinfo/America/Shiprock b/wakatime/packages/py2/pytz/zoneinfo/America/Shiprock similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Shiprock rename to wakatime/packages/py2/pytz/zoneinfo/America/Shiprock diff --git a/wakatime/packages/pytz/zoneinfo/America/Sitka b/wakatime/packages/py2/pytz/zoneinfo/America/Sitka similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Sitka rename to wakatime/packages/py2/pytz/zoneinfo/America/Sitka diff --git a/wakatime/packages/pytz/zoneinfo/America/St_Barthelemy b/wakatime/packages/py2/pytz/zoneinfo/America/St_Barthelemy similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/St_Barthelemy rename to wakatime/packages/py2/pytz/zoneinfo/America/St_Barthelemy diff --git a/wakatime/packages/pytz/zoneinfo/America/St_Johns b/wakatime/packages/py2/pytz/zoneinfo/America/St_Johns similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/St_Johns rename to wakatime/packages/py2/pytz/zoneinfo/America/St_Johns diff --git a/wakatime/packages/pytz/zoneinfo/America/St_Kitts b/wakatime/packages/py2/pytz/zoneinfo/America/St_Kitts similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/St_Kitts rename to wakatime/packages/py2/pytz/zoneinfo/America/St_Kitts diff --git a/wakatime/packages/pytz/zoneinfo/America/St_Lucia b/wakatime/packages/py2/pytz/zoneinfo/America/St_Lucia similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/St_Lucia rename to wakatime/packages/py2/pytz/zoneinfo/America/St_Lucia diff --git a/wakatime/packages/pytz/zoneinfo/America/St_Thomas b/wakatime/packages/py2/pytz/zoneinfo/America/St_Thomas similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/St_Thomas rename to wakatime/packages/py2/pytz/zoneinfo/America/St_Thomas diff --git a/wakatime/packages/pytz/zoneinfo/America/St_Vincent b/wakatime/packages/py2/pytz/zoneinfo/America/St_Vincent similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/St_Vincent rename to wakatime/packages/py2/pytz/zoneinfo/America/St_Vincent diff --git a/wakatime/packages/pytz/zoneinfo/America/Swift_Current b/wakatime/packages/py2/pytz/zoneinfo/America/Swift_Current similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Swift_Current rename to wakatime/packages/py2/pytz/zoneinfo/America/Swift_Current diff --git a/wakatime/packages/pytz/zoneinfo/America/Tegucigalpa b/wakatime/packages/py2/pytz/zoneinfo/America/Tegucigalpa similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Tegucigalpa rename to wakatime/packages/py2/pytz/zoneinfo/America/Tegucigalpa diff --git a/wakatime/packages/pytz/zoneinfo/America/Thule b/wakatime/packages/py2/pytz/zoneinfo/America/Thule similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Thule rename to wakatime/packages/py2/pytz/zoneinfo/America/Thule diff --git a/wakatime/packages/pytz/zoneinfo/America/Thunder_Bay b/wakatime/packages/py2/pytz/zoneinfo/America/Thunder_Bay similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Thunder_Bay rename to wakatime/packages/py2/pytz/zoneinfo/America/Thunder_Bay diff --git a/wakatime/packages/pytz/zoneinfo/America/Tijuana b/wakatime/packages/py2/pytz/zoneinfo/America/Tijuana similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Tijuana rename to wakatime/packages/py2/pytz/zoneinfo/America/Tijuana diff --git a/wakatime/packages/pytz/zoneinfo/America/Toronto b/wakatime/packages/py2/pytz/zoneinfo/America/Toronto similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Toronto rename to wakatime/packages/py2/pytz/zoneinfo/America/Toronto diff --git a/wakatime/packages/pytz/zoneinfo/America/Tortola b/wakatime/packages/py2/pytz/zoneinfo/America/Tortola similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Tortola rename to wakatime/packages/py2/pytz/zoneinfo/America/Tortola diff --git a/wakatime/packages/pytz/zoneinfo/America/Vancouver b/wakatime/packages/py2/pytz/zoneinfo/America/Vancouver similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Vancouver rename to wakatime/packages/py2/pytz/zoneinfo/America/Vancouver diff --git a/wakatime/packages/pytz/zoneinfo/America/Virgin b/wakatime/packages/py2/pytz/zoneinfo/America/Virgin similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Virgin rename to wakatime/packages/py2/pytz/zoneinfo/America/Virgin diff --git a/wakatime/packages/pytz/zoneinfo/America/Whitehorse b/wakatime/packages/py2/pytz/zoneinfo/America/Whitehorse similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Whitehorse rename to wakatime/packages/py2/pytz/zoneinfo/America/Whitehorse diff --git a/wakatime/packages/pytz/zoneinfo/America/Winnipeg b/wakatime/packages/py2/pytz/zoneinfo/America/Winnipeg similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Winnipeg rename to wakatime/packages/py2/pytz/zoneinfo/America/Winnipeg diff --git a/wakatime/packages/pytz/zoneinfo/America/Yakutat b/wakatime/packages/py2/pytz/zoneinfo/America/Yakutat similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Yakutat rename to wakatime/packages/py2/pytz/zoneinfo/America/Yakutat diff --git a/wakatime/packages/pytz/zoneinfo/America/Yellowknife b/wakatime/packages/py2/pytz/zoneinfo/America/Yellowknife similarity index 100% rename from wakatime/packages/pytz/zoneinfo/America/Yellowknife rename to wakatime/packages/py2/pytz/zoneinfo/America/Yellowknife diff --git a/wakatime/packages/pytz/zoneinfo/Antarctica/Casey b/wakatime/packages/py2/pytz/zoneinfo/Antarctica/Casey similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Antarctica/Casey rename to wakatime/packages/py2/pytz/zoneinfo/Antarctica/Casey diff --git a/wakatime/packages/pytz/zoneinfo/Antarctica/Davis b/wakatime/packages/py2/pytz/zoneinfo/Antarctica/Davis similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Antarctica/Davis rename to wakatime/packages/py2/pytz/zoneinfo/Antarctica/Davis diff --git a/wakatime/packages/pytz/zoneinfo/Antarctica/DumontDUrville b/wakatime/packages/py2/pytz/zoneinfo/Antarctica/DumontDUrville similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Antarctica/DumontDUrville rename to wakatime/packages/py2/pytz/zoneinfo/Antarctica/DumontDUrville diff --git a/wakatime/packages/pytz/zoneinfo/Antarctica/Macquarie b/wakatime/packages/py2/pytz/zoneinfo/Antarctica/Macquarie similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Antarctica/Macquarie rename to wakatime/packages/py2/pytz/zoneinfo/Antarctica/Macquarie diff --git a/wakatime/packages/pytz/zoneinfo/Antarctica/Mawson b/wakatime/packages/py2/pytz/zoneinfo/Antarctica/Mawson similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Antarctica/Mawson rename to wakatime/packages/py2/pytz/zoneinfo/Antarctica/Mawson diff --git a/wakatime/packages/pytz/zoneinfo/Antarctica/McMurdo b/wakatime/packages/py2/pytz/zoneinfo/Antarctica/McMurdo similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Antarctica/McMurdo rename to wakatime/packages/py2/pytz/zoneinfo/Antarctica/McMurdo diff --git a/wakatime/packages/pytz/zoneinfo/Antarctica/Palmer b/wakatime/packages/py2/pytz/zoneinfo/Antarctica/Palmer similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Antarctica/Palmer rename to wakatime/packages/py2/pytz/zoneinfo/Antarctica/Palmer diff --git a/wakatime/packages/pytz/zoneinfo/Antarctica/Rothera b/wakatime/packages/py2/pytz/zoneinfo/Antarctica/Rothera similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Antarctica/Rothera rename to wakatime/packages/py2/pytz/zoneinfo/Antarctica/Rothera diff --git a/wakatime/packages/pytz/zoneinfo/Antarctica/South_Pole b/wakatime/packages/py2/pytz/zoneinfo/Antarctica/South_Pole similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Antarctica/South_Pole rename to wakatime/packages/py2/pytz/zoneinfo/Antarctica/South_Pole diff --git a/wakatime/packages/pytz/zoneinfo/Antarctica/Syowa b/wakatime/packages/py2/pytz/zoneinfo/Antarctica/Syowa similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Antarctica/Syowa rename to wakatime/packages/py2/pytz/zoneinfo/Antarctica/Syowa diff --git a/wakatime/packages/pytz/zoneinfo/Antarctica/Vostok b/wakatime/packages/py2/pytz/zoneinfo/Antarctica/Vostok similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Antarctica/Vostok rename to wakatime/packages/py2/pytz/zoneinfo/Antarctica/Vostok diff --git a/wakatime/packages/pytz/zoneinfo/Arctic/Longyearbyen b/wakatime/packages/py2/pytz/zoneinfo/Arctic/Longyearbyen similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Arctic/Longyearbyen rename to wakatime/packages/py2/pytz/zoneinfo/Arctic/Longyearbyen diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Aden b/wakatime/packages/py2/pytz/zoneinfo/Asia/Aden similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Aden rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Aden diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Almaty b/wakatime/packages/py2/pytz/zoneinfo/Asia/Almaty similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Almaty rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Almaty diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Amman b/wakatime/packages/py2/pytz/zoneinfo/Asia/Amman similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Amman rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Amman diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Anadyr b/wakatime/packages/py2/pytz/zoneinfo/Asia/Anadyr similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Anadyr rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Anadyr diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Aqtau b/wakatime/packages/py2/pytz/zoneinfo/Asia/Aqtau similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Aqtau rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Aqtau diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Aqtobe b/wakatime/packages/py2/pytz/zoneinfo/Asia/Aqtobe similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Aqtobe rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Aqtobe diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Ashgabat b/wakatime/packages/py2/pytz/zoneinfo/Asia/Ashgabat similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Ashgabat rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Ashgabat diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Ashkhabad b/wakatime/packages/py2/pytz/zoneinfo/Asia/Ashkhabad similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Ashkhabad rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Ashkhabad diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Baghdad b/wakatime/packages/py2/pytz/zoneinfo/Asia/Baghdad similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Baghdad rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Baghdad diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Bahrain b/wakatime/packages/py2/pytz/zoneinfo/Asia/Bahrain similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Bahrain rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Bahrain diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Baku b/wakatime/packages/py2/pytz/zoneinfo/Asia/Baku similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Baku rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Baku diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Bangkok b/wakatime/packages/py2/pytz/zoneinfo/Asia/Bangkok similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Bangkok rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Bangkok diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Beirut b/wakatime/packages/py2/pytz/zoneinfo/Asia/Beirut similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Beirut rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Beirut diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Bishkek b/wakatime/packages/py2/pytz/zoneinfo/Asia/Bishkek similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Bishkek rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Bishkek diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Brunei b/wakatime/packages/py2/pytz/zoneinfo/Asia/Brunei similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Brunei rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Brunei diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Calcutta b/wakatime/packages/py2/pytz/zoneinfo/Asia/Calcutta similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Calcutta rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Calcutta diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Choibalsan b/wakatime/packages/py2/pytz/zoneinfo/Asia/Choibalsan similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Choibalsan rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Choibalsan diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Chongqing b/wakatime/packages/py2/pytz/zoneinfo/Asia/Chongqing similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Chongqing rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Chongqing diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Chungking b/wakatime/packages/py2/pytz/zoneinfo/Asia/Chungking similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Chungking rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Chungking diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Colombo b/wakatime/packages/py2/pytz/zoneinfo/Asia/Colombo similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Colombo rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Colombo diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Dacca b/wakatime/packages/py2/pytz/zoneinfo/Asia/Dacca similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Dacca rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Dacca diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Damascus b/wakatime/packages/py2/pytz/zoneinfo/Asia/Damascus similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Damascus rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Damascus diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Dhaka b/wakatime/packages/py2/pytz/zoneinfo/Asia/Dhaka similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Dhaka rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Dhaka diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Dili b/wakatime/packages/py2/pytz/zoneinfo/Asia/Dili similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Dili rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Dili diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Dubai b/wakatime/packages/py2/pytz/zoneinfo/Asia/Dubai similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Dubai rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Dubai diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Dushanbe b/wakatime/packages/py2/pytz/zoneinfo/Asia/Dushanbe similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Dushanbe rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Dushanbe diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Gaza b/wakatime/packages/py2/pytz/zoneinfo/Asia/Gaza similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Gaza rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Gaza diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Harbin b/wakatime/packages/py2/pytz/zoneinfo/Asia/Harbin similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Harbin rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Harbin diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Hebron b/wakatime/packages/py2/pytz/zoneinfo/Asia/Hebron similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Hebron rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Hebron diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Ho_Chi_Minh b/wakatime/packages/py2/pytz/zoneinfo/Asia/Ho_Chi_Minh similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Ho_Chi_Minh rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Ho_Chi_Minh diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Hong_Kong b/wakatime/packages/py2/pytz/zoneinfo/Asia/Hong_Kong similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Hong_Kong rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Hong_Kong diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Hovd b/wakatime/packages/py2/pytz/zoneinfo/Asia/Hovd similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Hovd rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Hovd diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Irkutsk b/wakatime/packages/py2/pytz/zoneinfo/Asia/Irkutsk similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Irkutsk rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Irkutsk diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Istanbul b/wakatime/packages/py2/pytz/zoneinfo/Asia/Istanbul similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Istanbul rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Istanbul diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Jakarta b/wakatime/packages/py2/pytz/zoneinfo/Asia/Jakarta similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Jakarta rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Jakarta diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Jayapura b/wakatime/packages/py2/pytz/zoneinfo/Asia/Jayapura similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Jayapura rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Jayapura diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Jerusalem b/wakatime/packages/py2/pytz/zoneinfo/Asia/Jerusalem similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Jerusalem rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Jerusalem diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Kabul b/wakatime/packages/py2/pytz/zoneinfo/Asia/Kabul similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Kabul rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Kabul diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Kamchatka b/wakatime/packages/py2/pytz/zoneinfo/Asia/Kamchatka similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Kamchatka rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Kamchatka diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Karachi b/wakatime/packages/py2/pytz/zoneinfo/Asia/Karachi similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Karachi rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Karachi diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Kashgar b/wakatime/packages/py2/pytz/zoneinfo/Asia/Kashgar similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Kashgar rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Kashgar diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Kathmandu b/wakatime/packages/py2/pytz/zoneinfo/Asia/Kathmandu similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Kathmandu rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Kathmandu diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Katmandu b/wakatime/packages/py2/pytz/zoneinfo/Asia/Katmandu similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Katmandu rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Katmandu diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Khandyga b/wakatime/packages/py2/pytz/zoneinfo/Asia/Khandyga similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Khandyga rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Khandyga diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Kolkata b/wakatime/packages/py2/pytz/zoneinfo/Asia/Kolkata similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Kolkata rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Kolkata diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Krasnoyarsk b/wakatime/packages/py2/pytz/zoneinfo/Asia/Krasnoyarsk similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Krasnoyarsk rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Krasnoyarsk diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Kuala_Lumpur b/wakatime/packages/py2/pytz/zoneinfo/Asia/Kuala_Lumpur similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Kuala_Lumpur rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Kuala_Lumpur diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Kuching b/wakatime/packages/py2/pytz/zoneinfo/Asia/Kuching similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Kuching rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Kuching diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Kuwait b/wakatime/packages/py2/pytz/zoneinfo/Asia/Kuwait similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Kuwait rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Kuwait diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Macao b/wakatime/packages/py2/pytz/zoneinfo/Asia/Macao similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Macao rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Macao diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Macau b/wakatime/packages/py2/pytz/zoneinfo/Asia/Macau similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Macau rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Macau diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Magadan b/wakatime/packages/py2/pytz/zoneinfo/Asia/Magadan similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Magadan rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Magadan diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Makassar b/wakatime/packages/py2/pytz/zoneinfo/Asia/Makassar similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Makassar rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Makassar diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Manila b/wakatime/packages/py2/pytz/zoneinfo/Asia/Manila similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Manila rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Manila diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Muscat b/wakatime/packages/py2/pytz/zoneinfo/Asia/Muscat similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Muscat rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Muscat diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Nicosia b/wakatime/packages/py2/pytz/zoneinfo/Asia/Nicosia similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Nicosia rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Nicosia diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Novokuznetsk b/wakatime/packages/py2/pytz/zoneinfo/Asia/Novokuznetsk similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Novokuznetsk rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Novokuznetsk diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Novosibirsk b/wakatime/packages/py2/pytz/zoneinfo/Asia/Novosibirsk similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Novosibirsk rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Novosibirsk diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Omsk b/wakatime/packages/py2/pytz/zoneinfo/Asia/Omsk similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Omsk rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Omsk diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Oral b/wakatime/packages/py2/pytz/zoneinfo/Asia/Oral similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Oral rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Oral diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Phnom_Penh b/wakatime/packages/py2/pytz/zoneinfo/Asia/Phnom_Penh similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Phnom_Penh rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Phnom_Penh diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Pontianak b/wakatime/packages/py2/pytz/zoneinfo/Asia/Pontianak similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Pontianak rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Pontianak diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Pyongyang b/wakatime/packages/py2/pytz/zoneinfo/Asia/Pyongyang similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Pyongyang rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Pyongyang diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Qatar b/wakatime/packages/py2/pytz/zoneinfo/Asia/Qatar similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Qatar rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Qatar diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Qyzylorda b/wakatime/packages/py2/pytz/zoneinfo/Asia/Qyzylorda similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Qyzylorda rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Qyzylorda diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Rangoon b/wakatime/packages/py2/pytz/zoneinfo/Asia/Rangoon similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Rangoon rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Rangoon diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Riyadh b/wakatime/packages/py2/pytz/zoneinfo/Asia/Riyadh similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Riyadh rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Riyadh diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Riyadh87 b/wakatime/packages/py2/pytz/zoneinfo/Asia/Riyadh87 similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Riyadh87 rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Riyadh87 diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Riyadh88 b/wakatime/packages/py2/pytz/zoneinfo/Asia/Riyadh88 similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Riyadh88 rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Riyadh88 diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Riyadh89 b/wakatime/packages/py2/pytz/zoneinfo/Asia/Riyadh89 similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Riyadh89 rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Riyadh89 diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Saigon b/wakatime/packages/py2/pytz/zoneinfo/Asia/Saigon similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Saigon rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Saigon diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Sakhalin b/wakatime/packages/py2/pytz/zoneinfo/Asia/Sakhalin similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Sakhalin rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Sakhalin diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Samarkand b/wakatime/packages/py2/pytz/zoneinfo/Asia/Samarkand similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Samarkand rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Samarkand diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Seoul b/wakatime/packages/py2/pytz/zoneinfo/Asia/Seoul similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Seoul rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Seoul diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Shanghai b/wakatime/packages/py2/pytz/zoneinfo/Asia/Shanghai similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Shanghai rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Shanghai diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Singapore b/wakatime/packages/py2/pytz/zoneinfo/Asia/Singapore similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Singapore rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Singapore diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Taipei b/wakatime/packages/py2/pytz/zoneinfo/Asia/Taipei similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Taipei rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Taipei diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Tashkent b/wakatime/packages/py2/pytz/zoneinfo/Asia/Tashkent similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Tashkent rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Tashkent diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Tbilisi b/wakatime/packages/py2/pytz/zoneinfo/Asia/Tbilisi similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Tbilisi rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Tbilisi diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Tehran b/wakatime/packages/py2/pytz/zoneinfo/Asia/Tehran similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Tehran rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Tehran diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Tel_Aviv b/wakatime/packages/py2/pytz/zoneinfo/Asia/Tel_Aviv similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Tel_Aviv rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Tel_Aviv diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Thimbu b/wakatime/packages/py2/pytz/zoneinfo/Asia/Thimbu similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Thimbu rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Thimbu diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Thimphu b/wakatime/packages/py2/pytz/zoneinfo/Asia/Thimphu similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Thimphu rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Thimphu diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Tokyo b/wakatime/packages/py2/pytz/zoneinfo/Asia/Tokyo similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Tokyo rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Tokyo diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Ujung_Pandang b/wakatime/packages/py2/pytz/zoneinfo/Asia/Ujung_Pandang similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Ujung_Pandang rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Ujung_Pandang diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Ulaanbaatar b/wakatime/packages/py2/pytz/zoneinfo/Asia/Ulaanbaatar similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Ulaanbaatar rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Ulaanbaatar diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Ulan_Bator b/wakatime/packages/py2/pytz/zoneinfo/Asia/Ulan_Bator similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Ulan_Bator rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Ulan_Bator diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Urumqi b/wakatime/packages/py2/pytz/zoneinfo/Asia/Urumqi similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Urumqi rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Urumqi diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Ust-Nera b/wakatime/packages/py2/pytz/zoneinfo/Asia/Ust-Nera similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Ust-Nera rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Ust-Nera diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Vientiane b/wakatime/packages/py2/pytz/zoneinfo/Asia/Vientiane similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Vientiane rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Vientiane diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Vladivostok b/wakatime/packages/py2/pytz/zoneinfo/Asia/Vladivostok similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Vladivostok rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Vladivostok diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Yakutsk b/wakatime/packages/py2/pytz/zoneinfo/Asia/Yakutsk similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Yakutsk rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Yakutsk diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Yekaterinburg b/wakatime/packages/py2/pytz/zoneinfo/Asia/Yekaterinburg similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Yekaterinburg rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Yekaterinburg diff --git a/wakatime/packages/pytz/zoneinfo/Asia/Yerevan b/wakatime/packages/py2/pytz/zoneinfo/Asia/Yerevan similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Asia/Yerevan rename to wakatime/packages/py2/pytz/zoneinfo/Asia/Yerevan diff --git a/wakatime/packages/pytz/zoneinfo/Atlantic/Azores b/wakatime/packages/py2/pytz/zoneinfo/Atlantic/Azores similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Atlantic/Azores rename to wakatime/packages/py2/pytz/zoneinfo/Atlantic/Azores diff --git a/wakatime/packages/pytz/zoneinfo/Atlantic/Bermuda b/wakatime/packages/py2/pytz/zoneinfo/Atlantic/Bermuda similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Atlantic/Bermuda rename to wakatime/packages/py2/pytz/zoneinfo/Atlantic/Bermuda diff --git a/wakatime/packages/pytz/zoneinfo/Atlantic/Canary b/wakatime/packages/py2/pytz/zoneinfo/Atlantic/Canary similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Atlantic/Canary rename to wakatime/packages/py2/pytz/zoneinfo/Atlantic/Canary diff --git a/wakatime/packages/pytz/zoneinfo/Atlantic/Cape_Verde b/wakatime/packages/py2/pytz/zoneinfo/Atlantic/Cape_Verde similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Atlantic/Cape_Verde rename to wakatime/packages/py2/pytz/zoneinfo/Atlantic/Cape_Verde diff --git a/wakatime/packages/pytz/zoneinfo/Atlantic/Faeroe b/wakatime/packages/py2/pytz/zoneinfo/Atlantic/Faeroe similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Atlantic/Faeroe rename to wakatime/packages/py2/pytz/zoneinfo/Atlantic/Faeroe diff --git a/wakatime/packages/pytz/zoneinfo/Atlantic/Faroe b/wakatime/packages/py2/pytz/zoneinfo/Atlantic/Faroe similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Atlantic/Faroe rename to wakatime/packages/py2/pytz/zoneinfo/Atlantic/Faroe diff --git a/wakatime/packages/pytz/zoneinfo/Atlantic/Jan_Mayen b/wakatime/packages/py2/pytz/zoneinfo/Atlantic/Jan_Mayen similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Atlantic/Jan_Mayen rename to wakatime/packages/py2/pytz/zoneinfo/Atlantic/Jan_Mayen diff --git a/wakatime/packages/pytz/zoneinfo/Atlantic/Madeira b/wakatime/packages/py2/pytz/zoneinfo/Atlantic/Madeira similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Atlantic/Madeira rename to wakatime/packages/py2/pytz/zoneinfo/Atlantic/Madeira diff --git a/wakatime/packages/pytz/zoneinfo/Atlantic/Reykjavik b/wakatime/packages/py2/pytz/zoneinfo/Atlantic/Reykjavik similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Atlantic/Reykjavik rename to wakatime/packages/py2/pytz/zoneinfo/Atlantic/Reykjavik diff --git a/wakatime/packages/pytz/zoneinfo/Atlantic/South_Georgia b/wakatime/packages/py2/pytz/zoneinfo/Atlantic/South_Georgia similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Atlantic/South_Georgia rename to wakatime/packages/py2/pytz/zoneinfo/Atlantic/South_Georgia diff --git a/wakatime/packages/pytz/zoneinfo/Atlantic/St_Helena b/wakatime/packages/py2/pytz/zoneinfo/Atlantic/St_Helena similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Atlantic/St_Helena rename to wakatime/packages/py2/pytz/zoneinfo/Atlantic/St_Helena diff --git a/wakatime/packages/pytz/zoneinfo/Atlantic/Stanley b/wakatime/packages/py2/pytz/zoneinfo/Atlantic/Stanley similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Atlantic/Stanley rename to wakatime/packages/py2/pytz/zoneinfo/Atlantic/Stanley diff --git a/wakatime/packages/pytz/zoneinfo/Australia/ACT b/wakatime/packages/py2/pytz/zoneinfo/Australia/ACT similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Australia/ACT rename to wakatime/packages/py2/pytz/zoneinfo/Australia/ACT diff --git a/wakatime/packages/pytz/zoneinfo/Australia/Adelaide b/wakatime/packages/py2/pytz/zoneinfo/Australia/Adelaide similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Australia/Adelaide rename to wakatime/packages/py2/pytz/zoneinfo/Australia/Adelaide diff --git a/wakatime/packages/pytz/zoneinfo/Australia/Brisbane b/wakatime/packages/py2/pytz/zoneinfo/Australia/Brisbane similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Australia/Brisbane rename to wakatime/packages/py2/pytz/zoneinfo/Australia/Brisbane diff --git a/wakatime/packages/pytz/zoneinfo/Australia/Broken_Hill b/wakatime/packages/py2/pytz/zoneinfo/Australia/Broken_Hill similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Australia/Broken_Hill rename to wakatime/packages/py2/pytz/zoneinfo/Australia/Broken_Hill diff --git a/wakatime/packages/pytz/zoneinfo/Australia/Canberra b/wakatime/packages/py2/pytz/zoneinfo/Australia/Canberra similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Australia/Canberra rename to wakatime/packages/py2/pytz/zoneinfo/Australia/Canberra diff --git a/wakatime/packages/pytz/zoneinfo/Australia/Currie b/wakatime/packages/py2/pytz/zoneinfo/Australia/Currie similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Australia/Currie rename to wakatime/packages/py2/pytz/zoneinfo/Australia/Currie diff --git a/wakatime/packages/pytz/zoneinfo/Australia/Darwin b/wakatime/packages/py2/pytz/zoneinfo/Australia/Darwin similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Australia/Darwin rename to wakatime/packages/py2/pytz/zoneinfo/Australia/Darwin diff --git a/wakatime/packages/pytz/zoneinfo/Australia/Eucla b/wakatime/packages/py2/pytz/zoneinfo/Australia/Eucla similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Australia/Eucla rename to wakatime/packages/py2/pytz/zoneinfo/Australia/Eucla diff --git a/wakatime/packages/pytz/zoneinfo/Australia/Hobart b/wakatime/packages/py2/pytz/zoneinfo/Australia/Hobart similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Australia/Hobart rename to wakatime/packages/py2/pytz/zoneinfo/Australia/Hobart diff --git a/wakatime/packages/pytz/zoneinfo/Australia/LHI b/wakatime/packages/py2/pytz/zoneinfo/Australia/LHI similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Australia/LHI rename to wakatime/packages/py2/pytz/zoneinfo/Australia/LHI diff --git a/wakatime/packages/pytz/zoneinfo/Australia/Lindeman b/wakatime/packages/py2/pytz/zoneinfo/Australia/Lindeman similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Australia/Lindeman rename to wakatime/packages/py2/pytz/zoneinfo/Australia/Lindeman diff --git a/wakatime/packages/pytz/zoneinfo/Australia/Lord_Howe b/wakatime/packages/py2/pytz/zoneinfo/Australia/Lord_Howe similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Australia/Lord_Howe rename to wakatime/packages/py2/pytz/zoneinfo/Australia/Lord_Howe diff --git a/wakatime/packages/pytz/zoneinfo/Australia/Melbourne b/wakatime/packages/py2/pytz/zoneinfo/Australia/Melbourne similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Australia/Melbourne rename to wakatime/packages/py2/pytz/zoneinfo/Australia/Melbourne diff --git a/wakatime/packages/pytz/zoneinfo/Australia/NSW b/wakatime/packages/py2/pytz/zoneinfo/Australia/NSW similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Australia/NSW rename to wakatime/packages/py2/pytz/zoneinfo/Australia/NSW diff --git a/wakatime/packages/pytz/zoneinfo/Australia/North b/wakatime/packages/py2/pytz/zoneinfo/Australia/North similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Australia/North rename to wakatime/packages/py2/pytz/zoneinfo/Australia/North diff --git a/wakatime/packages/pytz/zoneinfo/Australia/Perth b/wakatime/packages/py2/pytz/zoneinfo/Australia/Perth similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Australia/Perth rename to wakatime/packages/py2/pytz/zoneinfo/Australia/Perth diff --git a/wakatime/packages/pytz/zoneinfo/Australia/Queensland b/wakatime/packages/py2/pytz/zoneinfo/Australia/Queensland similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Australia/Queensland rename to wakatime/packages/py2/pytz/zoneinfo/Australia/Queensland diff --git a/wakatime/packages/pytz/zoneinfo/Australia/South b/wakatime/packages/py2/pytz/zoneinfo/Australia/South similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Australia/South rename to wakatime/packages/py2/pytz/zoneinfo/Australia/South diff --git a/wakatime/packages/pytz/zoneinfo/Australia/Sydney b/wakatime/packages/py2/pytz/zoneinfo/Australia/Sydney similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Australia/Sydney rename to wakatime/packages/py2/pytz/zoneinfo/Australia/Sydney diff --git a/wakatime/packages/pytz/zoneinfo/Australia/Tasmania b/wakatime/packages/py2/pytz/zoneinfo/Australia/Tasmania similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Australia/Tasmania rename to wakatime/packages/py2/pytz/zoneinfo/Australia/Tasmania diff --git a/wakatime/packages/pytz/zoneinfo/Australia/Victoria b/wakatime/packages/py2/pytz/zoneinfo/Australia/Victoria similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Australia/Victoria rename to wakatime/packages/py2/pytz/zoneinfo/Australia/Victoria diff --git a/wakatime/packages/pytz/zoneinfo/Australia/West b/wakatime/packages/py2/pytz/zoneinfo/Australia/West similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Australia/West rename to wakatime/packages/py2/pytz/zoneinfo/Australia/West diff --git a/wakatime/packages/pytz/zoneinfo/Australia/Yancowinna b/wakatime/packages/py2/pytz/zoneinfo/Australia/Yancowinna similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Australia/Yancowinna rename to wakatime/packages/py2/pytz/zoneinfo/Australia/Yancowinna diff --git a/wakatime/packages/pytz/zoneinfo/Brazil/Acre b/wakatime/packages/py2/pytz/zoneinfo/Brazil/Acre similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Brazil/Acre rename to wakatime/packages/py2/pytz/zoneinfo/Brazil/Acre diff --git a/wakatime/packages/pytz/zoneinfo/Brazil/DeNoronha b/wakatime/packages/py2/pytz/zoneinfo/Brazil/DeNoronha similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Brazil/DeNoronha rename to wakatime/packages/py2/pytz/zoneinfo/Brazil/DeNoronha diff --git a/wakatime/packages/pytz/zoneinfo/Brazil/East b/wakatime/packages/py2/pytz/zoneinfo/Brazil/East similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Brazil/East rename to wakatime/packages/py2/pytz/zoneinfo/Brazil/East diff --git a/wakatime/packages/pytz/zoneinfo/Brazil/West b/wakatime/packages/py2/pytz/zoneinfo/Brazil/West similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Brazil/West rename to wakatime/packages/py2/pytz/zoneinfo/Brazil/West diff --git a/wakatime/packages/pytz/zoneinfo/CET b/wakatime/packages/py2/pytz/zoneinfo/CET similarity index 100% rename from wakatime/packages/pytz/zoneinfo/CET rename to wakatime/packages/py2/pytz/zoneinfo/CET diff --git a/wakatime/packages/pytz/zoneinfo/CST6CDT b/wakatime/packages/py2/pytz/zoneinfo/CST6CDT similarity index 100% rename from wakatime/packages/pytz/zoneinfo/CST6CDT rename to wakatime/packages/py2/pytz/zoneinfo/CST6CDT diff --git a/wakatime/packages/pytz/zoneinfo/Canada/Atlantic b/wakatime/packages/py2/pytz/zoneinfo/Canada/Atlantic similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Canada/Atlantic rename to wakatime/packages/py2/pytz/zoneinfo/Canada/Atlantic diff --git a/wakatime/packages/pytz/zoneinfo/Canada/Central b/wakatime/packages/py2/pytz/zoneinfo/Canada/Central similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Canada/Central rename to wakatime/packages/py2/pytz/zoneinfo/Canada/Central diff --git a/wakatime/packages/pytz/zoneinfo/Canada/East-Saskatchewan b/wakatime/packages/py2/pytz/zoneinfo/Canada/East-Saskatchewan similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Canada/East-Saskatchewan rename to wakatime/packages/py2/pytz/zoneinfo/Canada/East-Saskatchewan diff --git a/wakatime/packages/pytz/zoneinfo/Canada/Eastern b/wakatime/packages/py2/pytz/zoneinfo/Canada/Eastern similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Canada/Eastern rename to wakatime/packages/py2/pytz/zoneinfo/Canada/Eastern diff --git a/wakatime/packages/pytz/zoneinfo/Canada/Mountain b/wakatime/packages/py2/pytz/zoneinfo/Canada/Mountain similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Canada/Mountain rename to wakatime/packages/py2/pytz/zoneinfo/Canada/Mountain diff --git a/wakatime/packages/pytz/zoneinfo/Canada/Newfoundland b/wakatime/packages/py2/pytz/zoneinfo/Canada/Newfoundland similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Canada/Newfoundland rename to wakatime/packages/py2/pytz/zoneinfo/Canada/Newfoundland diff --git a/wakatime/packages/pytz/zoneinfo/Canada/Pacific b/wakatime/packages/py2/pytz/zoneinfo/Canada/Pacific similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Canada/Pacific rename to wakatime/packages/py2/pytz/zoneinfo/Canada/Pacific diff --git a/wakatime/packages/pytz/zoneinfo/Canada/Saskatchewan b/wakatime/packages/py2/pytz/zoneinfo/Canada/Saskatchewan similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Canada/Saskatchewan rename to wakatime/packages/py2/pytz/zoneinfo/Canada/Saskatchewan diff --git a/wakatime/packages/pytz/zoneinfo/Canada/Yukon b/wakatime/packages/py2/pytz/zoneinfo/Canada/Yukon similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Canada/Yukon rename to wakatime/packages/py2/pytz/zoneinfo/Canada/Yukon diff --git a/wakatime/packages/pytz/zoneinfo/Chile/Continental b/wakatime/packages/py2/pytz/zoneinfo/Chile/Continental similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Chile/Continental rename to wakatime/packages/py2/pytz/zoneinfo/Chile/Continental diff --git a/wakatime/packages/pytz/zoneinfo/Chile/EasterIsland b/wakatime/packages/py2/pytz/zoneinfo/Chile/EasterIsland similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Chile/EasterIsland rename to wakatime/packages/py2/pytz/zoneinfo/Chile/EasterIsland diff --git a/wakatime/packages/pytz/zoneinfo/Cuba b/wakatime/packages/py2/pytz/zoneinfo/Cuba similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Cuba rename to wakatime/packages/py2/pytz/zoneinfo/Cuba diff --git a/wakatime/packages/pytz/zoneinfo/EET b/wakatime/packages/py2/pytz/zoneinfo/EET similarity index 100% rename from wakatime/packages/pytz/zoneinfo/EET rename to wakatime/packages/py2/pytz/zoneinfo/EET diff --git a/wakatime/packages/pytz/zoneinfo/EST b/wakatime/packages/py2/pytz/zoneinfo/EST similarity index 100% rename from wakatime/packages/pytz/zoneinfo/EST rename to wakatime/packages/py2/pytz/zoneinfo/EST diff --git a/wakatime/packages/pytz/zoneinfo/EST5EDT b/wakatime/packages/py2/pytz/zoneinfo/EST5EDT similarity index 100% rename from wakatime/packages/pytz/zoneinfo/EST5EDT rename to wakatime/packages/py2/pytz/zoneinfo/EST5EDT diff --git a/wakatime/packages/pytz/zoneinfo/Egypt b/wakatime/packages/py2/pytz/zoneinfo/Egypt similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Egypt rename to wakatime/packages/py2/pytz/zoneinfo/Egypt diff --git a/wakatime/packages/pytz/zoneinfo/Eire b/wakatime/packages/py2/pytz/zoneinfo/Eire similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Eire rename to wakatime/packages/py2/pytz/zoneinfo/Eire diff --git a/wakatime/packages/pytz/zoneinfo/Etc/GMT b/wakatime/packages/py2/pytz/zoneinfo/Etc/GMT similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Etc/GMT rename to wakatime/packages/py2/pytz/zoneinfo/Etc/GMT diff --git a/wakatime/packages/pytz/zoneinfo/Etc/GMT+0 b/wakatime/packages/py2/pytz/zoneinfo/Etc/GMT+0 similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Etc/GMT+0 rename to wakatime/packages/py2/pytz/zoneinfo/Etc/GMT+0 diff --git a/wakatime/packages/pytz/zoneinfo/Etc/GMT+1 b/wakatime/packages/py2/pytz/zoneinfo/Etc/GMT+1 similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Etc/GMT+1 rename to wakatime/packages/py2/pytz/zoneinfo/Etc/GMT+1 diff --git a/wakatime/packages/pytz/zoneinfo/Etc/GMT+10 b/wakatime/packages/py2/pytz/zoneinfo/Etc/GMT+10 similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Etc/GMT+10 rename to wakatime/packages/py2/pytz/zoneinfo/Etc/GMT+10 diff --git a/wakatime/packages/pytz/zoneinfo/Etc/GMT+11 b/wakatime/packages/py2/pytz/zoneinfo/Etc/GMT+11 similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Etc/GMT+11 rename to wakatime/packages/py2/pytz/zoneinfo/Etc/GMT+11 diff --git a/wakatime/packages/pytz/zoneinfo/Etc/GMT+12 b/wakatime/packages/py2/pytz/zoneinfo/Etc/GMT+12 similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Etc/GMT+12 rename to wakatime/packages/py2/pytz/zoneinfo/Etc/GMT+12 diff --git a/wakatime/packages/pytz/zoneinfo/Etc/GMT+2 b/wakatime/packages/py2/pytz/zoneinfo/Etc/GMT+2 similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Etc/GMT+2 rename to wakatime/packages/py2/pytz/zoneinfo/Etc/GMT+2 diff --git a/wakatime/packages/pytz/zoneinfo/Etc/GMT+3 b/wakatime/packages/py2/pytz/zoneinfo/Etc/GMT+3 similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Etc/GMT+3 rename to wakatime/packages/py2/pytz/zoneinfo/Etc/GMT+3 diff --git a/wakatime/packages/pytz/zoneinfo/Etc/GMT+4 b/wakatime/packages/py2/pytz/zoneinfo/Etc/GMT+4 similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Etc/GMT+4 rename to wakatime/packages/py2/pytz/zoneinfo/Etc/GMT+4 diff --git a/wakatime/packages/pytz/zoneinfo/Etc/GMT+5 b/wakatime/packages/py2/pytz/zoneinfo/Etc/GMT+5 similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Etc/GMT+5 rename to wakatime/packages/py2/pytz/zoneinfo/Etc/GMT+5 diff --git a/wakatime/packages/pytz/zoneinfo/Etc/GMT+6 b/wakatime/packages/py2/pytz/zoneinfo/Etc/GMT+6 similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Etc/GMT+6 rename to wakatime/packages/py2/pytz/zoneinfo/Etc/GMT+6 diff --git a/wakatime/packages/pytz/zoneinfo/Etc/GMT+7 b/wakatime/packages/py2/pytz/zoneinfo/Etc/GMT+7 similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Etc/GMT+7 rename to wakatime/packages/py2/pytz/zoneinfo/Etc/GMT+7 diff --git a/wakatime/packages/pytz/zoneinfo/Etc/GMT+8 b/wakatime/packages/py2/pytz/zoneinfo/Etc/GMT+8 similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Etc/GMT+8 rename to wakatime/packages/py2/pytz/zoneinfo/Etc/GMT+8 diff --git a/wakatime/packages/pytz/zoneinfo/Etc/GMT+9 b/wakatime/packages/py2/pytz/zoneinfo/Etc/GMT+9 similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Etc/GMT+9 rename to wakatime/packages/py2/pytz/zoneinfo/Etc/GMT+9 diff --git a/wakatime/packages/pytz/zoneinfo/Etc/GMT-0 b/wakatime/packages/py2/pytz/zoneinfo/Etc/GMT-0 similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Etc/GMT-0 rename to wakatime/packages/py2/pytz/zoneinfo/Etc/GMT-0 diff --git a/wakatime/packages/pytz/zoneinfo/Etc/GMT-1 b/wakatime/packages/py2/pytz/zoneinfo/Etc/GMT-1 similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Etc/GMT-1 rename to wakatime/packages/py2/pytz/zoneinfo/Etc/GMT-1 diff --git a/wakatime/packages/pytz/zoneinfo/Etc/GMT-10 b/wakatime/packages/py2/pytz/zoneinfo/Etc/GMT-10 similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Etc/GMT-10 rename to wakatime/packages/py2/pytz/zoneinfo/Etc/GMT-10 diff --git a/wakatime/packages/pytz/zoneinfo/Etc/GMT-11 b/wakatime/packages/py2/pytz/zoneinfo/Etc/GMT-11 similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Etc/GMT-11 rename to wakatime/packages/py2/pytz/zoneinfo/Etc/GMT-11 diff --git a/wakatime/packages/pytz/zoneinfo/Etc/GMT-12 b/wakatime/packages/py2/pytz/zoneinfo/Etc/GMT-12 similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Etc/GMT-12 rename to wakatime/packages/py2/pytz/zoneinfo/Etc/GMT-12 diff --git a/wakatime/packages/pytz/zoneinfo/Etc/GMT-13 b/wakatime/packages/py2/pytz/zoneinfo/Etc/GMT-13 similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Etc/GMT-13 rename to wakatime/packages/py2/pytz/zoneinfo/Etc/GMT-13 diff --git a/wakatime/packages/pytz/zoneinfo/Etc/GMT-14 b/wakatime/packages/py2/pytz/zoneinfo/Etc/GMT-14 similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Etc/GMT-14 rename to wakatime/packages/py2/pytz/zoneinfo/Etc/GMT-14 diff --git a/wakatime/packages/pytz/zoneinfo/Etc/GMT-2 b/wakatime/packages/py2/pytz/zoneinfo/Etc/GMT-2 similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Etc/GMT-2 rename to wakatime/packages/py2/pytz/zoneinfo/Etc/GMT-2 diff --git a/wakatime/packages/pytz/zoneinfo/Etc/GMT-3 b/wakatime/packages/py2/pytz/zoneinfo/Etc/GMT-3 similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Etc/GMT-3 rename to wakatime/packages/py2/pytz/zoneinfo/Etc/GMT-3 diff --git a/wakatime/packages/pytz/zoneinfo/Etc/GMT-4 b/wakatime/packages/py2/pytz/zoneinfo/Etc/GMT-4 similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Etc/GMT-4 rename to wakatime/packages/py2/pytz/zoneinfo/Etc/GMT-4 diff --git a/wakatime/packages/pytz/zoneinfo/Etc/GMT-5 b/wakatime/packages/py2/pytz/zoneinfo/Etc/GMT-5 similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Etc/GMT-5 rename to wakatime/packages/py2/pytz/zoneinfo/Etc/GMT-5 diff --git a/wakatime/packages/pytz/zoneinfo/Etc/GMT-6 b/wakatime/packages/py2/pytz/zoneinfo/Etc/GMT-6 similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Etc/GMT-6 rename to wakatime/packages/py2/pytz/zoneinfo/Etc/GMT-6 diff --git a/wakatime/packages/pytz/zoneinfo/Etc/GMT-7 b/wakatime/packages/py2/pytz/zoneinfo/Etc/GMT-7 similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Etc/GMT-7 rename to wakatime/packages/py2/pytz/zoneinfo/Etc/GMT-7 diff --git a/wakatime/packages/pytz/zoneinfo/Etc/GMT-8 b/wakatime/packages/py2/pytz/zoneinfo/Etc/GMT-8 similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Etc/GMT-8 rename to wakatime/packages/py2/pytz/zoneinfo/Etc/GMT-8 diff --git a/wakatime/packages/pytz/zoneinfo/Etc/GMT-9 b/wakatime/packages/py2/pytz/zoneinfo/Etc/GMT-9 similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Etc/GMT-9 rename to wakatime/packages/py2/pytz/zoneinfo/Etc/GMT-9 diff --git a/wakatime/packages/pytz/zoneinfo/Etc/GMT0 b/wakatime/packages/py2/pytz/zoneinfo/Etc/GMT0 similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Etc/GMT0 rename to wakatime/packages/py2/pytz/zoneinfo/Etc/GMT0 diff --git a/wakatime/packages/pytz/zoneinfo/Etc/Greenwich b/wakatime/packages/py2/pytz/zoneinfo/Etc/Greenwich similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Etc/Greenwich rename to wakatime/packages/py2/pytz/zoneinfo/Etc/Greenwich diff --git a/wakatime/packages/pytz/zoneinfo/Etc/UCT b/wakatime/packages/py2/pytz/zoneinfo/Etc/UCT similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Etc/UCT rename to wakatime/packages/py2/pytz/zoneinfo/Etc/UCT diff --git a/wakatime/packages/pytz/zoneinfo/Etc/UTC b/wakatime/packages/py2/pytz/zoneinfo/Etc/UTC similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Etc/UTC rename to wakatime/packages/py2/pytz/zoneinfo/Etc/UTC diff --git a/wakatime/packages/pytz/zoneinfo/Etc/Universal b/wakatime/packages/py2/pytz/zoneinfo/Etc/Universal similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Etc/Universal rename to wakatime/packages/py2/pytz/zoneinfo/Etc/Universal diff --git a/wakatime/packages/pytz/zoneinfo/Etc/Zulu b/wakatime/packages/py2/pytz/zoneinfo/Etc/Zulu similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Etc/Zulu rename to wakatime/packages/py2/pytz/zoneinfo/Etc/Zulu diff --git a/wakatime/packages/pytz/zoneinfo/Europe/Amsterdam b/wakatime/packages/py2/pytz/zoneinfo/Europe/Amsterdam similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Europe/Amsterdam rename to wakatime/packages/py2/pytz/zoneinfo/Europe/Amsterdam diff --git a/wakatime/packages/pytz/zoneinfo/Europe/Andorra b/wakatime/packages/py2/pytz/zoneinfo/Europe/Andorra similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Europe/Andorra rename to wakatime/packages/py2/pytz/zoneinfo/Europe/Andorra diff --git a/wakatime/packages/pytz/zoneinfo/Europe/Athens b/wakatime/packages/py2/pytz/zoneinfo/Europe/Athens similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Europe/Athens rename to wakatime/packages/py2/pytz/zoneinfo/Europe/Athens diff --git a/wakatime/packages/pytz/zoneinfo/Europe/Belfast b/wakatime/packages/py2/pytz/zoneinfo/Europe/Belfast similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Europe/Belfast rename to wakatime/packages/py2/pytz/zoneinfo/Europe/Belfast diff --git a/wakatime/packages/pytz/zoneinfo/Europe/Belgrade b/wakatime/packages/py2/pytz/zoneinfo/Europe/Belgrade similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Europe/Belgrade rename to wakatime/packages/py2/pytz/zoneinfo/Europe/Belgrade diff --git a/wakatime/packages/pytz/zoneinfo/Europe/Berlin b/wakatime/packages/py2/pytz/zoneinfo/Europe/Berlin similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Europe/Berlin rename to wakatime/packages/py2/pytz/zoneinfo/Europe/Berlin diff --git a/wakatime/packages/pytz/zoneinfo/Europe/Bratislava b/wakatime/packages/py2/pytz/zoneinfo/Europe/Bratislava similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Europe/Bratislava rename to wakatime/packages/py2/pytz/zoneinfo/Europe/Bratislava diff --git a/wakatime/packages/pytz/zoneinfo/Europe/Brussels b/wakatime/packages/py2/pytz/zoneinfo/Europe/Brussels similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Europe/Brussels rename to wakatime/packages/py2/pytz/zoneinfo/Europe/Brussels diff --git a/wakatime/packages/pytz/zoneinfo/Europe/Bucharest b/wakatime/packages/py2/pytz/zoneinfo/Europe/Bucharest similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Europe/Bucharest rename to wakatime/packages/py2/pytz/zoneinfo/Europe/Bucharest diff --git a/wakatime/packages/pytz/zoneinfo/Europe/Budapest b/wakatime/packages/py2/pytz/zoneinfo/Europe/Budapest similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Europe/Budapest rename to wakatime/packages/py2/pytz/zoneinfo/Europe/Budapest diff --git a/wakatime/packages/pytz/zoneinfo/Europe/Busingen b/wakatime/packages/py2/pytz/zoneinfo/Europe/Busingen similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Europe/Busingen rename to wakatime/packages/py2/pytz/zoneinfo/Europe/Busingen diff --git a/wakatime/packages/pytz/zoneinfo/Europe/Chisinau b/wakatime/packages/py2/pytz/zoneinfo/Europe/Chisinau similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Europe/Chisinau rename to wakatime/packages/py2/pytz/zoneinfo/Europe/Chisinau diff --git a/wakatime/packages/pytz/zoneinfo/Europe/Copenhagen b/wakatime/packages/py2/pytz/zoneinfo/Europe/Copenhagen similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Europe/Copenhagen rename to wakatime/packages/py2/pytz/zoneinfo/Europe/Copenhagen diff --git a/wakatime/packages/pytz/zoneinfo/Europe/Dublin b/wakatime/packages/py2/pytz/zoneinfo/Europe/Dublin similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Europe/Dublin rename to wakatime/packages/py2/pytz/zoneinfo/Europe/Dublin diff --git a/wakatime/packages/pytz/zoneinfo/Europe/Gibraltar b/wakatime/packages/py2/pytz/zoneinfo/Europe/Gibraltar similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Europe/Gibraltar rename to wakatime/packages/py2/pytz/zoneinfo/Europe/Gibraltar diff --git a/wakatime/packages/pytz/zoneinfo/Europe/Guernsey b/wakatime/packages/py2/pytz/zoneinfo/Europe/Guernsey similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Europe/Guernsey rename to wakatime/packages/py2/pytz/zoneinfo/Europe/Guernsey diff --git a/wakatime/packages/pytz/zoneinfo/Europe/Helsinki b/wakatime/packages/py2/pytz/zoneinfo/Europe/Helsinki similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Europe/Helsinki rename to wakatime/packages/py2/pytz/zoneinfo/Europe/Helsinki diff --git a/wakatime/packages/pytz/zoneinfo/Europe/Isle_of_Man b/wakatime/packages/py2/pytz/zoneinfo/Europe/Isle_of_Man similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Europe/Isle_of_Man rename to wakatime/packages/py2/pytz/zoneinfo/Europe/Isle_of_Man diff --git a/wakatime/packages/pytz/zoneinfo/Europe/Istanbul b/wakatime/packages/py2/pytz/zoneinfo/Europe/Istanbul similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Europe/Istanbul rename to wakatime/packages/py2/pytz/zoneinfo/Europe/Istanbul diff --git a/wakatime/packages/pytz/zoneinfo/Europe/Jersey b/wakatime/packages/py2/pytz/zoneinfo/Europe/Jersey similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Europe/Jersey rename to wakatime/packages/py2/pytz/zoneinfo/Europe/Jersey diff --git a/wakatime/packages/pytz/zoneinfo/Europe/Kaliningrad b/wakatime/packages/py2/pytz/zoneinfo/Europe/Kaliningrad similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Europe/Kaliningrad rename to wakatime/packages/py2/pytz/zoneinfo/Europe/Kaliningrad diff --git a/wakatime/packages/pytz/zoneinfo/Europe/Kiev b/wakatime/packages/py2/pytz/zoneinfo/Europe/Kiev similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Europe/Kiev rename to wakatime/packages/py2/pytz/zoneinfo/Europe/Kiev diff --git a/wakatime/packages/pytz/zoneinfo/Europe/Lisbon b/wakatime/packages/py2/pytz/zoneinfo/Europe/Lisbon similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Europe/Lisbon rename to wakatime/packages/py2/pytz/zoneinfo/Europe/Lisbon diff --git a/wakatime/packages/pytz/zoneinfo/Europe/Ljubljana b/wakatime/packages/py2/pytz/zoneinfo/Europe/Ljubljana similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Europe/Ljubljana rename to wakatime/packages/py2/pytz/zoneinfo/Europe/Ljubljana diff --git a/wakatime/packages/pytz/zoneinfo/Europe/London b/wakatime/packages/py2/pytz/zoneinfo/Europe/London similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Europe/London rename to wakatime/packages/py2/pytz/zoneinfo/Europe/London diff --git a/wakatime/packages/pytz/zoneinfo/Europe/Luxembourg b/wakatime/packages/py2/pytz/zoneinfo/Europe/Luxembourg similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Europe/Luxembourg rename to wakatime/packages/py2/pytz/zoneinfo/Europe/Luxembourg diff --git a/wakatime/packages/pytz/zoneinfo/Europe/Madrid b/wakatime/packages/py2/pytz/zoneinfo/Europe/Madrid similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Europe/Madrid rename to wakatime/packages/py2/pytz/zoneinfo/Europe/Madrid diff --git a/wakatime/packages/pytz/zoneinfo/Europe/Malta b/wakatime/packages/py2/pytz/zoneinfo/Europe/Malta similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Europe/Malta rename to wakatime/packages/py2/pytz/zoneinfo/Europe/Malta diff --git a/wakatime/packages/pytz/zoneinfo/Europe/Mariehamn b/wakatime/packages/py2/pytz/zoneinfo/Europe/Mariehamn similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Europe/Mariehamn rename to wakatime/packages/py2/pytz/zoneinfo/Europe/Mariehamn diff --git a/wakatime/packages/pytz/zoneinfo/Europe/Minsk b/wakatime/packages/py2/pytz/zoneinfo/Europe/Minsk similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Europe/Minsk rename to wakatime/packages/py2/pytz/zoneinfo/Europe/Minsk diff --git a/wakatime/packages/pytz/zoneinfo/Europe/Monaco b/wakatime/packages/py2/pytz/zoneinfo/Europe/Monaco similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Europe/Monaco rename to wakatime/packages/py2/pytz/zoneinfo/Europe/Monaco diff --git a/wakatime/packages/pytz/zoneinfo/Europe/Moscow b/wakatime/packages/py2/pytz/zoneinfo/Europe/Moscow similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Europe/Moscow rename to wakatime/packages/py2/pytz/zoneinfo/Europe/Moscow diff --git a/wakatime/packages/pytz/zoneinfo/Europe/Nicosia b/wakatime/packages/py2/pytz/zoneinfo/Europe/Nicosia similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Europe/Nicosia rename to wakatime/packages/py2/pytz/zoneinfo/Europe/Nicosia diff --git a/wakatime/packages/pytz/zoneinfo/Europe/Oslo b/wakatime/packages/py2/pytz/zoneinfo/Europe/Oslo similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Europe/Oslo rename to wakatime/packages/py2/pytz/zoneinfo/Europe/Oslo diff --git a/wakatime/packages/pytz/zoneinfo/Europe/Paris b/wakatime/packages/py2/pytz/zoneinfo/Europe/Paris similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Europe/Paris rename to wakatime/packages/py2/pytz/zoneinfo/Europe/Paris diff --git a/wakatime/packages/pytz/zoneinfo/Europe/Podgorica b/wakatime/packages/py2/pytz/zoneinfo/Europe/Podgorica similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Europe/Podgorica rename to wakatime/packages/py2/pytz/zoneinfo/Europe/Podgorica diff --git a/wakatime/packages/pytz/zoneinfo/Europe/Prague b/wakatime/packages/py2/pytz/zoneinfo/Europe/Prague similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Europe/Prague rename to wakatime/packages/py2/pytz/zoneinfo/Europe/Prague diff --git a/wakatime/packages/pytz/zoneinfo/Europe/Riga b/wakatime/packages/py2/pytz/zoneinfo/Europe/Riga similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Europe/Riga rename to wakatime/packages/py2/pytz/zoneinfo/Europe/Riga diff --git a/wakatime/packages/pytz/zoneinfo/Europe/Rome b/wakatime/packages/py2/pytz/zoneinfo/Europe/Rome similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Europe/Rome rename to wakatime/packages/py2/pytz/zoneinfo/Europe/Rome diff --git a/wakatime/packages/pytz/zoneinfo/Europe/Samara b/wakatime/packages/py2/pytz/zoneinfo/Europe/Samara similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Europe/Samara rename to wakatime/packages/py2/pytz/zoneinfo/Europe/Samara diff --git a/wakatime/packages/pytz/zoneinfo/Europe/San_Marino b/wakatime/packages/py2/pytz/zoneinfo/Europe/San_Marino similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Europe/San_Marino rename to wakatime/packages/py2/pytz/zoneinfo/Europe/San_Marino diff --git a/wakatime/packages/pytz/zoneinfo/Europe/Sarajevo b/wakatime/packages/py2/pytz/zoneinfo/Europe/Sarajevo similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Europe/Sarajevo rename to wakatime/packages/py2/pytz/zoneinfo/Europe/Sarajevo diff --git a/wakatime/packages/pytz/zoneinfo/Europe/Simferopol b/wakatime/packages/py2/pytz/zoneinfo/Europe/Simferopol similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Europe/Simferopol rename to wakatime/packages/py2/pytz/zoneinfo/Europe/Simferopol diff --git a/wakatime/packages/pytz/zoneinfo/Europe/Skopje b/wakatime/packages/py2/pytz/zoneinfo/Europe/Skopje similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Europe/Skopje rename to wakatime/packages/py2/pytz/zoneinfo/Europe/Skopje diff --git a/wakatime/packages/pytz/zoneinfo/Europe/Sofia b/wakatime/packages/py2/pytz/zoneinfo/Europe/Sofia similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Europe/Sofia rename to wakatime/packages/py2/pytz/zoneinfo/Europe/Sofia diff --git a/wakatime/packages/pytz/zoneinfo/Europe/Stockholm b/wakatime/packages/py2/pytz/zoneinfo/Europe/Stockholm similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Europe/Stockholm rename to wakatime/packages/py2/pytz/zoneinfo/Europe/Stockholm diff --git a/wakatime/packages/pytz/zoneinfo/Europe/Tallinn b/wakatime/packages/py2/pytz/zoneinfo/Europe/Tallinn similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Europe/Tallinn rename to wakatime/packages/py2/pytz/zoneinfo/Europe/Tallinn diff --git a/wakatime/packages/pytz/zoneinfo/Europe/Tirane b/wakatime/packages/py2/pytz/zoneinfo/Europe/Tirane similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Europe/Tirane rename to wakatime/packages/py2/pytz/zoneinfo/Europe/Tirane diff --git a/wakatime/packages/pytz/zoneinfo/Europe/Tiraspol b/wakatime/packages/py2/pytz/zoneinfo/Europe/Tiraspol similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Europe/Tiraspol rename to wakatime/packages/py2/pytz/zoneinfo/Europe/Tiraspol diff --git a/wakatime/packages/pytz/zoneinfo/Europe/Uzhgorod b/wakatime/packages/py2/pytz/zoneinfo/Europe/Uzhgorod similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Europe/Uzhgorod rename to wakatime/packages/py2/pytz/zoneinfo/Europe/Uzhgorod diff --git a/wakatime/packages/pytz/zoneinfo/Europe/Vaduz b/wakatime/packages/py2/pytz/zoneinfo/Europe/Vaduz similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Europe/Vaduz rename to wakatime/packages/py2/pytz/zoneinfo/Europe/Vaduz diff --git a/wakatime/packages/pytz/zoneinfo/Europe/Vatican b/wakatime/packages/py2/pytz/zoneinfo/Europe/Vatican similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Europe/Vatican rename to wakatime/packages/py2/pytz/zoneinfo/Europe/Vatican diff --git a/wakatime/packages/pytz/zoneinfo/Europe/Vienna b/wakatime/packages/py2/pytz/zoneinfo/Europe/Vienna similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Europe/Vienna rename to wakatime/packages/py2/pytz/zoneinfo/Europe/Vienna diff --git a/wakatime/packages/pytz/zoneinfo/Europe/Vilnius b/wakatime/packages/py2/pytz/zoneinfo/Europe/Vilnius similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Europe/Vilnius rename to wakatime/packages/py2/pytz/zoneinfo/Europe/Vilnius diff --git a/wakatime/packages/pytz/zoneinfo/Europe/Volgograd b/wakatime/packages/py2/pytz/zoneinfo/Europe/Volgograd similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Europe/Volgograd rename to wakatime/packages/py2/pytz/zoneinfo/Europe/Volgograd diff --git a/wakatime/packages/pytz/zoneinfo/Europe/Warsaw b/wakatime/packages/py2/pytz/zoneinfo/Europe/Warsaw similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Europe/Warsaw rename to wakatime/packages/py2/pytz/zoneinfo/Europe/Warsaw diff --git a/wakatime/packages/pytz/zoneinfo/Europe/Zagreb b/wakatime/packages/py2/pytz/zoneinfo/Europe/Zagreb similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Europe/Zagreb rename to wakatime/packages/py2/pytz/zoneinfo/Europe/Zagreb diff --git a/wakatime/packages/pytz/zoneinfo/Europe/Zaporozhye b/wakatime/packages/py2/pytz/zoneinfo/Europe/Zaporozhye similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Europe/Zaporozhye rename to wakatime/packages/py2/pytz/zoneinfo/Europe/Zaporozhye diff --git a/wakatime/packages/pytz/zoneinfo/Europe/Zurich b/wakatime/packages/py2/pytz/zoneinfo/Europe/Zurich similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Europe/Zurich rename to wakatime/packages/py2/pytz/zoneinfo/Europe/Zurich diff --git a/wakatime/packages/pytz/zoneinfo/Factory b/wakatime/packages/py2/pytz/zoneinfo/Factory similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Factory rename to wakatime/packages/py2/pytz/zoneinfo/Factory diff --git a/wakatime/packages/pytz/zoneinfo/GB b/wakatime/packages/py2/pytz/zoneinfo/GB similarity index 100% rename from wakatime/packages/pytz/zoneinfo/GB rename to wakatime/packages/py2/pytz/zoneinfo/GB diff --git a/wakatime/packages/pytz/zoneinfo/GB-Eire b/wakatime/packages/py2/pytz/zoneinfo/GB-Eire similarity index 100% rename from wakatime/packages/pytz/zoneinfo/GB-Eire rename to wakatime/packages/py2/pytz/zoneinfo/GB-Eire diff --git a/wakatime/packages/pytz/zoneinfo/GMT b/wakatime/packages/py2/pytz/zoneinfo/GMT similarity index 100% rename from wakatime/packages/pytz/zoneinfo/GMT rename to wakatime/packages/py2/pytz/zoneinfo/GMT diff --git a/wakatime/packages/pytz/zoneinfo/GMT+0 b/wakatime/packages/py2/pytz/zoneinfo/GMT+0 similarity index 100% rename from wakatime/packages/pytz/zoneinfo/GMT+0 rename to wakatime/packages/py2/pytz/zoneinfo/GMT+0 diff --git a/wakatime/packages/pytz/zoneinfo/GMT-0 b/wakatime/packages/py2/pytz/zoneinfo/GMT-0 similarity index 100% rename from wakatime/packages/pytz/zoneinfo/GMT-0 rename to wakatime/packages/py2/pytz/zoneinfo/GMT-0 diff --git a/wakatime/packages/pytz/zoneinfo/GMT0 b/wakatime/packages/py2/pytz/zoneinfo/GMT0 similarity index 100% rename from wakatime/packages/pytz/zoneinfo/GMT0 rename to wakatime/packages/py2/pytz/zoneinfo/GMT0 diff --git a/wakatime/packages/pytz/zoneinfo/Greenwich b/wakatime/packages/py2/pytz/zoneinfo/Greenwich similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Greenwich rename to wakatime/packages/py2/pytz/zoneinfo/Greenwich diff --git a/wakatime/packages/pytz/zoneinfo/HST b/wakatime/packages/py2/pytz/zoneinfo/HST similarity index 100% rename from wakatime/packages/pytz/zoneinfo/HST rename to wakatime/packages/py2/pytz/zoneinfo/HST diff --git a/wakatime/packages/pytz/zoneinfo/Hongkong b/wakatime/packages/py2/pytz/zoneinfo/Hongkong similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Hongkong rename to wakatime/packages/py2/pytz/zoneinfo/Hongkong diff --git a/wakatime/packages/pytz/zoneinfo/Iceland b/wakatime/packages/py2/pytz/zoneinfo/Iceland similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Iceland rename to wakatime/packages/py2/pytz/zoneinfo/Iceland diff --git a/wakatime/packages/pytz/zoneinfo/Indian/Antananarivo b/wakatime/packages/py2/pytz/zoneinfo/Indian/Antananarivo similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Indian/Antananarivo rename to wakatime/packages/py2/pytz/zoneinfo/Indian/Antananarivo diff --git a/wakatime/packages/pytz/zoneinfo/Indian/Chagos b/wakatime/packages/py2/pytz/zoneinfo/Indian/Chagos similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Indian/Chagos rename to wakatime/packages/py2/pytz/zoneinfo/Indian/Chagos diff --git a/wakatime/packages/pytz/zoneinfo/Indian/Christmas b/wakatime/packages/py2/pytz/zoneinfo/Indian/Christmas similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Indian/Christmas rename to wakatime/packages/py2/pytz/zoneinfo/Indian/Christmas diff --git a/wakatime/packages/pytz/zoneinfo/Indian/Cocos b/wakatime/packages/py2/pytz/zoneinfo/Indian/Cocos similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Indian/Cocos rename to wakatime/packages/py2/pytz/zoneinfo/Indian/Cocos diff --git a/wakatime/packages/pytz/zoneinfo/Indian/Comoro b/wakatime/packages/py2/pytz/zoneinfo/Indian/Comoro similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Indian/Comoro rename to wakatime/packages/py2/pytz/zoneinfo/Indian/Comoro diff --git a/wakatime/packages/pytz/zoneinfo/Indian/Kerguelen b/wakatime/packages/py2/pytz/zoneinfo/Indian/Kerguelen similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Indian/Kerguelen rename to wakatime/packages/py2/pytz/zoneinfo/Indian/Kerguelen diff --git a/wakatime/packages/pytz/zoneinfo/Indian/Mahe b/wakatime/packages/py2/pytz/zoneinfo/Indian/Mahe similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Indian/Mahe rename to wakatime/packages/py2/pytz/zoneinfo/Indian/Mahe diff --git a/wakatime/packages/pytz/zoneinfo/Indian/Maldives b/wakatime/packages/py2/pytz/zoneinfo/Indian/Maldives similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Indian/Maldives rename to wakatime/packages/py2/pytz/zoneinfo/Indian/Maldives diff --git a/wakatime/packages/pytz/zoneinfo/Indian/Mauritius b/wakatime/packages/py2/pytz/zoneinfo/Indian/Mauritius similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Indian/Mauritius rename to wakatime/packages/py2/pytz/zoneinfo/Indian/Mauritius diff --git a/wakatime/packages/pytz/zoneinfo/Indian/Mayotte b/wakatime/packages/py2/pytz/zoneinfo/Indian/Mayotte similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Indian/Mayotte rename to wakatime/packages/py2/pytz/zoneinfo/Indian/Mayotte diff --git a/wakatime/packages/pytz/zoneinfo/Indian/Reunion b/wakatime/packages/py2/pytz/zoneinfo/Indian/Reunion similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Indian/Reunion rename to wakatime/packages/py2/pytz/zoneinfo/Indian/Reunion diff --git a/wakatime/packages/pytz/zoneinfo/Iran b/wakatime/packages/py2/pytz/zoneinfo/Iran similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Iran rename to wakatime/packages/py2/pytz/zoneinfo/Iran diff --git a/wakatime/packages/pytz/zoneinfo/Israel b/wakatime/packages/py2/pytz/zoneinfo/Israel similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Israel rename to wakatime/packages/py2/pytz/zoneinfo/Israel diff --git a/wakatime/packages/pytz/zoneinfo/Jamaica b/wakatime/packages/py2/pytz/zoneinfo/Jamaica similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Jamaica rename to wakatime/packages/py2/pytz/zoneinfo/Jamaica diff --git a/wakatime/packages/pytz/zoneinfo/Japan b/wakatime/packages/py2/pytz/zoneinfo/Japan similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Japan rename to wakatime/packages/py2/pytz/zoneinfo/Japan diff --git a/wakatime/packages/pytz/zoneinfo/Kwajalein b/wakatime/packages/py2/pytz/zoneinfo/Kwajalein similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Kwajalein rename to wakatime/packages/py2/pytz/zoneinfo/Kwajalein diff --git a/wakatime/packages/pytz/zoneinfo/Libya b/wakatime/packages/py2/pytz/zoneinfo/Libya similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Libya rename to wakatime/packages/py2/pytz/zoneinfo/Libya diff --git a/wakatime/packages/pytz/zoneinfo/MET b/wakatime/packages/py2/pytz/zoneinfo/MET similarity index 100% rename from wakatime/packages/pytz/zoneinfo/MET rename to wakatime/packages/py2/pytz/zoneinfo/MET diff --git a/wakatime/packages/pytz/zoneinfo/MST b/wakatime/packages/py2/pytz/zoneinfo/MST similarity index 100% rename from wakatime/packages/pytz/zoneinfo/MST rename to wakatime/packages/py2/pytz/zoneinfo/MST diff --git a/wakatime/packages/pytz/zoneinfo/MST7MDT b/wakatime/packages/py2/pytz/zoneinfo/MST7MDT similarity index 100% rename from wakatime/packages/pytz/zoneinfo/MST7MDT rename to wakatime/packages/py2/pytz/zoneinfo/MST7MDT diff --git a/wakatime/packages/pytz/zoneinfo/Mexico/BajaNorte b/wakatime/packages/py2/pytz/zoneinfo/Mexico/BajaNorte similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Mexico/BajaNorte rename to wakatime/packages/py2/pytz/zoneinfo/Mexico/BajaNorte diff --git a/wakatime/packages/pytz/zoneinfo/Mexico/BajaSur b/wakatime/packages/py2/pytz/zoneinfo/Mexico/BajaSur similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Mexico/BajaSur rename to wakatime/packages/py2/pytz/zoneinfo/Mexico/BajaSur diff --git a/wakatime/packages/pytz/zoneinfo/Mexico/General b/wakatime/packages/py2/pytz/zoneinfo/Mexico/General similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Mexico/General rename to wakatime/packages/py2/pytz/zoneinfo/Mexico/General diff --git a/wakatime/packages/pytz/zoneinfo/Mideast/Riyadh87 b/wakatime/packages/py2/pytz/zoneinfo/Mideast/Riyadh87 similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Mideast/Riyadh87 rename to wakatime/packages/py2/pytz/zoneinfo/Mideast/Riyadh87 diff --git a/wakatime/packages/pytz/zoneinfo/Mideast/Riyadh88 b/wakatime/packages/py2/pytz/zoneinfo/Mideast/Riyadh88 similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Mideast/Riyadh88 rename to wakatime/packages/py2/pytz/zoneinfo/Mideast/Riyadh88 diff --git a/wakatime/packages/pytz/zoneinfo/Mideast/Riyadh89 b/wakatime/packages/py2/pytz/zoneinfo/Mideast/Riyadh89 similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Mideast/Riyadh89 rename to wakatime/packages/py2/pytz/zoneinfo/Mideast/Riyadh89 diff --git a/wakatime/packages/pytz/zoneinfo/NZ b/wakatime/packages/py2/pytz/zoneinfo/NZ similarity index 100% rename from wakatime/packages/pytz/zoneinfo/NZ rename to wakatime/packages/py2/pytz/zoneinfo/NZ diff --git a/wakatime/packages/pytz/zoneinfo/NZ-CHAT b/wakatime/packages/py2/pytz/zoneinfo/NZ-CHAT similarity index 100% rename from wakatime/packages/pytz/zoneinfo/NZ-CHAT rename to wakatime/packages/py2/pytz/zoneinfo/NZ-CHAT diff --git a/wakatime/packages/pytz/zoneinfo/Navajo b/wakatime/packages/py2/pytz/zoneinfo/Navajo similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Navajo rename to wakatime/packages/py2/pytz/zoneinfo/Navajo diff --git a/wakatime/packages/pytz/zoneinfo/PRC b/wakatime/packages/py2/pytz/zoneinfo/PRC similarity index 100% rename from wakatime/packages/pytz/zoneinfo/PRC rename to wakatime/packages/py2/pytz/zoneinfo/PRC diff --git a/wakatime/packages/pytz/zoneinfo/PST8PDT b/wakatime/packages/py2/pytz/zoneinfo/PST8PDT similarity index 100% rename from wakatime/packages/pytz/zoneinfo/PST8PDT rename to wakatime/packages/py2/pytz/zoneinfo/PST8PDT diff --git a/wakatime/packages/pytz/zoneinfo/Pacific/Apia b/wakatime/packages/py2/pytz/zoneinfo/Pacific/Apia similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Pacific/Apia rename to wakatime/packages/py2/pytz/zoneinfo/Pacific/Apia diff --git a/wakatime/packages/pytz/zoneinfo/Pacific/Auckland b/wakatime/packages/py2/pytz/zoneinfo/Pacific/Auckland similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Pacific/Auckland rename to wakatime/packages/py2/pytz/zoneinfo/Pacific/Auckland diff --git a/wakatime/packages/pytz/zoneinfo/Pacific/Chatham b/wakatime/packages/py2/pytz/zoneinfo/Pacific/Chatham similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Pacific/Chatham rename to wakatime/packages/py2/pytz/zoneinfo/Pacific/Chatham diff --git a/wakatime/packages/pytz/zoneinfo/Pacific/Chuuk b/wakatime/packages/py2/pytz/zoneinfo/Pacific/Chuuk similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Pacific/Chuuk rename to wakatime/packages/py2/pytz/zoneinfo/Pacific/Chuuk diff --git a/wakatime/packages/pytz/zoneinfo/Pacific/Easter b/wakatime/packages/py2/pytz/zoneinfo/Pacific/Easter similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Pacific/Easter rename to wakatime/packages/py2/pytz/zoneinfo/Pacific/Easter diff --git a/wakatime/packages/pytz/zoneinfo/Pacific/Efate b/wakatime/packages/py2/pytz/zoneinfo/Pacific/Efate similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Pacific/Efate rename to wakatime/packages/py2/pytz/zoneinfo/Pacific/Efate diff --git a/wakatime/packages/pytz/zoneinfo/Pacific/Enderbury b/wakatime/packages/py2/pytz/zoneinfo/Pacific/Enderbury similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Pacific/Enderbury rename to wakatime/packages/py2/pytz/zoneinfo/Pacific/Enderbury diff --git a/wakatime/packages/pytz/zoneinfo/Pacific/Fakaofo b/wakatime/packages/py2/pytz/zoneinfo/Pacific/Fakaofo similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Pacific/Fakaofo rename to wakatime/packages/py2/pytz/zoneinfo/Pacific/Fakaofo diff --git a/wakatime/packages/pytz/zoneinfo/Pacific/Fiji b/wakatime/packages/py2/pytz/zoneinfo/Pacific/Fiji similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Pacific/Fiji rename to wakatime/packages/py2/pytz/zoneinfo/Pacific/Fiji diff --git a/wakatime/packages/pytz/zoneinfo/Pacific/Funafuti b/wakatime/packages/py2/pytz/zoneinfo/Pacific/Funafuti similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Pacific/Funafuti rename to wakatime/packages/py2/pytz/zoneinfo/Pacific/Funafuti diff --git a/wakatime/packages/pytz/zoneinfo/Pacific/Galapagos b/wakatime/packages/py2/pytz/zoneinfo/Pacific/Galapagos similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Pacific/Galapagos rename to wakatime/packages/py2/pytz/zoneinfo/Pacific/Galapagos diff --git a/wakatime/packages/pytz/zoneinfo/Pacific/Gambier b/wakatime/packages/py2/pytz/zoneinfo/Pacific/Gambier similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Pacific/Gambier rename to wakatime/packages/py2/pytz/zoneinfo/Pacific/Gambier diff --git a/wakatime/packages/pytz/zoneinfo/Pacific/Guadalcanal b/wakatime/packages/py2/pytz/zoneinfo/Pacific/Guadalcanal similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Pacific/Guadalcanal rename to wakatime/packages/py2/pytz/zoneinfo/Pacific/Guadalcanal diff --git a/wakatime/packages/pytz/zoneinfo/Pacific/Guam b/wakatime/packages/py2/pytz/zoneinfo/Pacific/Guam similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Pacific/Guam rename to wakatime/packages/py2/pytz/zoneinfo/Pacific/Guam diff --git a/wakatime/packages/pytz/zoneinfo/Pacific/Honolulu b/wakatime/packages/py2/pytz/zoneinfo/Pacific/Honolulu similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Pacific/Honolulu rename to wakatime/packages/py2/pytz/zoneinfo/Pacific/Honolulu diff --git a/wakatime/packages/pytz/zoneinfo/Pacific/Johnston b/wakatime/packages/py2/pytz/zoneinfo/Pacific/Johnston similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Pacific/Johnston rename to wakatime/packages/py2/pytz/zoneinfo/Pacific/Johnston diff --git a/wakatime/packages/pytz/zoneinfo/Pacific/Kiritimati b/wakatime/packages/py2/pytz/zoneinfo/Pacific/Kiritimati similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Pacific/Kiritimati rename to wakatime/packages/py2/pytz/zoneinfo/Pacific/Kiritimati diff --git a/wakatime/packages/pytz/zoneinfo/Pacific/Kosrae b/wakatime/packages/py2/pytz/zoneinfo/Pacific/Kosrae similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Pacific/Kosrae rename to wakatime/packages/py2/pytz/zoneinfo/Pacific/Kosrae diff --git a/wakatime/packages/pytz/zoneinfo/Pacific/Kwajalein b/wakatime/packages/py2/pytz/zoneinfo/Pacific/Kwajalein similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Pacific/Kwajalein rename to wakatime/packages/py2/pytz/zoneinfo/Pacific/Kwajalein diff --git a/wakatime/packages/pytz/zoneinfo/Pacific/Majuro b/wakatime/packages/py2/pytz/zoneinfo/Pacific/Majuro similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Pacific/Majuro rename to wakatime/packages/py2/pytz/zoneinfo/Pacific/Majuro diff --git a/wakatime/packages/pytz/zoneinfo/Pacific/Marquesas b/wakatime/packages/py2/pytz/zoneinfo/Pacific/Marquesas similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Pacific/Marquesas rename to wakatime/packages/py2/pytz/zoneinfo/Pacific/Marquesas diff --git a/wakatime/packages/pytz/zoneinfo/Pacific/Midway b/wakatime/packages/py2/pytz/zoneinfo/Pacific/Midway similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Pacific/Midway rename to wakatime/packages/py2/pytz/zoneinfo/Pacific/Midway diff --git a/wakatime/packages/pytz/zoneinfo/Pacific/Nauru b/wakatime/packages/py2/pytz/zoneinfo/Pacific/Nauru similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Pacific/Nauru rename to wakatime/packages/py2/pytz/zoneinfo/Pacific/Nauru diff --git a/wakatime/packages/pytz/zoneinfo/Pacific/Niue b/wakatime/packages/py2/pytz/zoneinfo/Pacific/Niue similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Pacific/Niue rename to wakatime/packages/py2/pytz/zoneinfo/Pacific/Niue diff --git a/wakatime/packages/pytz/zoneinfo/Pacific/Norfolk b/wakatime/packages/py2/pytz/zoneinfo/Pacific/Norfolk similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Pacific/Norfolk rename to wakatime/packages/py2/pytz/zoneinfo/Pacific/Norfolk diff --git a/wakatime/packages/pytz/zoneinfo/Pacific/Noumea b/wakatime/packages/py2/pytz/zoneinfo/Pacific/Noumea similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Pacific/Noumea rename to wakatime/packages/py2/pytz/zoneinfo/Pacific/Noumea diff --git a/wakatime/packages/pytz/zoneinfo/Pacific/Pago_Pago b/wakatime/packages/py2/pytz/zoneinfo/Pacific/Pago_Pago similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Pacific/Pago_Pago rename to wakatime/packages/py2/pytz/zoneinfo/Pacific/Pago_Pago diff --git a/wakatime/packages/pytz/zoneinfo/Pacific/Palau b/wakatime/packages/py2/pytz/zoneinfo/Pacific/Palau similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Pacific/Palau rename to wakatime/packages/py2/pytz/zoneinfo/Pacific/Palau diff --git a/wakatime/packages/pytz/zoneinfo/Pacific/Pitcairn b/wakatime/packages/py2/pytz/zoneinfo/Pacific/Pitcairn similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Pacific/Pitcairn rename to wakatime/packages/py2/pytz/zoneinfo/Pacific/Pitcairn diff --git a/wakatime/packages/pytz/zoneinfo/Pacific/Pohnpei b/wakatime/packages/py2/pytz/zoneinfo/Pacific/Pohnpei similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Pacific/Pohnpei rename to wakatime/packages/py2/pytz/zoneinfo/Pacific/Pohnpei diff --git a/wakatime/packages/pytz/zoneinfo/Pacific/Ponape b/wakatime/packages/py2/pytz/zoneinfo/Pacific/Ponape similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Pacific/Ponape rename to wakatime/packages/py2/pytz/zoneinfo/Pacific/Ponape diff --git a/wakatime/packages/pytz/zoneinfo/Pacific/Port_Moresby b/wakatime/packages/py2/pytz/zoneinfo/Pacific/Port_Moresby similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Pacific/Port_Moresby rename to wakatime/packages/py2/pytz/zoneinfo/Pacific/Port_Moresby diff --git a/wakatime/packages/pytz/zoneinfo/Pacific/Rarotonga b/wakatime/packages/py2/pytz/zoneinfo/Pacific/Rarotonga similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Pacific/Rarotonga rename to wakatime/packages/py2/pytz/zoneinfo/Pacific/Rarotonga diff --git a/wakatime/packages/pytz/zoneinfo/Pacific/Saipan b/wakatime/packages/py2/pytz/zoneinfo/Pacific/Saipan similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Pacific/Saipan rename to wakatime/packages/py2/pytz/zoneinfo/Pacific/Saipan diff --git a/wakatime/packages/pytz/zoneinfo/Pacific/Samoa b/wakatime/packages/py2/pytz/zoneinfo/Pacific/Samoa similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Pacific/Samoa rename to wakatime/packages/py2/pytz/zoneinfo/Pacific/Samoa diff --git a/wakatime/packages/pytz/zoneinfo/Pacific/Tahiti b/wakatime/packages/py2/pytz/zoneinfo/Pacific/Tahiti similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Pacific/Tahiti rename to wakatime/packages/py2/pytz/zoneinfo/Pacific/Tahiti diff --git a/wakatime/packages/pytz/zoneinfo/Pacific/Tarawa b/wakatime/packages/py2/pytz/zoneinfo/Pacific/Tarawa similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Pacific/Tarawa rename to wakatime/packages/py2/pytz/zoneinfo/Pacific/Tarawa diff --git a/wakatime/packages/pytz/zoneinfo/Pacific/Tongatapu b/wakatime/packages/py2/pytz/zoneinfo/Pacific/Tongatapu similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Pacific/Tongatapu rename to wakatime/packages/py2/pytz/zoneinfo/Pacific/Tongatapu diff --git a/wakatime/packages/pytz/zoneinfo/Pacific/Truk b/wakatime/packages/py2/pytz/zoneinfo/Pacific/Truk similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Pacific/Truk rename to wakatime/packages/py2/pytz/zoneinfo/Pacific/Truk diff --git a/wakatime/packages/pytz/zoneinfo/Pacific/Wake b/wakatime/packages/py2/pytz/zoneinfo/Pacific/Wake similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Pacific/Wake rename to wakatime/packages/py2/pytz/zoneinfo/Pacific/Wake diff --git a/wakatime/packages/pytz/zoneinfo/Pacific/Wallis b/wakatime/packages/py2/pytz/zoneinfo/Pacific/Wallis similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Pacific/Wallis rename to wakatime/packages/py2/pytz/zoneinfo/Pacific/Wallis diff --git a/wakatime/packages/pytz/zoneinfo/Pacific/Yap b/wakatime/packages/py2/pytz/zoneinfo/Pacific/Yap similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Pacific/Yap rename to wakatime/packages/py2/pytz/zoneinfo/Pacific/Yap diff --git a/wakatime/packages/pytz/zoneinfo/Poland b/wakatime/packages/py2/pytz/zoneinfo/Poland similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Poland rename to wakatime/packages/py2/pytz/zoneinfo/Poland diff --git a/wakatime/packages/pytz/zoneinfo/Portugal b/wakatime/packages/py2/pytz/zoneinfo/Portugal similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Portugal rename to wakatime/packages/py2/pytz/zoneinfo/Portugal diff --git a/wakatime/packages/pytz/zoneinfo/ROC b/wakatime/packages/py2/pytz/zoneinfo/ROC similarity index 100% rename from wakatime/packages/pytz/zoneinfo/ROC rename to wakatime/packages/py2/pytz/zoneinfo/ROC diff --git a/wakatime/packages/pytz/zoneinfo/ROK b/wakatime/packages/py2/pytz/zoneinfo/ROK similarity index 100% rename from wakatime/packages/pytz/zoneinfo/ROK rename to wakatime/packages/py2/pytz/zoneinfo/ROK diff --git a/wakatime/packages/pytz/zoneinfo/Singapore b/wakatime/packages/py2/pytz/zoneinfo/Singapore similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Singapore rename to wakatime/packages/py2/pytz/zoneinfo/Singapore diff --git a/wakatime/packages/pytz/zoneinfo/Turkey b/wakatime/packages/py2/pytz/zoneinfo/Turkey similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Turkey rename to wakatime/packages/py2/pytz/zoneinfo/Turkey diff --git a/wakatime/packages/pytz/zoneinfo/UCT b/wakatime/packages/py2/pytz/zoneinfo/UCT similarity index 100% rename from wakatime/packages/pytz/zoneinfo/UCT rename to wakatime/packages/py2/pytz/zoneinfo/UCT diff --git a/wakatime/packages/pytz/zoneinfo/US/Alaska b/wakatime/packages/py2/pytz/zoneinfo/US/Alaska similarity index 100% rename from wakatime/packages/pytz/zoneinfo/US/Alaska rename to wakatime/packages/py2/pytz/zoneinfo/US/Alaska diff --git a/wakatime/packages/pytz/zoneinfo/US/Aleutian b/wakatime/packages/py2/pytz/zoneinfo/US/Aleutian similarity index 100% rename from wakatime/packages/pytz/zoneinfo/US/Aleutian rename to wakatime/packages/py2/pytz/zoneinfo/US/Aleutian diff --git a/wakatime/packages/pytz/zoneinfo/US/Arizona b/wakatime/packages/py2/pytz/zoneinfo/US/Arizona similarity index 100% rename from wakatime/packages/pytz/zoneinfo/US/Arizona rename to wakatime/packages/py2/pytz/zoneinfo/US/Arizona diff --git a/wakatime/packages/pytz/zoneinfo/US/Central b/wakatime/packages/py2/pytz/zoneinfo/US/Central similarity index 100% rename from wakatime/packages/pytz/zoneinfo/US/Central rename to wakatime/packages/py2/pytz/zoneinfo/US/Central diff --git a/wakatime/packages/pytz/zoneinfo/US/East-Indiana b/wakatime/packages/py2/pytz/zoneinfo/US/East-Indiana similarity index 100% rename from wakatime/packages/pytz/zoneinfo/US/East-Indiana rename to wakatime/packages/py2/pytz/zoneinfo/US/East-Indiana diff --git a/wakatime/packages/pytz/zoneinfo/US/Eastern b/wakatime/packages/py2/pytz/zoneinfo/US/Eastern similarity index 100% rename from wakatime/packages/pytz/zoneinfo/US/Eastern rename to wakatime/packages/py2/pytz/zoneinfo/US/Eastern diff --git a/wakatime/packages/pytz/zoneinfo/US/Hawaii b/wakatime/packages/py2/pytz/zoneinfo/US/Hawaii similarity index 100% rename from wakatime/packages/pytz/zoneinfo/US/Hawaii rename to wakatime/packages/py2/pytz/zoneinfo/US/Hawaii diff --git a/wakatime/packages/pytz/zoneinfo/US/Indiana-Starke b/wakatime/packages/py2/pytz/zoneinfo/US/Indiana-Starke similarity index 100% rename from wakatime/packages/pytz/zoneinfo/US/Indiana-Starke rename to wakatime/packages/py2/pytz/zoneinfo/US/Indiana-Starke diff --git a/wakatime/packages/pytz/zoneinfo/US/Michigan b/wakatime/packages/py2/pytz/zoneinfo/US/Michigan similarity index 100% rename from wakatime/packages/pytz/zoneinfo/US/Michigan rename to wakatime/packages/py2/pytz/zoneinfo/US/Michigan diff --git a/wakatime/packages/pytz/zoneinfo/US/Mountain b/wakatime/packages/py2/pytz/zoneinfo/US/Mountain similarity index 100% rename from wakatime/packages/pytz/zoneinfo/US/Mountain rename to wakatime/packages/py2/pytz/zoneinfo/US/Mountain diff --git a/wakatime/packages/pytz/zoneinfo/US/Pacific b/wakatime/packages/py2/pytz/zoneinfo/US/Pacific similarity index 100% rename from wakatime/packages/pytz/zoneinfo/US/Pacific rename to wakatime/packages/py2/pytz/zoneinfo/US/Pacific diff --git a/wakatime/packages/pytz/zoneinfo/US/Pacific-New b/wakatime/packages/py2/pytz/zoneinfo/US/Pacific-New similarity index 100% rename from wakatime/packages/pytz/zoneinfo/US/Pacific-New rename to wakatime/packages/py2/pytz/zoneinfo/US/Pacific-New diff --git a/wakatime/packages/pytz/zoneinfo/US/Samoa b/wakatime/packages/py2/pytz/zoneinfo/US/Samoa similarity index 100% rename from wakatime/packages/pytz/zoneinfo/US/Samoa rename to wakatime/packages/py2/pytz/zoneinfo/US/Samoa diff --git a/wakatime/packages/pytz/zoneinfo/UTC b/wakatime/packages/py2/pytz/zoneinfo/UTC similarity index 100% rename from wakatime/packages/pytz/zoneinfo/UTC rename to wakatime/packages/py2/pytz/zoneinfo/UTC diff --git a/wakatime/packages/pytz/zoneinfo/Universal b/wakatime/packages/py2/pytz/zoneinfo/Universal similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Universal rename to wakatime/packages/py2/pytz/zoneinfo/Universal diff --git a/wakatime/packages/pytz/zoneinfo/W-SU b/wakatime/packages/py2/pytz/zoneinfo/W-SU similarity index 100% rename from wakatime/packages/pytz/zoneinfo/W-SU rename to wakatime/packages/py2/pytz/zoneinfo/W-SU diff --git a/wakatime/packages/pytz/zoneinfo/WET b/wakatime/packages/py2/pytz/zoneinfo/WET similarity index 100% rename from wakatime/packages/pytz/zoneinfo/WET rename to wakatime/packages/py2/pytz/zoneinfo/WET diff --git a/wakatime/packages/pytz/zoneinfo/Zulu b/wakatime/packages/py2/pytz/zoneinfo/Zulu similarity index 100% rename from wakatime/packages/pytz/zoneinfo/Zulu rename to wakatime/packages/py2/pytz/zoneinfo/Zulu diff --git a/wakatime/packages/pytz/zoneinfo/iso3166.tab b/wakatime/packages/py2/pytz/zoneinfo/iso3166.tab similarity index 100% rename from wakatime/packages/pytz/zoneinfo/iso3166.tab rename to wakatime/packages/py2/pytz/zoneinfo/iso3166.tab diff --git a/wakatime/packages/pytz/zoneinfo/localtime b/wakatime/packages/py2/pytz/zoneinfo/localtime similarity index 100% rename from wakatime/packages/pytz/zoneinfo/localtime rename to wakatime/packages/py2/pytz/zoneinfo/localtime diff --git a/wakatime/packages/pytz/zoneinfo/posixrules b/wakatime/packages/py2/pytz/zoneinfo/posixrules similarity index 100% rename from wakatime/packages/pytz/zoneinfo/posixrules rename to wakatime/packages/py2/pytz/zoneinfo/posixrules diff --git a/wakatime/packages/pytz/zoneinfo/zone.tab b/wakatime/packages/py2/pytz/zoneinfo/zone.tab similarity index 100% rename from wakatime/packages/pytz/zoneinfo/zone.tab rename to wakatime/packages/py2/pytz/zoneinfo/zone.tab diff --git a/wakatime/packages/tzlocal/__init__.py b/wakatime/packages/py2/tzlocal/__init__.py old mode 100644 new mode 100755 similarity index 64% rename from wakatime/packages/tzlocal/__init__.py rename to wakatime/packages/py2/tzlocal/__init__.py index 24384ce..df7a66b --- a/wakatime/packages/tzlocal/__init__.py +++ b/wakatime/packages/py2/tzlocal/__init__.py @@ -1,6 +1,7 @@ import sys if sys.platform == 'win32': from tzlocal.win32 import get_localzone, reload_localzone +elif 'darwin' in sys.platform: + from tzlocal.darwin import get_localzone, reload_localzone else: from tzlocal.unix import get_localzone, reload_localzone - diff --git a/wakatime/packages/py2/tzlocal/darwin.py b/wakatime/packages/py2/tzlocal/darwin.py new file mode 100755 index 0000000..bedbbd1 --- /dev/null +++ b/wakatime/packages/py2/tzlocal/darwin.py @@ -0,0 +1,37 @@ +from __future__ import with_statement +import os +import pytz +import subprocess + +_cache_tz = None + + +def _get_localzone(): + pipe = subprocess.Popen( + "systemsetup -gettimezone", + shell=True, + stderr=subprocess.PIPE, + stdout=subprocess.PIPE + ) + tzname = pipe.stdout.read().replace(b'Time Zone: ', b'').strip() + + if not tzname or tzname not in pytz.all_timezones_set: + # link will be something like /usr/share/zoneinfo/America/Los_Angeles. + link = os.readlink("/etc/localtime") + tzname = link[link.rfind("zoneinfo/") + 9:] + return pytz.timezone(tzname) + + +def get_localzone(): + """Get the computers configured local timezone, if any.""" + global _cache_tz + if _cache_tz is None: + _cache_tz = _get_localzone() + return _cache_tz + + +def reload_localzone(): + """Reload the cached localzone. You need to call this if the timezone has changed.""" + global _cache_tz + _cache_tz = _get_localzone() + return _cache_tz diff --git a/wakatime/packages/tzlocal3/unix.py b/wakatime/packages/py2/tzlocal/unix.py old mode 100644 new mode 100755 similarity index 84% rename from wakatime/packages/tzlocal3/unix.py rename to wakatime/packages/py2/tzlocal/unix.py index 3418e62..f1eff1e --- a/wakatime/packages/tzlocal3/unix.py +++ b/wakatime/packages/py2/tzlocal/unix.py @@ -1,7 +1,7 @@ - +from __future__ import with_statement import os import re -import pytz3 as pytz +import pytz _cache_tz = None @@ -37,7 +37,10 @@ def _get_localzone(_root='/'): tzenv = os.environ.get('TZ') if tzenv: - return _tz_from_env(tzenv) + try: + return _tz_from_env(tzenv) + except pytz.UnknownTimeZoneError: + pass # Now look for distribution specific configuration files # that contain the timezone name. @@ -87,6 +90,20 @@ def _get_localzone(_root='/'): # We found a timezone return pytz.timezone(etctz.replace(' ', '_')) + # systemd distributions use symlinks that include the zone name, + # see manpage of localtime(5) and timedatectl(1) + tzpath = os.path.join(_root, 'etc/localtime') + if os.path.exists(tzpath) and os.path.islink(tzpath): + tzpath = os.path.realpath(tzpath) + start = tzpath.find("/")+1 + while start is not 0: + tzpath = tzpath[start:] + try: + return pytz.timezone(tzpath) + except pytz.UnknownTimeZoneError: + pass + start = tzpath.find("/")+1 + # No explicit setting existed. Use localtime for filename in ('etc/localtime', 'usr/local/etc/localtime'): tzpath = os.path.join(_root, filename) @@ -110,4 +127,3 @@ def reload_localzone(): global _cache_tz _cache_tz = _get_localzone() return _cache_tz - diff --git a/wakatime/packages/tzlocal3/win32.py b/wakatime/packages/py2/tzlocal/win32.py old mode 100644 new mode 100755 similarity index 85% rename from wakatime/packages/tzlocal3/win32.py rename to wakatime/packages/py2/tzlocal/win32.py index a40c96d..63445cd --- a/wakatime/packages/tzlocal3/win32.py +++ b/wakatime/packages/py2/tzlocal/win32.py @@ -1,10 +1,10 @@ try: - import winreg as winreg + import _winreg as winreg except ImportError: import winreg -from tzlocal.windows_tz import tz_names -import pytz3 as pytz +from tzlocal.windows_tz import win_tz +import pytz _cache_tz = None @@ -53,9 +53,14 @@ def get_localzone_name(): sub = winreg.OpenKey(tzkey, subkey) data = valuestodict(sub) sub.Close() - if data['Std'] == tzwin: - tzkeyname = subkey - break + try: + if data['Std'] == tzwin: + tzkeyname = subkey + break + except KeyError: + # This timezone didn't have proper configuration. + # Ignore it. + pass tzkey.Close() handle.Close() @@ -63,11 +68,11 @@ def get_localzone_name(): if tzkeyname is None: raise LookupError('Can not find Windows timezone configuration') - timezone = tz_names.get(tzkeyname) + timezone = win_tz.get(tzkeyname) if timezone is None: # Nope, that didn't work. Try adding "Standard Time", # it seems to work a lot of times: - timezone = tz_names.get(tzkeyname + " Standard Time") + timezone = win_tz.get(tzkeyname + " Standard Time") # Return what we have. if timezone is None: diff --git a/wakatime/packages/py2/tzlocal/windows_tz.py b/wakatime/packages/py2/tzlocal/windows_tz.py new file mode 100755 index 0000000..f8afca2 --- /dev/null +++ b/wakatime/packages/py2/tzlocal/windows_tz.py @@ -0,0 +1,548 @@ +# This file is autogenerated by the get_windows_info.py script +# Do not edit. +win_tz = {'AUS Central Standard Time': 'Australia/Darwin', + 'AUS Eastern Standard Time': 'Australia/Sydney', + 'Afghanistan Standard Time': 'Asia/Kabul', + 'Alaskan Standard Time': 'America/Anchorage', + 'Arab Standard Time': 'Asia/Riyadh', + 'Arabian Standard Time': 'Asia/Dubai', + 'Arabic Standard Time': 'Asia/Baghdad', + 'Argentina Standard Time': 'America/Buenos_Aires', + 'Atlantic Standard Time': 'America/Halifax', + 'Azerbaijan Standard Time': 'Asia/Baku', + 'Azores Standard Time': 'Atlantic/Azores', + 'Bahia Standard Time': 'America/Bahia', + 'Bangladesh Standard Time': 'Asia/Dhaka', + 'Belarus Standard Time': 'Europe/Minsk', + 'Canada Central Standard Time': 'America/Regina', + 'Cape Verde Standard Time': 'Atlantic/Cape_Verde', + 'Caucasus Standard Time': 'Asia/Yerevan', + 'Cen. Australia Standard Time': 'Australia/Adelaide', + 'Central America Standard Time': 'America/Guatemala', + 'Central Asia Standard Time': 'Asia/Almaty', + 'Central Brazilian Standard Time': 'America/Cuiaba', + 'Central Europe Standard Time': 'Europe/Budapest', + 'Central European Standard Time': 'Europe/Warsaw', + 'Central Pacific Standard Time': 'Pacific/Guadalcanal', + 'Central Standard Time': 'America/Chicago', + 'Central Standard Time (Mexico)': 'America/Mexico_City', + 'China Standard Time': 'Asia/Shanghai', + 'Dateline Standard Time': 'Etc/GMT+12', + 'E. Africa Standard Time': 'Africa/Nairobi', + 'E. Australia Standard Time': 'Australia/Brisbane', + 'E. Europe Standard Time': 'Europe/Chisinau', + 'E. South America Standard Time': 'America/Sao_Paulo', + 'Eastern Standard Time': 'America/New_York', + 'Eastern Standard Time (Mexico)': 'America/Cancun', + 'Egypt Standard Time': 'Africa/Cairo', + 'Ekaterinburg Standard Time': 'Asia/Yekaterinburg', + 'FLE Standard Time': 'Europe/Kiev', + 'Fiji Standard Time': 'Pacific/Fiji', + 'GMT Standard Time': 'Europe/London', + 'GTB Standard Time': 'Europe/Bucharest', + 'Georgian Standard Time': 'Asia/Tbilisi', + 'Greenland Standard Time': 'America/Godthab', + 'Greenwich Standard Time': 'Atlantic/Reykjavik', + 'Hawaiian Standard Time': 'Pacific/Honolulu', + 'India Standard Time': 'Asia/Calcutta', + 'Iran Standard Time': 'Asia/Tehran', + 'Israel Standard Time': 'Asia/Jerusalem', + 'Jordan Standard Time': 'Asia/Amman', + 'Kaliningrad Standard Time': 'Europe/Kaliningrad', + 'Korea Standard Time': 'Asia/Seoul', + 'Libya Standard Time': 'Africa/Tripoli', + 'Line Islands Standard Time': 'Pacific/Kiritimati', + 'Magadan Standard Time': 'Asia/Magadan', + 'Mauritius Standard Time': 'Indian/Mauritius', + 'Middle East Standard Time': 'Asia/Beirut', + 'Montevideo Standard Time': 'America/Montevideo', + 'Morocco Standard Time': 'Africa/Casablanca', + 'Mountain Standard Time': 'America/Denver', + 'Mountain Standard Time (Mexico)': 'America/Chihuahua', + 'Myanmar Standard Time': 'Asia/Rangoon', + 'N. Central Asia Standard Time': 'Asia/Novosibirsk', + 'Namibia Standard Time': 'Africa/Windhoek', + 'Nepal Standard Time': 'Asia/Katmandu', + 'New Zealand Standard Time': 'Pacific/Auckland', + 'Newfoundland Standard Time': 'America/St_Johns', + 'North Asia East Standard Time': 'Asia/Irkutsk', + 'North Asia Standard Time': 'Asia/Krasnoyarsk', + 'North Korea Standard Time': 'Asia/Pyongyang', + 'Pacific SA Standard Time': 'America/Santiago', + 'Pacific Standard Time': 'America/Los_Angeles', + 'Pakistan Standard Time': 'Asia/Karachi', + 'Paraguay Standard Time': 'America/Asuncion', + 'Romance Standard Time': 'Europe/Paris', + 'Russia Time Zone 10': 'Asia/Srednekolymsk', + 'Russia Time Zone 11': 'Asia/Kamchatka', + 'Russia Time Zone 3': 'Europe/Samara', + 'Russian Standard Time': 'Europe/Moscow', + 'SA Eastern Standard Time': 'America/Cayenne', + 'SA Pacific Standard Time': 'America/Bogota', + 'SA Western Standard Time': 'America/La_Paz', + 'SE Asia Standard Time': 'Asia/Bangkok', + 'Samoa Standard Time': 'Pacific/Apia', + 'Singapore Standard Time': 'Asia/Singapore', + 'South Africa Standard Time': 'Africa/Johannesburg', + 'Sri Lanka Standard Time': 'Asia/Colombo', + 'Syria Standard Time': 'Asia/Damascus', + 'Taipei Standard Time': 'Asia/Taipei', + 'Tasmania Standard Time': 'Australia/Hobart', + 'Tokyo Standard Time': 'Asia/Tokyo', + 'Tonga Standard Time': 'Pacific/Tongatapu', + 'Turkey Standard Time': 'Europe/Istanbul', + 'US Eastern Standard Time': 'America/Indianapolis', + 'US Mountain Standard Time': 'America/Phoenix', + 'UTC': 'Etc/GMT', + 'UTC+12': 'Etc/GMT-12', + 'UTC-02': 'Etc/GMT+2', + 'UTC-11': 'Etc/GMT+11', + 'Ulaanbaatar Standard Time': 'Asia/Ulaanbaatar', + 'Venezuela Standard Time': 'America/Caracas', + 'Vladivostok Standard Time': 'Asia/Vladivostok', + 'W. Australia Standard Time': 'Australia/Perth', + 'W. Central Africa Standard Time': 'Africa/Lagos', + 'W. Europe Standard Time': 'Europe/Berlin', + 'West Asia Standard Time': 'Asia/Tashkent', + 'West Pacific Standard Time': 'Pacific/Port_Moresby', + 'Yakutsk Standard Time': 'Asia/Yakutsk'} + +# Old name for the win_tz variable: +tz_names = win_tz + +tz_win = {'Africa/Abidjan': 'Greenwich Standard Time', + 'Africa/Accra': 'Greenwich Standard Time', + 'Africa/Addis_Ababa': 'E. Africa Standard Time', + 'Africa/Algiers': 'W. Central Africa Standard Time', + 'Africa/Asmera': 'E. Africa Standard Time', + 'Africa/Bamako': 'Greenwich Standard Time', + 'Africa/Bangui': 'W. Central Africa Standard Time', + 'Africa/Banjul': 'Greenwich Standard Time', + 'Africa/Bissau': 'Greenwich Standard Time', + 'Africa/Blantyre': 'South Africa Standard Time', + 'Africa/Brazzaville': 'W. Central Africa Standard Time', + 'Africa/Bujumbura': 'South Africa Standard Time', + 'Africa/Cairo': 'Egypt Standard Time', + 'Africa/Casablanca': 'Morocco Standard Time', + 'Africa/Ceuta': 'Romance Standard Time', + 'Africa/Conakry': 'Greenwich Standard Time', + 'Africa/Dakar': 'Greenwich Standard Time', + 'Africa/Dar_es_Salaam': 'E. Africa Standard Time', + 'Africa/Djibouti': 'E. Africa Standard Time', + 'Africa/Douala': 'W. Central Africa Standard Time', + 'Africa/El_Aaiun': 'Morocco Standard Time', + 'Africa/Freetown': 'Greenwich Standard Time', + 'Africa/Gaborone': 'South Africa Standard Time', + 'Africa/Harare': 'South Africa Standard Time', + 'Africa/Johannesburg': 'South Africa Standard Time', + 'Africa/Juba': 'E. Africa Standard Time', + 'Africa/Kampala': 'E. Africa Standard Time', + 'Africa/Khartoum': 'E. Africa Standard Time', + 'Africa/Kigali': 'South Africa Standard Time', + 'Africa/Kinshasa': 'W. Central Africa Standard Time', + 'Africa/Lagos': 'W. Central Africa Standard Time', + 'Africa/Libreville': 'W. Central Africa Standard Time', + 'Africa/Lome': 'Greenwich Standard Time', + 'Africa/Luanda': 'W. Central Africa Standard Time', + 'Africa/Lubumbashi': 'South Africa Standard Time', + 'Africa/Lusaka': 'South Africa Standard Time', + 'Africa/Malabo': 'W. Central Africa Standard Time', + 'Africa/Maputo': 'South Africa Standard Time', + 'Africa/Maseru': 'South Africa Standard Time', + 'Africa/Mbabane': 'South Africa Standard Time', + 'Africa/Mogadishu': 'E. Africa Standard Time', + 'Africa/Monrovia': 'Greenwich Standard Time', + 'Africa/Nairobi': 'E. Africa Standard Time', + 'Africa/Ndjamena': 'W. Central Africa Standard Time', + 'Africa/Niamey': 'W. Central Africa Standard Time', + 'Africa/Nouakchott': 'Greenwich Standard Time', + 'Africa/Ouagadougou': 'Greenwich Standard Time', + 'Africa/Porto-Novo': 'W. Central Africa Standard Time', + 'Africa/Sao_Tome': 'Greenwich Standard Time', + 'Africa/Tripoli': 'Libya Standard Time', + 'Africa/Tunis': 'W. Central Africa Standard Time', + 'Africa/Windhoek': 'Namibia Standard Time', + 'America/Anchorage': 'Alaskan Standard Time', + 'America/Anguilla': 'SA Western Standard Time', + 'America/Antigua': 'SA Western Standard Time', + 'America/Araguaina': 'SA Eastern Standard Time', + 'America/Argentina/La_Rioja': 'Argentina Standard Time', + 'America/Argentina/Rio_Gallegos': 'Argentina Standard Time', + 'America/Argentina/Salta': 'Argentina Standard Time', + 'America/Argentina/San_Juan': 'Argentina Standard Time', + 'America/Argentina/San_Luis': 'Argentina Standard Time', + 'America/Argentina/Tucuman': 'Argentina Standard Time', + 'America/Argentina/Ushuaia': 'Argentina Standard Time', + 'America/Aruba': 'SA Western Standard Time', + 'America/Asuncion': 'Paraguay Standard Time', + 'America/Bahia': 'Bahia Standard Time', + 'America/Bahia_Banderas': 'Central Standard Time (Mexico)', + 'America/Barbados': 'SA Western Standard Time', + 'America/Belem': 'SA Eastern Standard Time', + 'America/Belize': 'Central America Standard Time', + 'America/Blanc-Sablon': 'SA Western Standard Time', + 'America/Boa_Vista': 'SA Western Standard Time', + 'America/Bogota': 'SA Pacific Standard Time', + 'America/Boise': 'Mountain Standard Time', + 'America/Buenos_Aires': 'Argentina Standard Time', + 'America/Cambridge_Bay': 'Mountain Standard Time', + 'America/Campo_Grande': 'Central Brazilian Standard Time', + 'America/Cancun': 'Eastern Standard Time (Mexico)', + 'America/Caracas': 'Venezuela Standard Time', + 'America/Catamarca': 'Argentina Standard Time', + 'America/Cayenne': 'SA Eastern Standard Time', + 'America/Cayman': 'SA Pacific Standard Time', + 'America/Chicago': 'Central Standard Time', + 'America/Chihuahua': 'Mountain Standard Time (Mexico)', + 'America/Coral_Harbour': 'SA Pacific Standard Time', + 'America/Cordoba': 'Argentina Standard Time', + 'America/Costa_Rica': 'Central America Standard Time', + 'America/Creston': 'US Mountain Standard Time', + 'America/Cuiaba': 'Central Brazilian Standard Time', + 'America/Curacao': 'SA Western Standard Time', + 'America/Danmarkshavn': 'UTC', + 'America/Dawson': 'Pacific Standard Time', + 'America/Dawson_Creek': 'US Mountain Standard Time', + 'America/Denver': 'Mountain Standard Time', + 'America/Detroit': 'Eastern Standard Time', + 'America/Dominica': 'SA Western Standard Time', + 'America/Edmonton': 'Mountain Standard Time', + 'America/Eirunepe': 'SA Pacific Standard Time', + 'America/El_Salvador': 'Central America Standard Time', + 'America/Fort_Nelson': 'US Mountain Standard Time', + 'America/Fortaleza': 'SA Eastern Standard Time', + 'America/Glace_Bay': 'Atlantic Standard Time', + 'America/Godthab': 'Greenland Standard Time', + 'America/Goose_Bay': 'Atlantic Standard Time', + 'America/Grand_Turk': 'SA Western Standard Time', + 'America/Grenada': 'SA Western Standard Time', + 'America/Guadeloupe': 'SA Western Standard Time', + 'America/Guatemala': 'Central America Standard Time', + 'America/Guayaquil': 'SA Pacific Standard Time', + 'America/Guyana': 'SA Western Standard Time', + 'America/Halifax': 'Atlantic Standard Time', + 'America/Havana': 'Eastern Standard Time', + 'America/Hermosillo': 'US Mountain Standard Time', + 'America/Indiana/Knox': 'Central Standard Time', + 'America/Indiana/Marengo': 'US Eastern Standard Time', + 'America/Indiana/Petersburg': 'Eastern Standard Time', + 'America/Indiana/Tell_City': 'Central Standard Time', + 'America/Indiana/Vevay': 'US Eastern Standard Time', + 'America/Indiana/Vincennes': 'Eastern Standard Time', + 'America/Indiana/Winamac': 'Eastern Standard Time', + 'America/Indianapolis': 'US Eastern Standard Time', + 'America/Inuvik': 'Mountain Standard Time', + 'America/Iqaluit': 'Eastern Standard Time', + 'America/Jamaica': 'SA Pacific Standard Time', + 'America/Jujuy': 'Argentina Standard Time', + 'America/Juneau': 'Alaskan Standard Time', + 'America/Kentucky/Monticello': 'Eastern Standard Time', + 'America/Kralendijk': 'SA Western Standard Time', + 'America/La_Paz': 'SA Western Standard Time', + 'America/Lima': 'SA Pacific Standard Time', + 'America/Los_Angeles': 'Pacific Standard Time', + 'America/Louisville': 'Eastern Standard Time', + 'America/Lower_Princes': 'SA Western Standard Time', + 'America/Maceio': 'SA Eastern Standard Time', + 'America/Managua': 'Central America Standard Time', + 'America/Manaus': 'SA Western Standard Time', + 'America/Marigot': 'SA Western Standard Time', + 'America/Martinique': 'SA Western Standard Time', + 'America/Matamoros': 'Central Standard Time', + 'America/Mazatlan': 'Mountain Standard Time (Mexico)', + 'America/Mendoza': 'Argentina Standard Time', + 'America/Menominee': 'Central Standard Time', + 'America/Merida': 'Central Standard Time (Mexico)', + 'America/Metlakatla': 'Alaskan Standard Time', + 'America/Mexico_City': 'Central Standard Time (Mexico)', + 'America/Moncton': 'Atlantic Standard Time', + 'America/Monterrey': 'Central Standard Time (Mexico)', + 'America/Montevideo': 'Montevideo Standard Time', + 'America/Montreal': 'Eastern Standard Time', + 'America/Montserrat': 'SA Western Standard Time', + 'America/Nassau': 'Eastern Standard Time', + 'America/New_York': 'Eastern Standard Time', + 'America/Nipigon': 'Eastern Standard Time', + 'America/Nome': 'Alaskan Standard Time', + 'America/Noronha': 'UTC-02', + 'America/North_Dakota/Beulah': 'Central Standard Time', + 'America/North_Dakota/Center': 'Central Standard Time', + 'America/North_Dakota/New_Salem': 'Central Standard Time', + 'America/Ojinaga': 'Mountain Standard Time', + 'America/Panama': 'SA Pacific Standard Time', + 'America/Pangnirtung': 'Eastern Standard Time', + 'America/Paramaribo': 'SA Eastern Standard Time', + 'America/Phoenix': 'US Mountain Standard Time', + 'America/Port-au-Prince': 'Eastern Standard Time', + 'America/Port_of_Spain': 'SA Western Standard Time', + 'America/Porto_Velho': 'SA Western Standard Time', + 'America/Puerto_Rico': 'SA Western Standard Time', + 'America/Rainy_River': 'Central Standard Time', + 'America/Rankin_Inlet': 'Central Standard Time', + 'America/Recife': 'SA Eastern Standard Time', + 'America/Regina': 'Canada Central Standard Time', + 'America/Resolute': 'Central Standard Time', + 'America/Rio_Branco': 'SA Pacific Standard Time', + 'America/Santa_Isabel': 'Pacific Standard Time', + 'America/Santarem': 'SA Eastern Standard Time', + 'America/Santiago': 'Pacific SA Standard Time', + 'America/Santo_Domingo': 'SA Western Standard Time', + 'America/Sao_Paulo': 'E. South America Standard Time', + 'America/Scoresbysund': 'Azores Standard Time', + 'America/Sitka': 'Alaskan Standard Time', + 'America/St_Barthelemy': 'SA Western Standard Time', + 'America/St_Johns': 'Newfoundland Standard Time', + 'America/St_Kitts': 'SA Western Standard Time', + 'America/St_Lucia': 'SA Western Standard Time', + 'America/St_Thomas': 'SA Western Standard Time', + 'America/St_Vincent': 'SA Western Standard Time', + 'America/Swift_Current': 'Canada Central Standard Time', + 'America/Tegucigalpa': 'Central America Standard Time', + 'America/Thule': 'Atlantic Standard Time', + 'America/Thunder_Bay': 'Eastern Standard Time', + 'America/Tijuana': 'Pacific Standard Time', + 'America/Toronto': 'Eastern Standard Time', + 'America/Tortola': 'SA Western Standard Time', + 'America/Vancouver': 'Pacific Standard Time', + 'America/Whitehorse': 'Pacific Standard Time', + 'America/Winnipeg': 'Central Standard Time', + 'America/Yakutat': 'Alaskan Standard Time', + 'America/Yellowknife': 'Mountain Standard Time', + 'Antarctica/Casey': 'W. Australia Standard Time', + 'Antarctica/Davis': 'SE Asia Standard Time', + 'Antarctica/DumontDUrville': 'West Pacific Standard Time', + 'Antarctica/Macquarie': 'Central Pacific Standard Time', + 'Antarctica/Mawson': 'West Asia Standard Time', + 'Antarctica/McMurdo': 'New Zealand Standard Time', + 'Antarctica/Palmer': 'Pacific SA Standard Time', + 'Antarctica/Rothera': 'SA Eastern Standard Time', + 'Antarctica/Syowa': 'E. Africa Standard Time', + 'Antarctica/Vostok': 'Central Asia Standard Time', + 'Arctic/Longyearbyen': 'W. Europe Standard Time', + 'Asia/Aden': 'Arab Standard Time', + 'Asia/Almaty': 'Central Asia Standard Time', + 'Asia/Amman': 'Jordan Standard Time', + 'Asia/Anadyr': 'Russia Time Zone 11', + 'Asia/Aqtau': 'West Asia Standard Time', + 'Asia/Aqtobe': 'West Asia Standard Time', + 'Asia/Ashgabat': 'West Asia Standard Time', + 'Asia/Baghdad': 'Arabic Standard Time', + 'Asia/Bahrain': 'Arab Standard Time', + 'Asia/Baku': 'Azerbaijan Standard Time', + 'Asia/Bangkok': 'SE Asia Standard Time', + 'Asia/Beirut': 'Middle East Standard Time', + 'Asia/Bishkek': 'Central Asia Standard Time', + 'Asia/Brunei': 'Singapore Standard Time', + 'Asia/Calcutta': 'India Standard Time', + 'Asia/Chita': 'Yakutsk Standard Time', + 'Asia/Choibalsan': 'Ulaanbaatar Standard Time', + 'Asia/Colombo': 'Sri Lanka Standard Time', + 'Asia/Damascus': 'Syria Standard Time', + 'Asia/Dhaka': 'Bangladesh Standard Time', + 'Asia/Dili': 'Tokyo Standard Time', + 'Asia/Dubai': 'Arabian Standard Time', + 'Asia/Dushanbe': 'West Asia Standard Time', + 'Asia/Hong_Kong': 'China Standard Time', + 'Asia/Irkutsk': 'North Asia East Standard Time', + 'Asia/Jakarta': 'SE Asia Standard Time', + 'Asia/Jayapura': 'Tokyo Standard Time', + 'Asia/Jerusalem': 'Israel Standard Time', + 'Asia/Kabul': 'Afghanistan Standard Time', + 'Asia/Kamchatka': 'Russia Time Zone 11', + 'Asia/Karachi': 'Pakistan Standard Time', + 'Asia/Katmandu': 'Nepal Standard Time', + 'Asia/Khandyga': 'Yakutsk Standard Time', + 'Asia/Krasnoyarsk': 'North Asia Standard Time', + 'Asia/Kuala_Lumpur': 'Singapore Standard Time', + 'Asia/Kuching': 'Singapore Standard Time', + 'Asia/Kuwait': 'Arab Standard Time', + 'Asia/Macau': 'China Standard Time', + 'Asia/Magadan': 'Magadan Standard Time', + 'Asia/Makassar': 'Singapore Standard Time', + 'Asia/Manila': 'Singapore Standard Time', + 'Asia/Muscat': 'Arabian Standard Time', + 'Asia/Nicosia': 'GTB Standard Time', + 'Asia/Novokuznetsk': 'North Asia Standard Time', + 'Asia/Novosibirsk': 'N. Central Asia Standard Time', + 'Asia/Omsk': 'N. Central Asia Standard Time', + 'Asia/Oral': 'West Asia Standard Time', + 'Asia/Phnom_Penh': 'SE Asia Standard Time', + 'Asia/Pontianak': 'SE Asia Standard Time', + 'Asia/Pyongyang': 'North Korea Standard Time', + 'Asia/Qatar': 'Arab Standard Time', + 'Asia/Qyzylorda': 'Central Asia Standard Time', + 'Asia/Rangoon': 'Myanmar Standard Time', + 'Asia/Riyadh': 'Arab Standard Time', + 'Asia/Saigon': 'SE Asia Standard Time', + 'Asia/Sakhalin': 'Vladivostok Standard Time', + 'Asia/Samarkand': 'West Asia Standard Time', + 'Asia/Seoul': 'Korea Standard Time', + 'Asia/Shanghai': 'China Standard Time', + 'Asia/Singapore': 'Singapore Standard Time', + 'Asia/Srednekolymsk': 'Russia Time Zone 10', + 'Asia/Taipei': 'Taipei Standard Time', + 'Asia/Tashkent': 'West Asia Standard Time', + 'Asia/Tbilisi': 'Georgian Standard Time', + 'Asia/Tehran': 'Iran Standard Time', + 'Asia/Thimphu': 'Bangladesh Standard Time', + 'Asia/Tokyo': 'Tokyo Standard Time', + 'Asia/Ulaanbaatar': 'Ulaanbaatar Standard Time', + 'Asia/Urumqi': 'Central Asia Standard Time', + 'Asia/Ust-Nera': 'Vladivostok Standard Time', + 'Asia/Vientiane': 'SE Asia Standard Time', + 'Asia/Vladivostok': 'Vladivostok Standard Time', + 'Asia/Yakutsk': 'Yakutsk Standard Time', + 'Asia/Yekaterinburg': 'Ekaterinburg Standard Time', + 'Asia/Yerevan': 'Caucasus Standard Time', + 'Atlantic/Azores': 'Azores Standard Time', + 'Atlantic/Bermuda': 'Atlantic Standard Time', + 'Atlantic/Canary': 'GMT Standard Time', + 'Atlantic/Cape_Verde': 'Cape Verde Standard Time', + 'Atlantic/Faeroe': 'GMT Standard Time', + 'Atlantic/Madeira': 'GMT Standard Time', + 'Atlantic/Reykjavik': 'Greenwich Standard Time', + 'Atlantic/South_Georgia': 'UTC-02', + 'Atlantic/St_Helena': 'Greenwich Standard Time', + 'Atlantic/Stanley': 'SA Eastern Standard Time', + 'Australia/Adelaide': 'Cen. Australia Standard Time', + 'Australia/Brisbane': 'E. Australia Standard Time', + 'Australia/Broken_Hill': 'Cen. Australia Standard Time', + 'Australia/Currie': 'Tasmania Standard Time', + 'Australia/Darwin': 'AUS Central Standard Time', + 'Australia/Hobart': 'Tasmania Standard Time', + 'Australia/Lindeman': 'E. Australia Standard Time', + 'Australia/Melbourne': 'AUS Eastern Standard Time', + 'Australia/Perth': 'W. Australia Standard Time', + 'Australia/Sydney': 'AUS Eastern Standard Time', + 'CST6CDT': 'Central Standard Time', + 'EST5EDT': 'Eastern Standard Time', + 'Etc/GMT': 'UTC', + 'Etc/GMT+1': 'Cape Verde Standard Time', + 'Etc/GMT+10': 'Hawaiian Standard Time', + 'Etc/GMT+11': 'UTC-11', + 'Etc/GMT+12': 'Dateline Standard Time', + 'Etc/GMT+2': 'UTC-02', + 'Etc/GMT+3': 'SA Eastern Standard Time', + 'Etc/GMT+4': 'SA Western Standard Time', + 'Etc/GMT+5': 'SA Pacific Standard Time', + 'Etc/GMT+6': 'Central America Standard Time', + 'Etc/GMT+7': 'US Mountain Standard Time', + 'Etc/GMT-1': 'W. Central Africa Standard Time', + 'Etc/GMT-10': 'West Pacific Standard Time', + 'Etc/GMT-11': 'Central Pacific Standard Time', + 'Etc/GMT-12': 'UTC+12', + 'Etc/GMT-13': 'Tonga Standard Time', + 'Etc/GMT-14': 'Line Islands Standard Time', + 'Etc/GMT-2': 'South Africa Standard Time', + 'Etc/GMT-3': 'E. Africa Standard Time', + 'Etc/GMT-4': 'Arabian Standard Time', + 'Etc/GMT-5': 'West Asia Standard Time', + 'Etc/GMT-6': 'Central Asia Standard Time', + 'Etc/GMT-7': 'SE Asia Standard Time', + 'Etc/GMT-8': 'Singapore Standard Time', + 'Etc/GMT-9': 'Tokyo Standard Time', + 'Etc/UTC': 'UTC', + 'Europe/Amsterdam': 'W. Europe Standard Time', + 'Europe/Andorra': 'W. Europe Standard Time', + 'Europe/Athens': 'GTB Standard Time', + 'Europe/Belgrade': 'Central Europe Standard Time', + 'Europe/Berlin': 'W. Europe Standard Time', + 'Europe/Bratislava': 'Central Europe Standard Time', + 'Europe/Brussels': 'Romance Standard Time', + 'Europe/Bucharest': 'GTB Standard Time', + 'Europe/Budapest': 'Central Europe Standard Time', + 'Europe/Busingen': 'W. Europe Standard Time', + 'Europe/Chisinau': 'E. Europe Standard Time', + 'Europe/Copenhagen': 'Romance Standard Time', + 'Europe/Dublin': 'GMT Standard Time', + 'Europe/Gibraltar': 'W. Europe Standard Time', + 'Europe/Guernsey': 'GMT Standard Time', + 'Europe/Helsinki': 'FLE Standard Time', + 'Europe/Isle_of_Man': 'GMT Standard Time', + 'Europe/Istanbul': 'Turkey Standard Time', + 'Europe/Jersey': 'GMT Standard Time', + 'Europe/Kaliningrad': 'Kaliningrad Standard Time', + 'Europe/Kiev': 'FLE Standard Time', + 'Europe/Lisbon': 'GMT Standard Time', + 'Europe/Ljubljana': 'Central Europe Standard Time', + 'Europe/London': 'GMT Standard Time', + 'Europe/Luxembourg': 'W. Europe Standard Time', + 'Europe/Madrid': 'Romance Standard Time', + 'Europe/Malta': 'W. Europe Standard Time', + 'Europe/Mariehamn': 'FLE Standard Time', + 'Europe/Minsk': 'Belarus Standard Time', + 'Europe/Monaco': 'W. Europe Standard Time', + 'Europe/Moscow': 'Russian Standard Time', + 'Europe/Oslo': 'W. Europe Standard Time', + 'Europe/Paris': 'Romance Standard Time', + 'Europe/Podgorica': 'Central Europe Standard Time', + 'Europe/Prague': 'Central Europe Standard Time', + 'Europe/Riga': 'FLE Standard Time', + 'Europe/Rome': 'W. Europe Standard Time', + 'Europe/Samara': 'Russia Time Zone 3', + 'Europe/San_Marino': 'W. Europe Standard Time', + 'Europe/Sarajevo': 'Central European Standard Time', + 'Europe/Simferopol': 'Russian Standard Time', + 'Europe/Skopje': 'Central European Standard Time', + 'Europe/Sofia': 'FLE Standard Time', + 'Europe/Stockholm': 'W. Europe Standard Time', + 'Europe/Tallinn': 'FLE Standard Time', + 'Europe/Tirane': 'Central Europe Standard Time', + 'Europe/Uzhgorod': 'FLE Standard Time', + 'Europe/Vaduz': 'W. Europe Standard Time', + 'Europe/Vatican': 'W. Europe Standard Time', + 'Europe/Vienna': 'W. Europe Standard Time', + 'Europe/Vilnius': 'FLE Standard Time', + 'Europe/Volgograd': 'Russian Standard Time', + 'Europe/Warsaw': 'Central European Standard Time', + 'Europe/Zagreb': 'Central European Standard Time', + 'Europe/Zaporozhye': 'FLE Standard Time', + 'Europe/Zurich': 'W. Europe Standard Time', + 'Indian/Antananarivo': 'E. Africa Standard Time', + 'Indian/Chagos': 'Central Asia Standard Time', + 'Indian/Christmas': 'SE Asia Standard Time', + 'Indian/Cocos': 'Myanmar Standard Time', + 'Indian/Comoro': 'E. Africa Standard Time', + 'Indian/Kerguelen': 'West Asia Standard Time', + 'Indian/Mahe': 'Mauritius Standard Time', + 'Indian/Maldives': 'West Asia Standard Time', + 'Indian/Mauritius': 'Mauritius Standard Time', + 'Indian/Mayotte': 'E. Africa Standard Time', + 'Indian/Reunion': 'Mauritius Standard Time', + 'MST7MDT': 'Mountain Standard Time', + 'PST8PDT': 'Pacific Standard Time', + 'Pacific/Apia': 'Samoa Standard Time', + 'Pacific/Auckland': 'New Zealand Standard Time', + 'Pacific/Bougainville': 'Central Pacific Standard Time', + 'Pacific/Easter': 'SA Pacific Standard Time', + 'Pacific/Efate': 'Central Pacific Standard Time', + 'Pacific/Enderbury': 'Tonga Standard Time', + 'Pacific/Fakaofo': 'Tonga Standard Time', + 'Pacific/Fiji': 'Fiji Standard Time', + 'Pacific/Funafuti': 'UTC+12', + 'Pacific/Galapagos': 'Central America Standard Time', + 'Pacific/Guadalcanal': 'Central Pacific Standard Time', + 'Pacific/Guam': 'West Pacific Standard Time', + 'Pacific/Honolulu': 'Hawaiian Standard Time', + 'Pacific/Johnston': 'Hawaiian Standard Time', + 'Pacific/Kiritimati': 'Line Islands Standard Time', + 'Pacific/Kosrae': 'Central Pacific Standard Time', + 'Pacific/Kwajalein': 'UTC+12', + 'Pacific/Majuro': 'UTC+12', + 'Pacific/Midway': 'UTC-11', + 'Pacific/Nauru': 'UTC+12', + 'Pacific/Niue': 'UTC-11', + 'Pacific/Norfolk': 'Central Pacific Standard Time', + 'Pacific/Noumea': 'Central Pacific Standard Time', + 'Pacific/Pago_Pago': 'UTC-11', + 'Pacific/Palau': 'Tokyo Standard Time', + 'Pacific/Ponape': 'Central Pacific Standard Time', + 'Pacific/Port_Moresby': 'West Pacific Standard Time', + 'Pacific/Rarotonga': 'Hawaiian Standard Time', + 'Pacific/Saipan': 'West Pacific Standard Time', + 'Pacific/Tahiti': 'Hawaiian Standard Time', + 'Pacific/Tarawa': 'UTC+12', + 'Pacific/Tongatapu': 'Tonga Standard Time', + 'Pacific/Truk': 'West Pacific Standard Time', + 'Pacific/Wake': 'UTC+12', + 'Pacific/Wallis': 'UTC+12'} diff --git a/wakatime/packages/pygments_py3/pygments/__init__.py b/wakatime/packages/py3/pygments/__init__.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/__init__.py rename to wakatime/packages/py3/pygments/__init__.py diff --git a/wakatime/packages/pygments_py3/pygments/cmdline.py b/wakatime/packages/py3/pygments/cmdline.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/cmdline.py rename to wakatime/packages/py3/pygments/cmdline.py diff --git a/wakatime/packages/pygments_py3/pygments/console.py b/wakatime/packages/py3/pygments/console.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/console.py rename to wakatime/packages/py3/pygments/console.py diff --git a/wakatime/packages/pygments_py3/pygments/filter.py b/wakatime/packages/py3/pygments/filter.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/filter.py rename to wakatime/packages/py3/pygments/filter.py diff --git a/wakatime/packages/pygments_py3/pygments/filters/__init__.py b/wakatime/packages/py3/pygments/filters/__init__.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/filters/__init__.py rename to wakatime/packages/py3/pygments/filters/__init__.py diff --git a/wakatime/packages/pygments_py3/pygments/formatter.py b/wakatime/packages/py3/pygments/formatter.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/formatter.py rename to wakatime/packages/py3/pygments/formatter.py diff --git a/wakatime/packages/pygments_py3/pygments/formatters/__init__.py b/wakatime/packages/py3/pygments/formatters/__init__.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/formatters/__init__.py rename to wakatime/packages/py3/pygments/formatters/__init__.py diff --git a/wakatime/packages/pygments_py3/pygments/formatters/_mapping.py b/wakatime/packages/py3/pygments/formatters/_mapping.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/formatters/_mapping.py rename to wakatime/packages/py3/pygments/formatters/_mapping.py diff --git a/wakatime/packages/pygments_py3/pygments/formatters/bbcode.py b/wakatime/packages/py3/pygments/formatters/bbcode.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/formatters/bbcode.py rename to wakatime/packages/py3/pygments/formatters/bbcode.py diff --git a/wakatime/packages/pygments_py3/pygments/formatters/html.py b/wakatime/packages/py3/pygments/formatters/html.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/formatters/html.py rename to wakatime/packages/py3/pygments/formatters/html.py diff --git a/wakatime/packages/pygments_py3/pygments/formatters/img.py b/wakatime/packages/py3/pygments/formatters/img.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/formatters/img.py rename to wakatime/packages/py3/pygments/formatters/img.py diff --git a/wakatime/packages/pygments_py3/pygments/formatters/latex.py b/wakatime/packages/py3/pygments/formatters/latex.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/formatters/latex.py rename to wakatime/packages/py3/pygments/formatters/latex.py diff --git a/wakatime/packages/pygments_py3/pygments/formatters/other.py b/wakatime/packages/py3/pygments/formatters/other.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/formatters/other.py rename to wakatime/packages/py3/pygments/formatters/other.py diff --git a/wakatime/packages/pygments_py3/pygments/formatters/rtf.py b/wakatime/packages/py3/pygments/formatters/rtf.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/formatters/rtf.py rename to wakatime/packages/py3/pygments/formatters/rtf.py diff --git a/wakatime/packages/pygments_py3/pygments/formatters/svg.py b/wakatime/packages/py3/pygments/formatters/svg.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/formatters/svg.py rename to wakatime/packages/py3/pygments/formatters/svg.py diff --git a/wakatime/packages/pygments_py3/pygments/formatters/terminal.py b/wakatime/packages/py3/pygments/formatters/terminal.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/formatters/terminal.py rename to wakatime/packages/py3/pygments/formatters/terminal.py diff --git a/wakatime/packages/pygments_py3/pygments/formatters/terminal256.py b/wakatime/packages/py3/pygments/formatters/terminal256.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/formatters/terminal256.py rename to wakatime/packages/py3/pygments/formatters/terminal256.py diff --git a/wakatime/packages/pygments_py3/pygments/lexer.py b/wakatime/packages/py3/pygments/lexer.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexer.py rename to wakatime/packages/py3/pygments/lexer.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/__init__.py b/wakatime/packages/py3/pygments/lexers/__init__.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/__init__.py rename to wakatime/packages/py3/pygments/lexers/__init__.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/_asy_builtins.py b/wakatime/packages/py3/pygments/lexers/_asy_builtins.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/_asy_builtins.py rename to wakatime/packages/py3/pygments/lexers/_asy_builtins.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/_cl_builtins.py b/wakatime/packages/py3/pygments/lexers/_cl_builtins.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/_cl_builtins.py rename to wakatime/packages/py3/pygments/lexers/_cl_builtins.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/_cocoa_builtins.py b/wakatime/packages/py3/pygments/lexers/_cocoa_builtins.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/_cocoa_builtins.py rename to wakatime/packages/py3/pygments/lexers/_cocoa_builtins.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/_lasso_builtins.py b/wakatime/packages/py3/pygments/lexers/_lasso_builtins.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/_lasso_builtins.py rename to wakatime/packages/py3/pygments/lexers/_lasso_builtins.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/_lua_builtins.py b/wakatime/packages/py3/pygments/lexers/_lua_builtins.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/_lua_builtins.py rename to wakatime/packages/py3/pygments/lexers/_lua_builtins.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/_mapping.py b/wakatime/packages/py3/pygments/lexers/_mapping.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/_mapping.py rename to wakatime/packages/py3/pygments/lexers/_mapping.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/_mql_builtins.py b/wakatime/packages/py3/pygments/lexers/_mql_builtins.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/_mql_builtins.py rename to wakatime/packages/py3/pygments/lexers/_mql_builtins.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/_openedge_builtins.py b/wakatime/packages/py3/pygments/lexers/_openedge_builtins.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/_openedge_builtins.py rename to wakatime/packages/py3/pygments/lexers/_openedge_builtins.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/_php_builtins.py b/wakatime/packages/py3/pygments/lexers/_php_builtins.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/_php_builtins.py rename to wakatime/packages/py3/pygments/lexers/_php_builtins.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/_postgres_builtins.py b/wakatime/packages/py3/pygments/lexers/_postgres_builtins.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/_postgres_builtins.py rename to wakatime/packages/py3/pygments/lexers/_postgres_builtins.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/_scilab_builtins.py b/wakatime/packages/py3/pygments/lexers/_scilab_builtins.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/_scilab_builtins.py rename to wakatime/packages/py3/pygments/lexers/_scilab_builtins.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/_sourcemod_builtins.py b/wakatime/packages/py3/pygments/lexers/_sourcemod_builtins.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/_sourcemod_builtins.py rename to wakatime/packages/py3/pygments/lexers/_sourcemod_builtins.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/_stan_builtins.py b/wakatime/packages/py3/pygments/lexers/_stan_builtins.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/_stan_builtins.py rename to wakatime/packages/py3/pygments/lexers/_stan_builtins.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/_vim_builtins.py b/wakatime/packages/py3/pygments/lexers/_vim_builtins.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/_vim_builtins.py rename to wakatime/packages/py3/pygments/lexers/_vim_builtins.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/actionscript.py b/wakatime/packages/py3/pygments/lexers/actionscript.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/actionscript.py rename to wakatime/packages/py3/pygments/lexers/actionscript.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/agile.py b/wakatime/packages/py3/pygments/lexers/agile.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/agile.py rename to wakatime/packages/py3/pygments/lexers/agile.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/algebra.py b/wakatime/packages/py3/pygments/lexers/algebra.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/algebra.py rename to wakatime/packages/py3/pygments/lexers/algebra.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/ambient.py b/wakatime/packages/py3/pygments/lexers/ambient.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/ambient.py rename to wakatime/packages/py3/pygments/lexers/ambient.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/apl.py b/wakatime/packages/py3/pygments/lexers/apl.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/apl.py rename to wakatime/packages/py3/pygments/lexers/apl.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/asm.py b/wakatime/packages/py3/pygments/lexers/asm.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/asm.py rename to wakatime/packages/py3/pygments/lexers/asm.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/automation.py b/wakatime/packages/py3/pygments/lexers/automation.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/automation.py rename to wakatime/packages/py3/pygments/lexers/automation.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/basic.py b/wakatime/packages/py3/pygments/lexers/basic.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/basic.py rename to wakatime/packages/py3/pygments/lexers/basic.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/business.py b/wakatime/packages/py3/pygments/lexers/business.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/business.py rename to wakatime/packages/py3/pygments/lexers/business.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/c_cpp.py b/wakatime/packages/py3/pygments/lexers/c_cpp.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/c_cpp.py rename to wakatime/packages/py3/pygments/lexers/c_cpp.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/c_like.py b/wakatime/packages/py3/pygments/lexers/c_like.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/c_like.py rename to wakatime/packages/py3/pygments/lexers/c_like.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/chapel.py b/wakatime/packages/py3/pygments/lexers/chapel.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/chapel.py rename to wakatime/packages/py3/pygments/lexers/chapel.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/compiled.py b/wakatime/packages/py3/pygments/lexers/compiled.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/compiled.py rename to wakatime/packages/py3/pygments/lexers/compiled.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/configs.py b/wakatime/packages/py3/pygments/lexers/configs.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/configs.py rename to wakatime/packages/py3/pygments/lexers/configs.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/console.py b/wakatime/packages/py3/pygments/lexers/console.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/console.py rename to wakatime/packages/py3/pygments/lexers/console.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/css.py b/wakatime/packages/py3/pygments/lexers/css.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/css.py rename to wakatime/packages/py3/pygments/lexers/css.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/d.py b/wakatime/packages/py3/pygments/lexers/d.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/d.py rename to wakatime/packages/py3/pygments/lexers/d.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/dalvik.py b/wakatime/packages/py3/pygments/lexers/dalvik.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/dalvik.py rename to wakatime/packages/py3/pygments/lexers/dalvik.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/data.py b/wakatime/packages/py3/pygments/lexers/data.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/data.py rename to wakatime/packages/py3/pygments/lexers/data.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/diff.py b/wakatime/packages/py3/pygments/lexers/diff.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/diff.py rename to wakatime/packages/py3/pygments/lexers/diff.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/dotnet.py b/wakatime/packages/py3/pygments/lexers/dotnet.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/dotnet.py rename to wakatime/packages/py3/pygments/lexers/dotnet.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/dsls.py b/wakatime/packages/py3/pygments/lexers/dsls.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/dsls.py rename to wakatime/packages/py3/pygments/lexers/dsls.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/dylan.py b/wakatime/packages/py3/pygments/lexers/dylan.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/dylan.py rename to wakatime/packages/py3/pygments/lexers/dylan.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/ecl.py b/wakatime/packages/py3/pygments/lexers/ecl.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/ecl.py rename to wakatime/packages/py3/pygments/lexers/ecl.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/eiffel.py b/wakatime/packages/py3/pygments/lexers/eiffel.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/eiffel.py rename to wakatime/packages/py3/pygments/lexers/eiffel.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/erlang.py b/wakatime/packages/py3/pygments/lexers/erlang.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/erlang.py rename to wakatime/packages/py3/pygments/lexers/erlang.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/esoteric.py b/wakatime/packages/py3/pygments/lexers/esoteric.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/esoteric.py rename to wakatime/packages/py3/pygments/lexers/esoteric.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/factor.py b/wakatime/packages/py3/pygments/lexers/factor.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/factor.py rename to wakatime/packages/py3/pygments/lexers/factor.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/fantom.py b/wakatime/packages/py3/pygments/lexers/fantom.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/fantom.py rename to wakatime/packages/py3/pygments/lexers/fantom.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/felix.py b/wakatime/packages/py3/pygments/lexers/felix.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/felix.py rename to wakatime/packages/py3/pygments/lexers/felix.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/fortran.py b/wakatime/packages/py3/pygments/lexers/fortran.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/fortran.py rename to wakatime/packages/py3/pygments/lexers/fortran.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/foxpro.py b/wakatime/packages/py3/pygments/lexers/foxpro.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/foxpro.py rename to wakatime/packages/py3/pygments/lexers/foxpro.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/functional.py b/wakatime/packages/py3/pygments/lexers/functional.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/functional.py rename to wakatime/packages/py3/pygments/lexers/functional.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/go.py b/wakatime/packages/py3/pygments/lexers/go.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/go.py rename to wakatime/packages/py3/pygments/lexers/go.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/graph.py b/wakatime/packages/py3/pygments/lexers/graph.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/graph.py rename to wakatime/packages/py3/pygments/lexers/graph.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/graphics.py b/wakatime/packages/py3/pygments/lexers/graphics.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/graphics.py rename to wakatime/packages/py3/pygments/lexers/graphics.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/haskell.py b/wakatime/packages/py3/pygments/lexers/haskell.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/haskell.py rename to wakatime/packages/py3/pygments/lexers/haskell.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/haxe.py b/wakatime/packages/py3/pygments/lexers/haxe.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/haxe.py rename to wakatime/packages/py3/pygments/lexers/haxe.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/hdl.py b/wakatime/packages/py3/pygments/lexers/hdl.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/hdl.py rename to wakatime/packages/py3/pygments/lexers/hdl.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/html.py b/wakatime/packages/py3/pygments/lexers/html.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/html.py rename to wakatime/packages/py3/pygments/lexers/html.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/idl.py b/wakatime/packages/py3/pygments/lexers/idl.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/idl.py rename to wakatime/packages/py3/pygments/lexers/idl.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/igor.py b/wakatime/packages/py3/pygments/lexers/igor.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/igor.py rename to wakatime/packages/py3/pygments/lexers/igor.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/inferno.py b/wakatime/packages/py3/pygments/lexers/inferno.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/inferno.py rename to wakatime/packages/py3/pygments/lexers/inferno.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/installers.py b/wakatime/packages/py3/pygments/lexers/installers.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/installers.py rename to wakatime/packages/py3/pygments/lexers/installers.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/int_fiction.py b/wakatime/packages/py3/pygments/lexers/int_fiction.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/int_fiction.py rename to wakatime/packages/py3/pygments/lexers/int_fiction.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/iolang.py b/wakatime/packages/py3/pygments/lexers/iolang.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/iolang.py rename to wakatime/packages/py3/pygments/lexers/iolang.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/javascript.py b/wakatime/packages/py3/pygments/lexers/javascript.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/javascript.py rename to wakatime/packages/py3/pygments/lexers/javascript.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/julia.py b/wakatime/packages/py3/pygments/lexers/julia.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/julia.py rename to wakatime/packages/py3/pygments/lexers/julia.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/jvm.py b/wakatime/packages/py3/pygments/lexers/jvm.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/jvm.py rename to wakatime/packages/py3/pygments/lexers/jvm.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/lisp.py b/wakatime/packages/py3/pygments/lexers/lisp.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/lisp.py rename to wakatime/packages/py3/pygments/lexers/lisp.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/make.py b/wakatime/packages/py3/pygments/lexers/make.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/make.py rename to wakatime/packages/py3/pygments/lexers/make.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/markup.py b/wakatime/packages/py3/pygments/lexers/markup.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/markup.py rename to wakatime/packages/py3/pygments/lexers/markup.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/math.py b/wakatime/packages/py3/pygments/lexers/math.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/math.py rename to wakatime/packages/py3/pygments/lexers/math.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/matlab.py b/wakatime/packages/py3/pygments/lexers/matlab.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/matlab.py rename to wakatime/packages/py3/pygments/lexers/matlab.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/ml.py b/wakatime/packages/py3/pygments/lexers/ml.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/ml.py rename to wakatime/packages/py3/pygments/lexers/ml.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/modeling.py b/wakatime/packages/py3/pygments/lexers/modeling.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/modeling.py rename to wakatime/packages/py3/pygments/lexers/modeling.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/nimrod.py b/wakatime/packages/py3/pygments/lexers/nimrod.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/nimrod.py rename to wakatime/packages/py3/pygments/lexers/nimrod.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/nit.py b/wakatime/packages/py3/pygments/lexers/nit.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/nit.py rename to wakatime/packages/py3/pygments/lexers/nit.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/nix.py b/wakatime/packages/py3/pygments/lexers/nix.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/nix.py rename to wakatime/packages/py3/pygments/lexers/nix.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/objective.py b/wakatime/packages/py3/pygments/lexers/objective.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/objective.py rename to wakatime/packages/py3/pygments/lexers/objective.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/ooc.py b/wakatime/packages/py3/pygments/lexers/ooc.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/ooc.py rename to wakatime/packages/py3/pygments/lexers/ooc.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/other.py b/wakatime/packages/py3/pygments/lexers/other.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/other.py rename to wakatime/packages/py3/pygments/lexers/other.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/parsers.py b/wakatime/packages/py3/pygments/lexers/parsers.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/parsers.py rename to wakatime/packages/py3/pygments/lexers/parsers.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/pascal.py b/wakatime/packages/py3/pygments/lexers/pascal.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/pascal.py rename to wakatime/packages/py3/pygments/lexers/pascal.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/pawn.py b/wakatime/packages/py3/pygments/lexers/pawn.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/pawn.py rename to wakatime/packages/py3/pygments/lexers/pawn.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/perl.py b/wakatime/packages/py3/pygments/lexers/perl.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/perl.py rename to wakatime/packages/py3/pygments/lexers/perl.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/php.py b/wakatime/packages/py3/pygments/lexers/php.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/php.py rename to wakatime/packages/py3/pygments/lexers/php.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/prolog.py b/wakatime/packages/py3/pygments/lexers/prolog.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/prolog.py rename to wakatime/packages/py3/pygments/lexers/prolog.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/python.py b/wakatime/packages/py3/pygments/lexers/python.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/python.py rename to wakatime/packages/py3/pygments/lexers/python.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/r.py b/wakatime/packages/py3/pygments/lexers/r.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/r.py rename to wakatime/packages/py3/pygments/lexers/r.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/rdf.py b/wakatime/packages/py3/pygments/lexers/rdf.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/rdf.py rename to wakatime/packages/py3/pygments/lexers/rdf.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/rebol.py b/wakatime/packages/py3/pygments/lexers/rebol.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/rebol.py rename to wakatime/packages/py3/pygments/lexers/rebol.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/resource.py b/wakatime/packages/py3/pygments/lexers/resource.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/resource.py rename to wakatime/packages/py3/pygments/lexers/resource.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/robotframework.py b/wakatime/packages/py3/pygments/lexers/robotframework.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/robotframework.py rename to wakatime/packages/py3/pygments/lexers/robotframework.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/ruby.py b/wakatime/packages/py3/pygments/lexers/ruby.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/ruby.py rename to wakatime/packages/py3/pygments/lexers/ruby.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/rust.py b/wakatime/packages/py3/pygments/lexers/rust.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/rust.py rename to wakatime/packages/py3/pygments/lexers/rust.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/scripting.py b/wakatime/packages/py3/pygments/lexers/scripting.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/scripting.py rename to wakatime/packages/py3/pygments/lexers/scripting.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/shell.py b/wakatime/packages/py3/pygments/lexers/shell.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/shell.py rename to wakatime/packages/py3/pygments/lexers/shell.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/smalltalk.py b/wakatime/packages/py3/pygments/lexers/smalltalk.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/smalltalk.py rename to wakatime/packages/py3/pygments/lexers/smalltalk.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/snobol.py b/wakatime/packages/py3/pygments/lexers/snobol.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/snobol.py rename to wakatime/packages/py3/pygments/lexers/snobol.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/special.py b/wakatime/packages/py3/pygments/lexers/special.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/special.py rename to wakatime/packages/py3/pygments/lexers/special.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/sql.py b/wakatime/packages/py3/pygments/lexers/sql.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/sql.py rename to wakatime/packages/py3/pygments/lexers/sql.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/tcl.py b/wakatime/packages/py3/pygments/lexers/tcl.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/tcl.py rename to wakatime/packages/py3/pygments/lexers/tcl.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/templates.py b/wakatime/packages/py3/pygments/lexers/templates.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/templates.py rename to wakatime/packages/py3/pygments/lexers/templates.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/testing.py b/wakatime/packages/py3/pygments/lexers/testing.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/testing.py rename to wakatime/packages/py3/pygments/lexers/testing.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/text.py b/wakatime/packages/py3/pygments/lexers/text.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/text.py rename to wakatime/packages/py3/pygments/lexers/text.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/textedit.py b/wakatime/packages/py3/pygments/lexers/textedit.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/textedit.py rename to wakatime/packages/py3/pygments/lexers/textedit.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/textfmts.py b/wakatime/packages/py3/pygments/lexers/textfmts.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/textfmts.py rename to wakatime/packages/py3/pygments/lexers/textfmts.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/theorem.py b/wakatime/packages/py3/pygments/lexers/theorem.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/theorem.py rename to wakatime/packages/py3/pygments/lexers/theorem.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/urbi.py b/wakatime/packages/py3/pygments/lexers/urbi.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/urbi.py rename to wakatime/packages/py3/pygments/lexers/urbi.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/web.py b/wakatime/packages/py3/pygments/lexers/web.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/web.py rename to wakatime/packages/py3/pygments/lexers/web.py diff --git a/wakatime/packages/pygments_py3/pygments/lexers/webmisc.py b/wakatime/packages/py3/pygments/lexers/webmisc.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/lexers/webmisc.py rename to wakatime/packages/py3/pygments/lexers/webmisc.py diff --git a/wakatime/packages/pygments_py3/pygments/modeline.py b/wakatime/packages/py3/pygments/modeline.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/modeline.py rename to wakatime/packages/py3/pygments/modeline.py diff --git a/wakatime/packages/pygments_py3/pygments/plugin.py b/wakatime/packages/py3/pygments/plugin.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/plugin.py rename to wakatime/packages/py3/pygments/plugin.py diff --git a/wakatime/packages/pygments_py3/pygments/regexopt.py b/wakatime/packages/py3/pygments/regexopt.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/regexopt.py rename to wakatime/packages/py3/pygments/regexopt.py diff --git a/wakatime/packages/pygments_py3/pygments/scanner.py b/wakatime/packages/py3/pygments/scanner.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/scanner.py rename to wakatime/packages/py3/pygments/scanner.py diff --git a/wakatime/packages/pygments_py3/pygments/sphinxext.py b/wakatime/packages/py3/pygments/sphinxext.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/sphinxext.py rename to wakatime/packages/py3/pygments/sphinxext.py diff --git a/wakatime/packages/pygments_py3/pygments/style.py b/wakatime/packages/py3/pygments/style.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/style.py rename to wakatime/packages/py3/pygments/style.py diff --git a/wakatime/packages/pygments_py3/pygments/styles/__init__.py b/wakatime/packages/py3/pygments/styles/__init__.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/styles/__init__.py rename to wakatime/packages/py3/pygments/styles/__init__.py diff --git a/wakatime/packages/pygments_py3/pygments/styles/autumn.py b/wakatime/packages/py3/pygments/styles/autumn.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/styles/autumn.py rename to wakatime/packages/py3/pygments/styles/autumn.py diff --git a/wakatime/packages/pygments_py3/pygments/styles/borland.py b/wakatime/packages/py3/pygments/styles/borland.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/styles/borland.py rename to wakatime/packages/py3/pygments/styles/borland.py diff --git a/wakatime/packages/pygments_py3/pygments/styles/bw.py b/wakatime/packages/py3/pygments/styles/bw.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/styles/bw.py rename to wakatime/packages/py3/pygments/styles/bw.py diff --git a/wakatime/packages/pygments_py3/pygments/styles/colorful.py b/wakatime/packages/py3/pygments/styles/colorful.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/styles/colorful.py rename to wakatime/packages/py3/pygments/styles/colorful.py diff --git a/wakatime/packages/pygments_py3/pygments/styles/default.py b/wakatime/packages/py3/pygments/styles/default.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/styles/default.py rename to wakatime/packages/py3/pygments/styles/default.py diff --git a/wakatime/packages/pygments_py3/pygments/styles/emacs.py b/wakatime/packages/py3/pygments/styles/emacs.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/styles/emacs.py rename to wakatime/packages/py3/pygments/styles/emacs.py diff --git a/wakatime/packages/pygments_py3/pygments/styles/friendly.py b/wakatime/packages/py3/pygments/styles/friendly.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/styles/friendly.py rename to wakatime/packages/py3/pygments/styles/friendly.py diff --git a/wakatime/packages/pygments_py3/pygments/styles/fruity.py b/wakatime/packages/py3/pygments/styles/fruity.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/styles/fruity.py rename to wakatime/packages/py3/pygments/styles/fruity.py diff --git a/wakatime/packages/pygments_py3/pygments/styles/igor.py b/wakatime/packages/py3/pygments/styles/igor.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/styles/igor.py rename to wakatime/packages/py3/pygments/styles/igor.py diff --git a/wakatime/packages/pygments_py3/pygments/styles/manni.py b/wakatime/packages/py3/pygments/styles/manni.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/styles/manni.py rename to wakatime/packages/py3/pygments/styles/manni.py diff --git a/wakatime/packages/pygments_py3/pygments/styles/monokai.py b/wakatime/packages/py3/pygments/styles/monokai.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/styles/monokai.py rename to wakatime/packages/py3/pygments/styles/monokai.py diff --git a/wakatime/packages/pygments_py3/pygments/styles/murphy.py b/wakatime/packages/py3/pygments/styles/murphy.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/styles/murphy.py rename to wakatime/packages/py3/pygments/styles/murphy.py diff --git a/wakatime/packages/pygments_py3/pygments/styles/native.py b/wakatime/packages/py3/pygments/styles/native.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/styles/native.py rename to wakatime/packages/py3/pygments/styles/native.py diff --git a/wakatime/packages/pygments_py3/pygments/styles/paraiso_dark.py b/wakatime/packages/py3/pygments/styles/paraiso_dark.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/styles/paraiso_dark.py rename to wakatime/packages/py3/pygments/styles/paraiso_dark.py diff --git a/wakatime/packages/pygments_py3/pygments/styles/paraiso_light.py b/wakatime/packages/py3/pygments/styles/paraiso_light.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/styles/paraiso_light.py rename to wakatime/packages/py3/pygments/styles/paraiso_light.py diff --git a/wakatime/packages/pygments_py3/pygments/styles/pastie.py b/wakatime/packages/py3/pygments/styles/pastie.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/styles/pastie.py rename to wakatime/packages/py3/pygments/styles/pastie.py diff --git a/wakatime/packages/pygments_py3/pygments/styles/perldoc.py b/wakatime/packages/py3/pygments/styles/perldoc.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/styles/perldoc.py rename to wakatime/packages/py3/pygments/styles/perldoc.py diff --git a/wakatime/packages/pygments_py3/pygments/styles/rrt.py b/wakatime/packages/py3/pygments/styles/rrt.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/styles/rrt.py rename to wakatime/packages/py3/pygments/styles/rrt.py diff --git a/wakatime/packages/pygments_py3/pygments/styles/tango.py b/wakatime/packages/py3/pygments/styles/tango.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/styles/tango.py rename to wakatime/packages/py3/pygments/styles/tango.py diff --git a/wakatime/packages/pygments_py3/pygments/styles/trac.py b/wakatime/packages/py3/pygments/styles/trac.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/styles/trac.py rename to wakatime/packages/py3/pygments/styles/trac.py diff --git a/wakatime/packages/pygments_py3/pygments/styles/vim.py b/wakatime/packages/py3/pygments/styles/vim.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/styles/vim.py rename to wakatime/packages/py3/pygments/styles/vim.py diff --git a/wakatime/packages/pygments_py3/pygments/styles/vs.py b/wakatime/packages/py3/pygments/styles/vs.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/styles/vs.py rename to wakatime/packages/py3/pygments/styles/vs.py diff --git a/wakatime/packages/pygments_py3/pygments/styles/xcode.py b/wakatime/packages/py3/pygments/styles/xcode.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/styles/xcode.py rename to wakatime/packages/py3/pygments/styles/xcode.py diff --git a/wakatime/packages/pygments_py3/pygments/token.py b/wakatime/packages/py3/pygments/token.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/token.py rename to wakatime/packages/py3/pygments/token.py diff --git a/wakatime/packages/pygments_py3/pygments/unistring.py b/wakatime/packages/py3/pygments/unistring.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/unistring.py rename to wakatime/packages/py3/pygments/unistring.py diff --git a/wakatime/packages/pygments_py3/pygments/util.py b/wakatime/packages/py3/pygments/util.py similarity index 100% rename from wakatime/packages/pygments_py3/pygments/util.py rename to wakatime/packages/py3/pygments/util.py diff --git a/wakatime/packages/pytz3/__init__.py b/wakatime/packages/py3/pytz/__init__.py similarity index 100% rename from wakatime/packages/pytz3/__init__.py rename to wakatime/packages/py3/pytz/__init__.py diff --git a/wakatime/packages/pytz3/exceptions.py b/wakatime/packages/py3/pytz/exceptions.py similarity index 100% rename from wakatime/packages/pytz3/exceptions.py rename to wakatime/packages/py3/pytz/exceptions.py diff --git a/wakatime/packages/pytz3/lazy.py b/wakatime/packages/py3/pytz/lazy.py similarity index 100% rename from wakatime/packages/pytz3/lazy.py rename to wakatime/packages/py3/pytz/lazy.py diff --git a/wakatime/packages/pytz3/reference.py b/wakatime/packages/py3/pytz/reference.py similarity index 100% rename from wakatime/packages/pytz3/reference.py rename to wakatime/packages/py3/pytz/reference.py diff --git a/wakatime/packages/pytz3/tzfile.py b/wakatime/packages/py3/pytz/tzfile.py similarity index 100% rename from wakatime/packages/pytz3/tzfile.py rename to wakatime/packages/py3/pytz/tzfile.py diff --git a/wakatime/packages/pytz3/tzinfo.py b/wakatime/packages/py3/pytz/tzinfo.py similarity index 100% rename from wakatime/packages/pytz3/tzinfo.py rename to wakatime/packages/py3/pytz/tzinfo.py diff --git a/wakatime/packages/tzlocal3/__init__.py b/wakatime/packages/py3/tzlocal/__init__.py old mode 100644 new mode 100755 similarity index 64% rename from wakatime/packages/tzlocal3/__init__.py rename to wakatime/packages/py3/tzlocal/__init__.py index 24384ce..df7a66b --- a/wakatime/packages/tzlocal3/__init__.py +++ b/wakatime/packages/py3/tzlocal/__init__.py @@ -1,6 +1,7 @@ import sys if sys.platform == 'win32': from tzlocal.win32 import get_localzone, reload_localzone +elif 'darwin' in sys.platform: + from tzlocal.darwin import get_localzone, reload_localzone else: from tzlocal.unix import get_localzone, reload_localzone - diff --git a/wakatime/packages/py3/tzlocal/darwin.py b/wakatime/packages/py3/tzlocal/darwin.py new file mode 100755 index 0000000..bedbbd1 --- /dev/null +++ b/wakatime/packages/py3/tzlocal/darwin.py @@ -0,0 +1,37 @@ +from __future__ import with_statement +import os +import pytz +import subprocess + +_cache_tz = None + + +def _get_localzone(): + pipe = subprocess.Popen( + "systemsetup -gettimezone", + shell=True, + stderr=subprocess.PIPE, + stdout=subprocess.PIPE + ) + tzname = pipe.stdout.read().replace(b'Time Zone: ', b'').strip() + + if not tzname or tzname not in pytz.all_timezones_set: + # link will be something like /usr/share/zoneinfo/America/Los_Angeles. + link = os.readlink("/etc/localtime") + tzname = link[link.rfind("zoneinfo/") + 9:] + return pytz.timezone(tzname) + + +def get_localzone(): + """Get the computers configured local timezone, if any.""" + global _cache_tz + if _cache_tz is None: + _cache_tz = _get_localzone() + return _cache_tz + + +def reload_localzone(): + """Reload the cached localzone. You need to call this if the timezone has changed.""" + global _cache_tz + _cache_tz = _get_localzone() + return _cache_tz diff --git a/wakatime/packages/tzlocal/unix.py b/wakatime/packages/py3/tzlocal/unix.py old mode 100644 new mode 100755 similarity index 84% rename from wakatime/packages/tzlocal/unix.py rename to wakatime/packages/py3/tzlocal/unix.py index 1f4d6f9..f1eff1e --- a/wakatime/packages/tzlocal/unix.py +++ b/wakatime/packages/py3/tzlocal/unix.py @@ -13,7 +13,7 @@ def _tz_from_env(tzenv): if os.path.exists(tzenv): with open(tzenv, 'rb') as tzfile: return pytz.tzfile.build_tzinfo('local', tzfile) - + # TZ specifies a zoneinfo zone. try: tz = pytz.timezone(tzenv) @@ -23,30 +23,33 @@ def _tz_from_env(tzenv): raise pytz.UnknownTimeZoneError( "tzlocal() does not support non-zoneinfo timezones like %s. \n" "Please use a timezone in the form of Continent/City") - + def _get_localzone(_root='/'): """Tries to find the local timezone configuration. - + This method prefers finding the timezone name and passing that to pytz, over passing in the localtime file, as in the later case the zoneinfo name is unknown. - + The parameter _root makes the function look for files like /etc/localtime beneath the _root directory. This is primarily used by the tests. In normal usage you call the function without parameters.""" - + tzenv = os.environ.get('TZ') if tzenv: - return _tz_from_env(tzenv) - + try: + return _tz_from_env(tzenv) + except pytz.UnknownTimeZoneError: + pass + # Now look for distribution specific configuration files # that contain the timezone name. tzpath = os.path.join(_root, 'etc/timezone') if os.path.exists(tzpath): with open(tzpath, 'rb') as tzfile: data = tzfile.read() - - # Issue #3 was that /etc/timezone was a zoneinfo file. + + # Issue #3 was that /etc/timezone was a zoneinfo file. # That's a misconfiguration, but we need to handle it gracefully: if data[:5] != 'TZif2': etctz = data.strip().decode() @@ -55,13 +58,13 @@ def _get_localzone(_root='/'): etctz, dummy = etctz.split(' ', 1) if '#' in etctz: etctz, dummy = etctz.split('#', 1) - return pytz.timezone(etctz.replace(' ', '_')) + return pytz.timezone(etctz.replace(' ', '_')) # CentOS has a ZONE setting in /etc/sysconfig/clock, # OpenSUSE has a TIMEZONE setting in /etc/sysconfig/clock and # Gentoo has a TIMEZONE setting in /etc/conf.d/clock # We look through these files for a timezone: - + zone_re = re.compile('\s*ZONE\s*=\s*\"') timezone_re = re.compile('\s*TIMEZONE\s*=\s*\"') end_re = re.compile('\"') @@ -72,7 +75,7 @@ def _get_localzone(_root='/'): continue with open(tzpath, 'rt') as tzfile: data = tzfile.readlines() - + for line in data: # Look for the ZONE= setting. match = zone_re.match(line) @@ -87,15 +90,29 @@ def _get_localzone(_root='/'): # We found a timezone return pytz.timezone(etctz.replace(' ', '_')) + # systemd distributions use symlinks that include the zone name, + # see manpage of localtime(5) and timedatectl(1) + tzpath = os.path.join(_root, 'etc/localtime') + if os.path.exists(tzpath) and os.path.islink(tzpath): + tzpath = os.path.realpath(tzpath) + start = tzpath.find("/")+1 + while start is not 0: + tzpath = tzpath[start:] + try: + return pytz.timezone(tzpath) + except pytz.UnknownTimeZoneError: + pass + start = tzpath.find("/")+1 + # No explicit setting existed. Use localtime for filename in ('etc/localtime', 'usr/local/etc/localtime'): tzpath = os.path.join(_root, filename) - + if not os.path.exists(tzpath): continue with open(tzpath, 'rb') as tzfile: return pytz.tzfile.build_tzinfo('local', tzfile) - + raise pytz.UnknownTimeZoneError('Can not find any timezone configuration') def get_localzone(): @@ -110,4 +127,3 @@ def reload_localzone(): global _cache_tz _cache_tz = _get_localzone() return _cache_tz - \ No newline at end of file diff --git a/wakatime/packages/tzlocal/win32.py b/wakatime/packages/py3/tzlocal/win32.py old mode 100644 new mode 100755 similarity index 83% rename from wakatime/packages/tzlocal/win32.py rename to wakatime/packages/py3/tzlocal/win32.py index 3afcc31..63445cd --- a/wakatime/packages/tzlocal/win32.py +++ b/wakatime/packages/py3/tzlocal/win32.py @@ -1,9 +1,9 @@ -try: +try: import _winreg as winreg except ImportError: import winreg - -from tzlocal.windows_tz import tz_names + +from tzlocal.windows_tz import win_tz import pytz _cache_tz = None @@ -30,51 +30,56 @@ def get_localzone_name(): keyvalues = valuestodict(localtz) localtz.Close() if 'TimeZoneKeyName' in keyvalues: - # Windows 7 (and Vista?) - + # Windows 7 (and Vista?) + # For some reason this returns a string with loads of NUL bytes at # least on some systems. I don't know if this is a bug somewhere, I # just work around it. tzkeyname = keyvalues['TimeZoneKeyName'].split('\x00', 1)[0] else: # Windows 2000 or XP - + # This is the localized name: tzwin = keyvalues['StandardName'] - + # Open the list of timezones to look up the real name: TZKEYNAME = r"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones" tzkey = winreg.OpenKey(handle, TZKEYNAME) - - # Now, match this value to Time Zone information + + # Now, match this value to Time Zone information tzkeyname = None for i in range(winreg.QueryInfoKey(tzkey)[0]): subkey = winreg.EnumKey(tzkey, i) sub = winreg.OpenKey(tzkey, subkey) data = valuestodict(sub) sub.Close() - if data['Std'] == tzwin: - tzkeyname = subkey - break - + try: + if data['Std'] == tzwin: + tzkeyname = subkey + break + except KeyError: + # This timezone didn't have proper configuration. + # Ignore it. + pass + tzkey.Close() handle.Close() - + if tzkeyname is None: raise LookupError('Can not find Windows timezone configuration') - - timezone = tz_names.get(tzkeyname) + + timezone = win_tz.get(tzkeyname) if timezone is None: # Nope, that didn't work. Try adding "Standard Time", # it seems to work a lot of times: - timezone = tz_names.get(tzkeyname + " Standard Time") - + timezone = win_tz.get(tzkeyname + " Standard Time") + # Return what we have. if timezone is None: raise pytz.UnknownTimeZoneError('Can not find timezone ' + tzkeyname) - - return timezone - + + return timezone + def get_localzone(): """Returns the zoneinfo-based tzinfo object that matches the Windows-configured timezone.""" global _cache_tz diff --git a/wakatime/packages/py3/tzlocal/windows_tz.py b/wakatime/packages/py3/tzlocal/windows_tz.py new file mode 100755 index 0000000..f8afca2 --- /dev/null +++ b/wakatime/packages/py3/tzlocal/windows_tz.py @@ -0,0 +1,548 @@ +# This file is autogenerated by the get_windows_info.py script +# Do not edit. +win_tz = {'AUS Central Standard Time': 'Australia/Darwin', + 'AUS Eastern Standard Time': 'Australia/Sydney', + 'Afghanistan Standard Time': 'Asia/Kabul', + 'Alaskan Standard Time': 'America/Anchorage', + 'Arab Standard Time': 'Asia/Riyadh', + 'Arabian Standard Time': 'Asia/Dubai', + 'Arabic Standard Time': 'Asia/Baghdad', + 'Argentina Standard Time': 'America/Buenos_Aires', + 'Atlantic Standard Time': 'America/Halifax', + 'Azerbaijan Standard Time': 'Asia/Baku', + 'Azores Standard Time': 'Atlantic/Azores', + 'Bahia Standard Time': 'America/Bahia', + 'Bangladesh Standard Time': 'Asia/Dhaka', + 'Belarus Standard Time': 'Europe/Minsk', + 'Canada Central Standard Time': 'America/Regina', + 'Cape Verde Standard Time': 'Atlantic/Cape_Verde', + 'Caucasus Standard Time': 'Asia/Yerevan', + 'Cen. Australia Standard Time': 'Australia/Adelaide', + 'Central America Standard Time': 'America/Guatemala', + 'Central Asia Standard Time': 'Asia/Almaty', + 'Central Brazilian Standard Time': 'America/Cuiaba', + 'Central Europe Standard Time': 'Europe/Budapest', + 'Central European Standard Time': 'Europe/Warsaw', + 'Central Pacific Standard Time': 'Pacific/Guadalcanal', + 'Central Standard Time': 'America/Chicago', + 'Central Standard Time (Mexico)': 'America/Mexico_City', + 'China Standard Time': 'Asia/Shanghai', + 'Dateline Standard Time': 'Etc/GMT+12', + 'E. Africa Standard Time': 'Africa/Nairobi', + 'E. Australia Standard Time': 'Australia/Brisbane', + 'E. Europe Standard Time': 'Europe/Chisinau', + 'E. South America Standard Time': 'America/Sao_Paulo', + 'Eastern Standard Time': 'America/New_York', + 'Eastern Standard Time (Mexico)': 'America/Cancun', + 'Egypt Standard Time': 'Africa/Cairo', + 'Ekaterinburg Standard Time': 'Asia/Yekaterinburg', + 'FLE Standard Time': 'Europe/Kiev', + 'Fiji Standard Time': 'Pacific/Fiji', + 'GMT Standard Time': 'Europe/London', + 'GTB Standard Time': 'Europe/Bucharest', + 'Georgian Standard Time': 'Asia/Tbilisi', + 'Greenland Standard Time': 'America/Godthab', + 'Greenwich Standard Time': 'Atlantic/Reykjavik', + 'Hawaiian Standard Time': 'Pacific/Honolulu', + 'India Standard Time': 'Asia/Calcutta', + 'Iran Standard Time': 'Asia/Tehran', + 'Israel Standard Time': 'Asia/Jerusalem', + 'Jordan Standard Time': 'Asia/Amman', + 'Kaliningrad Standard Time': 'Europe/Kaliningrad', + 'Korea Standard Time': 'Asia/Seoul', + 'Libya Standard Time': 'Africa/Tripoli', + 'Line Islands Standard Time': 'Pacific/Kiritimati', + 'Magadan Standard Time': 'Asia/Magadan', + 'Mauritius Standard Time': 'Indian/Mauritius', + 'Middle East Standard Time': 'Asia/Beirut', + 'Montevideo Standard Time': 'America/Montevideo', + 'Morocco Standard Time': 'Africa/Casablanca', + 'Mountain Standard Time': 'America/Denver', + 'Mountain Standard Time (Mexico)': 'America/Chihuahua', + 'Myanmar Standard Time': 'Asia/Rangoon', + 'N. Central Asia Standard Time': 'Asia/Novosibirsk', + 'Namibia Standard Time': 'Africa/Windhoek', + 'Nepal Standard Time': 'Asia/Katmandu', + 'New Zealand Standard Time': 'Pacific/Auckland', + 'Newfoundland Standard Time': 'America/St_Johns', + 'North Asia East Standard Time': 'Asia/Irkutsk', + 'North Asia Standard Time': 'Asia/Krasnoyarsk', + 'North Korea Standard Time': 'Asia/Pyongyang', + 'Pacific SA Standard Time': 'America/Santiago', + 'Pacific Standard Time': 'America/Los_Angeles', + 'Pakistan Standard Time': 'Asia/Karachi', + 'Paraguay Standard Time': 'America/Asuncion', + 'Romance Standard Time': 'Europe/Paris', + 'Russia Time Zone 10': 'Asia/Srednekolymsk', + 'Russia Time Zone 11': 'Asia/Kamchatka', + 'Russia Time Zone 3': 'Europe/Samara', + 'Russian Standard Time': 'Europe/Moscow', + 'SA Eastern Standard Time': 'America/Cayenne', + 'SA Pacific Standard Time': 'America/Bogota', + 'SA Western Standard Time': 'America/La_Paz', + 'SE Asia Standard Time': 'Asia/Bangkok', + 'Samoa Standard Time': 'Pacific/Apia', + 'Singapore Standard Time': 'Asia/Singapore', + 'South Africa Standard Time': 'Africa/Johannesburg', + 'Sri Lanka Standard Time': 'Asia/Colombo', + 'Syria Standard Time': 'Asia/Damascus', + 'Taipei Standard Time': 'Asia/Taipei', + 'Tasmania Standard Time': 'Australia/Hobart', + 'Tokyo Standard Time': 'Asia/Tokyo', + 'Tonga Standard Time': 'Pacific/Tongatapu', + 'Turkey Standard Time': 'Europe/Istanbul', + 'US Eastern Standard Time': 'America/Indianapolis', + 'US Mountain Standard Time': 'America/Phoenix', + 'UTC': 'Etc/GMT', + 'UTC+12': 'Etc/GMT-12', + 'UTC-02': 'Etc/GMT+2', + 'UTC-11': 'Etc/GMT+11', + 'Ulaanbaatar Standard Time': 'Asia/Ulaanbaatar', + 'Venezuela Standard Time': 'America/Caracas', + 'Vladivostok Standard Time': 'Asia/Vladivostok', + 'W. Australia Standard Time': 'Australia/Perth', + 'W. Central Africa Standard Time': 'Africa/Lagos', + 'W. Europe Standard Time': 'Europe/Berlin', + 'West Asia Standard Time': 'Asia/Tashkent', + 'West Pacific Standard Time': 'Pacific/Port_Moresby', + 'Yakutsk Standard Time': 'Asia/Yakutsk'} + +# Old name for the win_tz variable: +tz_names = win_tz + +tz_win = {'Africa/Abidjan': 'Greenwich Standard Time', + 'Africa/Accra': 'Greenwich Standard Time', + 'Africa/Addis_Ababa': 'E. Africa Standard Time', + 'Africa/Algiers': 'W. Central Africa Standard Time', + 'Africa/Asmera': 'E. Africa Standard Time', + 'Africa/Bamako': 'Greenwich Standard Time', + 'Africa/Bangui': 'W. Central Africa Standard Time', + 'Africa/Banjul': 'Greenwich Standard Time', + 'Africa/Bissau': 'Greenwich Standard Time', + 'Africa/Blantyre': 'South Africa Standard Time', + 'Africa/Brazzaville': 'W. Central Africa Standard Time', + 'Africa/Bujumbura': 'South Africa Standard Time', + 'Africa/Cairo': 'Egypt Standard Time', + 'Africa/Casablanca': 'Morocco Standard Time', + 'Africa/Ceuta': 'Romance Standard Time', + 'Africa/Conakry': 'Greenwich Standard Time', + 'Africa/Dakar': 'Greenwich Standard Time', + 'Africa/Dar_es_Salaam': 'E. Africa Standard Time', + 'Africa/Djibouti': 'E. Africa Standard Time', + 'Africa/Douala': 'W. Central Africa Standard Time', + 'Africa/El_Aaiun': 'Morocco Standard Time', + 'Africa/Freetown': 'Greenwich Standard Time', + 'Africa/Gaborone': 'South Africa Standard Time', + 'Africa/Harare': 'South Africa Standard Time', + 'Africa/Johannesburg': 'South Africa Standard Time', + 'Africa/Juba': 'E. Africa Standard Time', + 'Africa/Kampala': 'E. Africa Standard Time', + 'Africa/Khartoum': 'E. Africa Standard Time', + 'Africa/Kigali': 'South Africa Standard Time', + 'Africa/Kinshasa': 'W. Central Africa Standard Time', + 'Africa/Lagos': 'W. Central Africa Standard Time', + 'Africa/Libreville': 'W. Central Africa Standard Time', + 'Africa/Lome': 'Greenwich Standard Time', + 'Africa/Luanda': 'W. Central Africa Standard Time', + 'Africa/Lubumbashi': 'South Africa Standard Time', + 'Africa/Lusaka': 'South Africa Standard Time', + 'Africa/Malabo': 'W. Central Africa Standard Time', + 'Africa/Maputo': 'South Africa Standard Time', + 'Africa/Maseru': 'South Africa Standard Time', + 'Africa/Mbabane': 'South Africa Standard Time', + 'Africa/Mogadishu': 'E. Africa Standard Time', + 'Africa/Monrovia': 'Greenwich Standard Time', + 'Africa/Nairobi': 'E. Africa Standard Time', + 'Africa/Ndjamena': 'W. Central Africa Standard Time', + 'Africa/Niamey': 'W. Central Africa Standard Time', + 'Africa/Nouakchott': 'Greenwich Standard Time', + 'Africa/Ouagadougou': 'Greenwich Standard Time', + 'Africa/Porto-Novo': 'W. Central Africa Standard Time', + 'Africa/Sao_Tome': 'Greenwich Standard Time', + 'Africa/Tripoli': 'Libya Standard Time', + 'Africa/Tunis': 'W. Central Africa Standard Time', + 'Africa/Windhoek': 'Namibia Standard Time', + 'America/Anchorage': 'Alaskan Standard Time', + 'America/Anguilla': 'SA Western Standard Time', + 'America/Antigua': 'SA Western Standard Time', + 'America/Araguaina': 'SA Eastern Standard Time', + 'America/Argentina/La_Rioja': 'Argentina Standard Time', + 'America/Argentina/Rio_Gallegos': 'Argentina Standard Time', + 'America/Argentina/Salta': 'Argentina Standard Time', + 'America/Argentina/San_Juan': 'Argentina Standard Time', + 'America/Argentina/San_Luis': 'Argentina Standard Time', + 'America/Argentina/Tucuman': 'Argentina Standard Time', + 'America/Argentina/Ushuaia': 'Argentina Standard Time', + 'America/Aruba': 'SA Western Standard Time', + 'America/Asuncion': 'Paraguay Standard Time', + 'America/Bahia': 'Bahia Standard Time', + 'America/Bahia_Banderas': 'Central Standard Time (Mexico)', + 'America/Barbados': 'SA Western Standard Time', + 'America/Belem': 'SA Eastern Standard Time', + 'America/Belize': 'Central America Standard Time', + 'America/Blanc-Sablon': 'SA Western Standard Time', + 'America/Boa_Vista': 'SA Western Standard Time', + 'America/Bogota': 'SA Pacific Standard Time', + 'America/Boise': 'Mountain Standard Time', + 'America/Buenos_Aires': 'Argentina Standard Time', + 'America/Cambridge_Bay': 'Mountain Standard Time', + 'America/Campo_Grande': 'Central Brazilian Standard Time', + 'America/Cancun': 'Eastern Standard Time (Mexico)', + 'America/Caracas': 'Venezuela Standard Time', + 'America/Catamarca': 'Argentina Standard Time', + 'America/Cayenne': 'SA Eastern Standard Time', + 'America/Cayman': 'SA Pacific Standard Time', + 'America/Chicago': 'Central Standard Time', + 'America/Chihuahua': 'Mountain Standard Time (Mexico)', + 'America/Coral_Harbour': 'SA Pacific Standard Time', + 'America/Cordoba': 'Argentina Standard Time', + 'America/Costa_Rica': 'Central America Standard Time', + 'America/Creston': 'US Mountain Standard Time', + 'America/Cuiaba': 'Central Brazilian Standard Time', + 'America/Curacao': 'SA Western Standard Time', + 'America/Danmarkshavn': 'UTC', + 'America/Dawson': 'Pacific Standard Time', + 'America/Dawson_Creek': 'US Mountain Standard Time', + 'America/Denver': 'Mountain Standard Time', + 'America/Detroit': 'Eastern Standard Time', + 'America/Dominica': 'SA Western Standard Time', + 'America/Edmonton': 'Mountain Standard Time', + 'America/Eirunepe': 'SA Pacific Standard Time', + 'America/El_Salvador': 'Central America Standard Time', + 'America/Fort_Nelson': 'US Mountain Standard Time', + 'America/Fortaleza': 'SA Eastern Standard Time', + 'America/Glace_Bay': 'Atlantic Standard Time', + 'America/Godthab': 'Greenland Standard Time', + 'America/Goose_Bay': 'Atlantic Standard Time', + 'America/Grand_Turk': 'SA Western Standard Time', + 'America/Grenada': 'SA Western Standard Time', + 'America/Guadeloupe': 'SA Western Standard Time', + 'America/Guatemala': 'Central America Standard Time', + 'America/Guayaquil': 'SA Pacific Standard Time', + 'America/Guyana': 'SA Western Standard Time', + 'America/Halifax': 'Atlantic Standard Time', + 'America/Havana': 'Eastern Standard Time', + 'America/Hermosillo': 'US Mountain Standard Time', + 'America/Indiana/Knox': 'Central Standard Time', + 'America/Indiana/Marengo': 'US Eastern Standard Time', + 'America/Indiana/Petersburg': 'Eastern Standard Time', + 'America/Indiana/Tell_City': 'Central Standard Time', + 'America/Indiana/Vevay': 'US Eastern Standard Time', + 'America/Indiana/Vincennes': 'Eastern Standard Time', + 'America/Indiana/Winamac': 'Eastern Standard Time', + 'America/Indianapolis': 'US Eastern Standard Time', + 'America/Inuvik': 'Mountain Standard Time', + 'America/Iqaluit': 'Eastern Standard Time', + 'America/Jamaica': 'SA Pacific Standard Time', + 'America/Jujuy': 'Argentina Standard Time', + 'America/Juneau': 'Alaskan Standard Time', + 'America/Kentucky/Monticello': 'Eastern Standard Time', + 'America/Kralendijk': 'SA Western Standard Time', + 'America/La_Paz': 'SA Western Standard Time', + 'America/Lima': 'SA Pacific Standard Time', + 'America/Los_Angeles': 'Pacific Standard Time', + 'America/Louisville': 'Eastern Standard Time', + 'America/Lower_Princes': 'SA Western Standard Time', + 'America/Maceio': 'SA Eastern Standard Time', + 'America/Managua': 'Central America Standard Time', + 'America/Manaus': 'SA Western Standard Time', + 'America/Marigot': 'SA Western Standard Time', + 'America/Martinique': 'SA Western Standard Time', + 'America/Matamoros': 'Central Standard Time', + 'America/Mazatlan': 'Mountain Standard Time (Mexico)', + 'America/Mendoza': 'Argentina Standard Time', + 'America/Menominee': 'Central Standard Time', + 'America/Merida': 'Central Standard Time (Mexico)', + 'America/Metlakatla': 'Alaskan Standard Time', + 'America/Mexico_City': 'Central Standard Time (Mexico)', + 'America/Moncton': 'Atlantic Standard Time', + 'America/Monterrey': 'Central Standard Time (Mexico)', + 'America/Montevideo': 'Montevideo Standard Time', + 'America/Montreal': 'Eastern Standard Time', + 'America/Montserrat': 'SA Western Standard Time', + 'America/Nassau': 'Eastern Standard Time', + 'America/New_York': 'Eastern Standard Time', + 'America/Nipigon': 'Eastern Standard Time', + 'America/Nome': 'Alaskan Standard Time', + 'America/Noronha': 'UTC-02', + 'America/North_Dakota/Beulah': 'Central Standard Time', + 'America/North_Dakota/Center': 'Central Standard Time', + 'America/North_Dakota/New_Salem': 'Central Standard Time', + 'America/Ojinaga': 'Mountain Standard Time', + 'America/Panama': 'SA Pacific Standard Time', + 'America/Pangnirtung': 'Eastern Standard Time', + 'America/Paramaribo': 'SA Eastern Standard Time', + 'America/Phoenix': 'US Mountain Standard Time', + 'America/Port-au-Prince': 'Eastern Standard Time', + 'America/Port_of_Spain': 'SA Western Standard Time', + 'America/Porto_Velho': 'SA Western Standard Time', + 'America/Puerto_Rico': 'SA Western Standard Time', + 'America/Rainy_River': 'Central Standard Time', + 'America/Rankin_Inlet': 'Central Standard Time', + 'America/Recife': 'SA Eastern Standard Time', + 'America/Regina': 'Canada Central Standard Time', + 'America/Resolute': 'Central Standard Time', + 'America/Rio_Branco': 'SA Pacific Standard Time', + 'America/Santa_Isabel': 'Pacific Standard Time', + 'America/Santarem': 'SA Eastern Standard Time', + 'America/Santiago': 'Pacific SA Standard Time', + 'America/Santo_Domingo': 'SA Western Standard Time', + 'America/Sao_Paulo': 'E. South America Standard Time', + 'America/Scoresbysund': 'Azores Standard Time', + 'America/Sitka': 'Alaskan Standard Time', + 'America/St_Barthelemy': 'SA Western Standard Time', + 'America/St_Johns': 'Newfoundland Standard Time', + 'America/St_Kitts': 'SA Western Standard Time', + 'America/St_Lucia': 'SA Western Standard Time', + 'America/St_Thomas': 'SA Western Standard Time', + 'America/St_Vincent': 'SA Western Standard Time', + 'America/Swift_Current': 'Canada Central Standard Time', + 'America/Tegucigalpa': 'Central America Standard Time', + 'America/Thule': 'Atlantic Standard Time', + 'America/Thunder_Bay': 'Eastern Standard Time', + 'America/Tijuana': 'Pacific Standard Time', + 'America/Toronto': 'Eastern Standard Time', + 'America/Tortola': 'SA Western Standard Time', + 'America/Vancouver': 'Pacific Standard Time', + 'America/Whitehorse': 'Pacific Standard Time', + 'America/Winnipeg': 'Central Standard Time', + 'America/Yakutat': 'Alaskan Standard Time', + 'America/Yellowknife': 'Mountain Standard Time', + 'Antarctica/Casey': 'W. Australia Standard Time', + 'Antarctica/Davis': 'SE Asia Standard Time', + 'Antarctica/DumontDUrville': 'West Pacific Standard Time', + 'Antarctica/Macquarie': 'Central Pacific Standard Time', + 'Antarctica/Mawson': 'West Asia Standard Time', + 'Antarctica/McMurdo': 'New Zealand Standard Time', + 'Antarctica/Palmer': 'Pacific SA Standard Time', + 'Antarctica/Rothera': 'SA Eastern Standard Time', + 'Antarctica/Syowa': 'E. Africa Standard Time', + 'Antarctica/Vostok': 'Central Asia Standard Time', + 'Arctic/Longyearbyen': 'W. Europe Standard Time', + 'Asia/Aden': 'Arab Standard Time', + 'Asia/Almaty': 'Central Asia Standard Time', + 'Asia/Amman': 'Jordan Standard Time', + 'Asia/Anadyr': 'Russia Time Zone 11', + 'Asia/Aqtau': 'West Asia Standard Time', + 'Asia/Aqtobe': 'West Asia Standard Time', + 'Asia/Ashgabat': 'West Asia Standard Time', + 'Asia/Baghdad': 'Arabic Standard Time', + 'Asia/Bahrain': 'Arab Standard Time', + 'Asia/Baku': 'Azerbaijan Standard Time', + 'Asia/Bangkok': 'SE Asia Standard Time', + 'Asia/Beirut': 'Middle East Standard Time', + 'Asia/Bishkek': 'Central Asia Standard Time', + 'Asia/Brunei': 'Singapore Standard Time', + 'Asia/Calcutta': 'India Standard Time', + 'Asia/Chita': 'Yakutsk Standard Time', + 'Asia/Choibalsan': 'Ulaanbaatar Standard Time', + 'Asia/Colombo': 'Sri Lanka Standard Time', + 'Asia/Damascus': 'Syria Standard Time', + 'Asia/Dhaka': 'Bangladesh Standard Time', + 'Asia/Dili': 'Tokyo Standard Time', + 'Asia/Dubai': 'Arabian Standard Time', + 'Asia/Dushanbe': 'West Asia Standard Time', + 'Asia/Hong_Kong': 'China Standard Time', + 'Asia/Irkutsk': 'North Asia East Standard Time', + 'Asia/Jakarta': 'SE Asia Standard Time', + 'Asia/Jayapura': 'Tokyo Standard Time', + 'Asia/Jerusalem': 'Israel Standard Time', + 'Asia/Kabul': 'Afghanistan Standard Time', + 'Asia/Kamchatka': 'Russia Time Zone 11', + 'Asia/Karachi': 'Pakistan Standard Time', + 'Asia/Katmandu': 'Nepal Standard Time', + 'Asia/Khandyga': 'Yakutsk Standard Time', + 'Asia/Krasnoyarsk': 'North Asia Standard Time', + 'Asia/Kuala_Lumpur': 'Singapore Standard Time', + 'Asia/Kuching': 'Singapore Standard Time', + 'Asia/Kuwait': 'Arab Standard Time', + 'Asia/Macau': 'China Standard Time', + 'Asia/Magadan': 'Magadan Standard Time', + 'Asia/Makassar': 'Singapore Standard Time', + 'Asia/Manila': 'Singapore Standard Time', + 'Asia/Muscat': 'Arabian Standard Time', + 'Asia/Nicosia': 'GTB Standard Time', + 'Asia/Novokuznetsk': 'North Asia Standard Time', + 'Asia/Novosibirsk': 'N. Central Asia Standard Time', + 'Asia/Omsk': 'N. Central Asia Standard Time', + 'Asia/Oral': 'West Asia Standard Time', + 'Asia/Phnom_Penh': 'SE Asia Standard Time', + 'Asia/Pontianak': 'SE Asia Standard Time', + 'Asia/Pyongyang': 'North Korea Standard Time', + 'Asia/Qatar': 'Arab Standard Time', + 'Asia/Qyzylorda': 'Central Asia Standard Time', + 'Asia/Rangoon': 'Myanmar Standard Time', + 'Asia/Riyadh': 'Arab Standard Time', + 'Asia/Saigon': 'SE Asia Standard Time', + 'Asia/Sakhalin': 'Vladivostok Standard Time', + 'Asia/Samarkand': 'West Asia Standard Time', + 'Asia/Seoul': 'Korea Standard Time', + 'Asia/Shanghai': 'China Standard Time', + 'Asia/Singapore': 'Singapore Standard Time', + 'Asia/Srednekolymsk': 'Russia Time Zone 10', + 'Asia/Taipei': 'Taipei Standard Time', + 'Asia/Tashkent': 'West Asia Standard Time', + 'Asia/Tbilisi': 'Georgian Standard Time', + 'Asia/Tehran': 'Iran Standard Time', + 'Asia/Thimphu': 'Bangladesh Standard Time', + 'Asia/Tokyo': 'Tokyo Standard Time', + 'Asia/Ulaanbaatar': 'Ulaanbaatar Standard Time', + 'Asia/Urumqi': 'Central Asia Standard Time', + 'Asia/Ust-Nera': 'Vladivostok Standard Time', + 'Asia/Vientiane': 'SE Asia Standard Time', + 'Asia/Vladivostok': 'Vladivostok Standard Time', + 'Asia/Yakutsk': 'Yakutsk Standard Time', + 'Asia/Yekaterinburg': 'Ekaterinburg Standard Time', + 'Asia/Yerevan': 'Caucasus Standard Time', + 'Atlantic/Azores': 'Azores Standard Time', + 'Atlantic/Bermuda': 'Atlantic Standard Time', + 'Atlantic/Canary': 'GMT Standard Time', + 'Atlantic/Cape_Verde': 'Cape Verde Standard Time', + 'Atlantic/Faeroe': 'GMT Standard Time', + 'Atlantic/Madeira': 'GMT Standard Time', + 'Atlantic/Reykjavik': 'Greenwich Standard Time', + 'Atlantic/South_Georgia': 'UTC-02', + 'Atlantic/St_Helena': 'Greenwich Standard Time', + 'Atlantic/Stanley': 'SA Eastern Standard Time', + 'Australia/Adelaide': 'Cen. Australia Standard Time', + 'Australia/Brisbane': 'E. Australia Standard Time', + 'Australia/Broken_Hill': 'Cen. Australia Standard Time', + 'Australia/Currie': 'Tasmania Standard Time', + 'Australia/Darwin': 'AUS Central Standard Time', + 'Australia/Hobart': 'Tasmania Standard Time', + 'Australia/Lindeman': 'E. Australia Standard Time', + 'Australia/Melbourne': 'AUS Eastern Standard Time', + 'Australia/Perth': 'W. Australia Standard Time', + 'Australia/Sydney': 'AUS Eastern Standard Time', + 'CST6CDT': 'Central Standard Time', + 'EST5EDT': 'Eastern Standard Time', + 'Etc/GMT': 'UTC', + 'Etc/GMT+1': 'Cape Verde Standard Time', + 'Etc/GMT+10': 'Hawaiian Standard Time', + 'Etc/GMT+11': 'UTC-11', + 'Etc/GMT+12': 'Dateline Standard Time', + 'Etc/GMT+2': 'UTC-02', + 'Etc/GMT+3': 'SA Eastern Standard Time', + 'Etc/GMT+4': 'SA Western Standard Time', + 'Etc/GMT+5': 'SA Pacific Standard Time', + 'Etc/GMT+6': 'Central America Standard Time', + 'Etc/GMT+7': 'US Mountain Standard Time', + 'Etc/GMT-1': 'W. Central Africa Standard Time', + 'Etc/GMT-10': 'West Pacific Standard Time', + 'Etc/GMT-11': 'Central Pacific Standard Time', + 'Etc/GMT-12': 'UTC+12', + 'Etc/GMT-13': 'Tonga Standard Time', + 'Etc/GMT-14': 'Line Islands Standard Time', + 'Etc/GMT-2': 'South Africa Standard Time', + 'Etc/GMT-3': 'E. Africa Standard Time', + 'Etc/GMT-4': 'Arabian Standard Time', + 'Etc/GMT-5': 'West Asia Standard Time', + 'Etc/GMT-6': 'Central Asia Standard Time', + 'Etc/GMT-7': 'SE Asia Standard Time', + 'Etc/GMT-8': 'Singapore Standard Time', + 'Etc/GMT-9': 'Tokyo Standard Time', + 'Etc/UTC': 'UTC', + 'Europe/Amsterdam': 'W. Europe Standard Time', + 'Europe/Andorra': 'W. Europe Standard Time', + 'Europe/Athens': 'GTB Standard Time', + 'Europe/Belgrade': 'Central Europe Standard Time', + 'Europe/Berlin': 'W. Europe Standard Time', + 'Europe/Bratislava': 'Central Europe Standard Time', + 'Europe/Brussels': 'Romance Standard Time', + 'Europe/Bucharest': 'GTB Standard Time', + 'Europe/Budapest': 'Central Europe Standard Time', + 'Europe/Busingen': 'W. Europe Standard Time', + 'Europe/Chisinau': 'E. Europe Standard Time', + 'Europe/Copenhagen': 'Romance Standard Time', + 'Europe/Dublin': 'GMT Standard Time', + 'Europe/Gibraltar': 'W. Europe Standard Time', + 'Europe/Guernsey': 'GMT Standard Time', + 'Europe/Helsinki': 'FLE Standard Time', + 'Europe/Isle_of_Man': 'GMT Standard Time', + 'Europe/Istanbul': 'Turkey Standard Time', + 'Europe/Jersey': 'GMT Standard Time', + 'Europe/Kaliningrad': 'Kaliningrad Standard Time', + 'Europe/Kiev': 'FLE Standard Time', + 'Europe/Lisbon': 'GMT Standard Time', + 'Europe/Ljubljana': 'Central Europe Standard Time', + 'Europe/London': 'GMT Standard Time', + 'Europe/Luxembourg': 'W. Europe Standard Time', + 'Europe/Madrid': 'Romance Standard Time', + 'Europe/Malta': 'W. Europe Standard Time', + 'Europe/Mariehamn': 'FLE Standard Time', + 'Europe/Minsk': 'Belarus Standard Time', + 'Europe/Monaco': 'W. Europe Standard Time', + 'Europe/Moscow': 'Russian Standard Time', + 'Europe/Oslo': 'W. Europe Standard Time', + 'Europe/Paris': 'Romance Standard Time', + 'Europe/Podgorica': 'Central Europe Standard Time', + 'Europe/Prague': 'Central Europe Standard Time', + 'Europe/Riga': 'FLE Standard Time', + 'Europe/Rome': 'W. Europe Standard Time', + 'Europe/Samara': 'Russia Time Zone 3', + 'Europe/San_Marino': 'W. Europe Standard Time', + 'Europe/Sarajevo': 'Central European Standard Time', + 'Europe/Simferopol': 'Russian Standard Time', + 'Europe/Skopje': 'Central European Standard Time', + 'Europe/Sofia': 'FLE Standard Time', + 'Europe/Stockholm': 'W. Europe Standard Time', + 'Europe/Tallinn': 'FLE Standard Time', + 'Europe/Tirane': 'Central Europe Standard Time', + 'Europe/Uzhgorod': 'FLE Standard Time', + 'Europe/Vaduz': 'W. Europe Standard Time', + 'Europe/Vatican': 'W. Europe Standard Time', + 'Europe/Vienna': 'W. Europe Standard Time', + 'Europe/Vilnius': 'FLE Standard Time', + 'Europe/Volgograd': 'Russian Standard Time', + 'Europe/Warsaw': 'Central European Standard Time', + 'Europe/Zagreb': 'Central European Standard Time', + 'Europe/Zaporozhye': 'FLE Standard Time', + 'Europe/Zurich': 'W. Europe Standard Time', + 'Indian/Antananarivo': 'E. Africa Standard Time', + 'Indian/Chagos': 'Central Asia Standard Time', + 'Indian/Christmas': 'SE Asia Standard Time', + 'Indian/Cocos': 'Myanmar Standard Time', + 'Indian/Comoro': 'E. Africa Standard Time', + 'Indian/Kerguelen': 'West Asia Standard Time', + 'Indian/Mahe': 'Mauritius Standard Time', + 'Indian/Maldives': 'West Asia Standard Time', + 'Indian/Mauritius': 'Mauritius Standard Time', + 'Indian/Mayotte': 'E. Africa Standard Time', + 'Indian/Reunion': 'Mauritius Standard Time', + 'MST7MDT': 'Mountain Standard Time', + 'PST8PDT': 'Pacific Standard Time', + 'Pacific/Apia': 'Samoa Standard Time', + 'Pacific/Auckland': 'New Zealand Standard Time', + 'Pacific/Bougainville': 'Central Pacific Standard Time', + 'Pacific/Easter': 'SA Pacific Standard Time', + 'Pacific/Efate': 'Central Pacific Standard Time', + 'Pacific/Enderbury': 'Tonga Standard Time', + 'Pacific/Fakaofo': 'Tonga Standard Time', + 'Pacific/Fiji': 'Fiji Standard Time', + 'Pacific/Funafuti': 'UTC+12', + 'Pacific/Galapagos': 'Central America Standard Time', + 'Pacific/Guadalcanal': 'Central Pacific Standard Time', + 'Pacific/Guam': 'West Pacific Standard Time', + 'Pacific/Honolulu': 'Hawaiian Standard Time', + 'Pacific/Johnston': 'Hawaiian Standard Time', + 'Pacific/Kiritimati': 'Line Islands Standard Time', + 'Pacific/Kosrae': 'Central Pacific Standard Time', + 'Pacific/Kwajalein': 'UTC+12', + 'Pacific/Majuro': 'UTC+12', + 'Pacific/Midway': 'UTC-11', + 'Pacific/Nauru': 'UTC+12', + 'Pacific/Niue': 'UTC-11', + 'Pacific/Norfolk': 'Central Pacific Standard Time', + 'Pacific/Noumea': 'Central Pacific Standard Time', + 'Pacific/Pago_Pago': 'UTC-11', + 'Pacific/Palau': 'Tokyo Standard Time', + 'Pacific/Ponape': 'Central Pacific Standard Time', + 'Pacific/Port_Moresby': 'West Pacific Standard Time', + 'Pacific/Rarotonga': 'Hawaiian Standard Time', + 'Pacific/Saipan': 'West Pacific Standard Time', + 'Pacific/Tahiti': 'Hawaiian Standard Time', + 'Pacific/Tarawa': 'UTC+12', + 'Pacific/Tongatapu': 'Tonga Standard Time', + 'Pacific/Truk': 'West Pacific Standard Time', + 'Pacific/Wake': 'UTC+12', + 'Pacific/Wallis': 'UTC+12'} diff --git a/wakatime/packages/pytz/tests/test_docs.py b/wakatime/packages/pytz/tests/test_docs.py deleted file mode 100644 index 4302dca..0000000 --- a/wakatime/packages/pytz/tests/test_docs.py +++ /dev/null @@ -1,36 +0,0 @@ -# -*- coding: ascii -*- - -from doctest import DocTestSuite -import unittest, os, os.path, sys -import warnings - -# We test the documentation this way instead of using DocFileSuite so -# we can run the tests under Python 2.3 -def test_README(): - pass - -this_dir = os.path.dirname(__file__) -locs = [ - os.path.join(this_dir, os.pardir, 'README.txt'), - os.path.join(this_dir, os.pardir, os.pardir, 'README.txt'), - ] -for loc in locs: - if os.path.exists(loc): - test_README.__doc__ = open(loc).read() - break -if test_README.__doc__ is None: - raise RuntimeError('README.txt not found') - - -def test_suite(): - "For the Z3 test runner" - return DocTestSuite() - - -if __name__ == '__main__': - sys.path.insert(0, os.path.abspath(os.path.join( - this_dir, os.pardir, os.pardir - ))) - unittest.main(defaultTest='test_suite') - - diff --git a/wakatime/packages/pytz/tests/test_tzinfo.py b/wakatime/packages/pytz/tests/test_tzinfo.py deleted file mode 100644 index c97b530..0000000 --- a/wakatime/packages/pytz/tests/test_tzinfo.py +++ /dev/null @@ -1,813 +0,0 @@ -# -*- coding: ascii -*- - -import sys, os, os.path -import unittest, doctest -try: - import cPickle as pickle -except ImportError: - import pickle -from datetime import datetime, time, timedelta, tzinfo -import warnings - -if __name__ == '__main__': - # Only munge path if invoked as a script. Testrunners should have setup - # the paths already - sys.path.insert(0, os.path.abspath(os.path.join(os.pardir, os.pardir))) - -import pytz -from pytz import reference -from pytz.tzfile import _byte_string -from pytz.tzinfo import DstTzInfo, StaticTzInfo - -# I test for expected version to ensure the correct version of pytz is -# actually being tested. -EXPECTED_VERSION='2013d' - -fmt = '%Y-%m-%d %H:%M:%S %Z%z' - -NOTIME = timedelta(0) - -# GMT is a tzinfo.StaticTzInfo--the class we primarily want to test--while -# UTC is reference implementation. They both have the same timezone meaning. -UTC = pytz.timezone('UTC') -GMT = pytz.timezone('GMT') -assert isinstance(GMT, StaticTzInfo), 'GMT is no longer a StaticTzInfo' - -def prettydt(dt): - """datetime as a string using a known format. - - We don't use strftime as it doesn't handle years earlier than 1900 - per http://bugs.python.org/issue1777412 - """ - if dt.utcoffset() >= timedelta(0): - offset = '+%s' % (dt.utcoffset(),) - else: - offset = '-%s' % (-1 * dt.utcoffset(),) - return '%04d-%02d-%02d %02d:%02d:%02d %s %s' % ( - dt.year, dt.month, dt.day, - dt.hour, dt.minute, dt.second, - dt.tzname(), offset) - - -try: - unicode -except NameError: - # Python 3.x doesn't have unicode(), making writing code - # for Python 2.3 and Python 3.x a pain. - unicode = str - - -class BasicTest(unittest.TestCase): - - def testVersion(self): - # Ensuring the correct version of pytz has been loaded - self.assertEqual(EXPECTED_VERSION, pytz.__version__, - 'Incorrect pytz version loaded. Import path is stuffed ' - 'or this test needs updating. (Wanted %s, got %s)' - % (EXPECTED_VERSION, pytz.__version__) - ) - - def testGMT(self): - now = datetime.now(tz=GMT) - self.assertTrue(now.utcoffset() == NOTIME) - self.assertTrue(now.dst() == NOTIME) - self.assertTrue(now.timetuple() == now.utctimetuple()) - self.assertTrue(now==now.replace(tzinfo=UTC)) - - def testReferenceUTC(self): - now = datetime.now(tz=UTC) - self.assertTrue(now.utcoffset() == NOTIME) - self.assertTrue(now.dst() == NOTIME) - self.assertTrue(now.timetuple() == now.utctimetuple()) - - def testUnknownOffsets(self): - # This tzinfo behavior is required to make - # datetime.time.{utcoffset, dst, tzname} work as documented. - - dst_tz = pytz.timezone('US/Eastern') - - # This information is not known when we don't have a date, - # so return None per API. - self.assertTrue(dst_tz.utcoffset(None) is None) - self.assertTrue(dst_tz.dst(None) is None) - # We don't know the abbreviation, but this is still a valid - # tzname per the Python documentation. - self.assertEqual(dst_tz.tzname(None), 'US/Eastern') - - def clearCache(self): - pytz._tzinfo_cache.clear() - - def testUnicodeTimezone(self): - # We need to ensure that cold lookups work for both Unicode - # and traditional strings, and that the desired singleton is - # returned. - self.clearCache() - eastern = pytz.timezone(unicode('US/Eastern')) - self.assertTrue(eastern is pytz.timezone('US/Eastern')) - - self.clearCache() - eastern = pytz.timezone('US/Eastern') - self.assertTrue(eastern is pytz.timezone(unicode('US/Eastern'))) - - -class PicklingTest(unittest.TestCase): - - def _roundtrip_tzinfo(self, tz): - p = pickle.dumps(tz) - unpickled_tz = pickle.loads(p) - self.assertTrue(tz is unpickled_tz, '%s did not roundtrip' % tz.zone) - - def _roundtrip_datetime(self, dt): - # Ensure that the tzinfo attached to a datetime instance - # is identical to the one returned. This is important for - # DST timezones, as some state is stored in the tzinfo. - tz = dt.tzinfo - p = pickle.dumps(dt) - unpickled_dt = pickle.loads(p) - unpickled_tz = unpickled_dt.tzinfo - self.assertTrue(tz is unpickled_tz, '%s did not roundtrip' % tz.zone) - - def testDst(self): - tz = pytz.timezone('Europe/Amsterdam') - dt = datetime(2004, 2, 1, 0, 0, 0) - - for localized_tz in tz._tzinfos.values(): - self._roundtrip_tzinfo(localized_tz) - self._roundtrip_datetime(dt.replace(tzinfo=localized_tz)) - - def testRoundtrip(self): - dt = datetime(2004, 2, 1, 0, 0, 0) - for zone in pytz.all_timezones: - tz = pytz.timezone(zone) - self._roundtrip_tzinfo(tz) - - def testDatabaseFixes(self): - # Hack the pickle to make it refer to a timezone abbreviation - # that does not match anything. The unpickler should be able - # to repair this case - tz = pytz.timezone('Australia/Melbourne') - p = pickle.dumps(tz) - tzname = tz._tzname - hacked_p = p.replace(_byte_string(tzname), _byte_string('???')) - self.assertNotEqual(p, hacked_p) - unpickled_tz = pickle.loads(hacked_p) - self.assertTrue(tz is unpickled_tz) - - # Simulate a database correction. In this case, the incorrect - # data will continue to be used. - p = pickle.dumps(tz) - new_utcoffset = tz._utcoffset.seconds + 42 - - # Python 3 introduced a new pickle protocol where numbers are stored in - # hexadecimal representation. Here we extract the pickle - # representation of the number for the current Python version. - old_pickle_pattern = pickle.dumps(tz._utcoffset.seconds)[3:-1] - new_pickle_pattern = pickle.dumps(new_utcoffset)[3:-1] - hacked_p = p.replace(old_pickle_pattern, new_pickle_pattern) - - self.assertNotEqual(p, hacked_p) - unpickled_tz = pickle.loads(hacked_p) - self.assertEqual(unpickled_tz._utcoffset.seconds, new_utcoffset) - self.assertTrue(tz is not unpickled_tz) - - def testOldPickles(self): - # Ensure that applications serializing pytz instances as pickles - # have no troubles upgrading to a new pytz release. These pickles - # where created with pytz2006j - east1 = pickle.loads(_byte_string( - "cpytz\n_p\np1\n(S'US/Eastern'\np2\nI-18000\n" - "I0\nS'EST'\np3\ntRp4\n." - )) - east2 = pytz.timezone('US/Eastern') - self.assertTrue(east1 is east2) - - # Confirm changes in name munging between 2006j and 2007c cause - # no problems. - pap1 = pickle.loads(_byte_string( - "cpytz\n_p\np1\n(S'America/Port_minus_au_minus_Prince'" - "\np2\nI-17340\nI0\nS'PPMT'\np3\ntRp4\n.")) - pap2 = pytz.timezone('America/Port-au-Prince') - self.assertTrue(pap1 is pap2) - - gmt1 = pickle.loads(_byte_string( - "cpytz\n_p\np1\n(S'Etc/GMT_plus_10'\np2\ntRp3\n.")) - gmt2 = pytz.timezone('Etc/GMT+10') - self.assertTrue(gmt1 is gmt2) - - -class USEasternDSTStartTestCase(unittest.TestCase): - tzinfo = pytz.timezone('US/Eastern') - - # 24 hours before DST changeover - transition_time = datetime(2002, 4, 7, 7, 0, 0, tzinfo=UTC) - - # Increase for 'flexible' DST transitions due to 1 minute granularity - # of Python's datetime library - instant = timedelta(seconds=1) - - # before transition - before = { - 'tzname': 'EST', - 'utcoffset': timedelta(hours = -5), - 'dst': timedelta(hours = 0), - } - - # after transition - after = { - 'tzname': 'EDT', - 'utcoffset': timedelta(hours = -4), - 'dst': timedelta(hours = 1), - } - - def _test_tzname(self, utc_dt, wanted): - tzname = wanted['tzname'] - dt = utc_dt.astimezone(self.tzinfo) - self.assertEqual(dt.tzname(), tzname, - 'Expected %s as tzname for %s. Got %s' % ( - tzname, str(utc_dt), dt.tzname() - ) - ) - - def _test_utcoffset(self, utc_dt, wanted): - utcoffset = wanted['utcoffset'] - dt = utc_dt.astimezone(self.tzinfo) - self.assertEqual( - dt.utcoffset(), wanted['utcoffset'], - 'Expected %s as utcoffset for %s. Got %s' % ( - utcoffset, utc_dt, dt.utcoffset() - ) - ) - - def _test_dst(self, utc_dt, wanted): - dst = wanted['dst'] - dt = utc_dt.astimezone(self.tzinfo) - self.assertEqual(dt.dst(),dst, - 'Expected %s as dst for %s. Got %s' % ( - dst, utc_dt, dt.dst() - ) - ) - - def test_arithmetic(self): - utc_dt = self.transition_time - - for days in range(-420, 720, 20): - delta = timedelta(days=days) - - # Make sure we can get back where we started - dt = utc_dt.astimezone(self.tzinfo) - dt2 = dt + delta - dt2 = dt2 - delta - self.assertEqual(dt, dt2) - - # Make sure arithmetic crossing DST boundaries ends - # up in the correct timezone after normalization - utc_plus_delta = (utc_dt + delta).astimezone(self.tzinfo) - local_plus_delta = self.tzinfo.normalize(dt + delta) - self.assertEqual( - prettydt(utc_plus_delta), - prettydt(local_plus_delta), - 'Incorrect result for delta==%d days. Wanted %r. Got %r'%( - days, - prettydt(utc_plus_delta), - prettydt(local_plus_delta), - ) - ) - - def _test_all(self, utc_dt, wanted): - self._test_utcoffset(utc_dt, wanted) - self._test_tzname(utc_dt, wanted) - self._test_dst(utc_dt, wanted) - - def testDayBefore(self): - self._test_all( - self.transition_time - timedelta(days=1), self.before - ) - - def testTwoHoursBefore(self): - self._test_all( - self.transition_time - timedelta(hours=2), self.before - ) - - def testHourBefore(self): - self._test_all( - self.transition_time - timedelta(hours=1), self.before - ) - - def testInstantBefore(self): - self._test_all( - self.transition_time - self.instant, self.before - ) - - def testTransition(self): - self._test_all( - self.transition_time, self.after - ) - - def testInstantAfter(self): - self._test_all( - self.transition_time + self.instant, self.after - ) - - def testHourAfter(self): - self._test_all( - self.transition_time + timedelta(hours=1), self.after - ) - - def testTwoHoursAfter(self): - self._test_all( - self.transition_time + timedelta(hours=1), self.after - ) - - def testDayAfter(self): - self._test_all( - self.transition_time + timedelta(days=1), self.after - ) - - -class USEasternDSTEndTestCase(USEasternDSTStartTestCase): - tzinfo = pytz.timezone('US/Eastern') - transition_time = datetime(2002, 10, 27, 6, 0, 0, tzinfo=UTC) - before = { - 'tzname': 'EDT', - 'utcoffset': timedelta(hours = -4), - 'dst': timedelta(hours = 1), - } - after = { - 'tzname': 'EST', - 'utcoffset': timedelta(hours = -5), - 'dst': timedelta(hours = 0), - } - - -class USEasternEPTStartTestCase(USEasternDSTStartTestCase): - transition_time = datetime(1945, 8, 14, 23, 0, 0, tzinfo=UTC) - before = { - 'tzname': 'EWT', - 'utcoffset': timedelta(hours = -4), - 'dst': timedelta(hours = 1), - } - after = { - 'tzname': 'EPT', - 'utcoffset': timedelta(hours = -4), - 'dst': timedelta(hours = 1), - } - - -class USEasternEPTEndTestCase(USEasternDSTStartTestCase): - transition_time = datetime(1945, 9, 30, 6, 0, 0, tzinfo=UTC) - before = { - 'tzname': 'EPT', - 'utcoffset': timedelta(hours = -4), - 'dst': timedelta(hours = 1), - } - after = { - 'tzname': 'EST', - 'utcoffset': timedelta(hours = -5), - 'dst': timedelta(hours = 0), - } - - -class WarsawWMTEndTestCase(USEasternDSTStartTestCase): - # In 1915, Warsaw changed from Warsaw to Central European time. - # This involved the clocks being set backwards, causing a end-of-DST - # like situation without DST being involved. - tzinfo = pytz.timezone('Europe/Warsaw') - transition_time = datetime(1915, 8, 4, 22, 36, 0, tzinfo=UTC) - before = { - 'tzname': 'WMT', - 'utcoffset': timedelta(hours=1, minutes=24), - 'dst': timedelta(0), - } - after = { - 'tzname': 'CET', - 'utcoffset': timedelta(hours=1), - 'dst': timedelta(0), - } - - -class VilniusWMTEndTestCase(USEasternDSTStartTestCase): - # At the end of 1916, Vilnius changed timezones putting its clock - # forward by 11 minutes 35 seconds. Neither timezone was in DST mode. - tzinfo = pytz.timezone('Europe/Vilnius') - instant = timedelta(seconds=31) - transition_time = datetime(1916, 12, 31, 22, 36, 00, tzinfo=UTC) - before = { - 'tzname': 'WMT', - 'utcoffset': timedelta(hours=1, minutes=24), - 'dst': timedelta(0), - } - after = { - 'tzname': 'KMT', - 'utcoffset': timedelta(hours=1, minutes=36), # Really 1:35:36 - 'dst': timedelta(0), - } - - -class VilniusCESTStartTestCase(USEasternDSTStartTestCase): - # In 1941, Vilnius changed from MSG to CEST, switching to summer - # time while simultaneously reducing its UTC offset by two hours, - # causing the clocks to go backwards for this summer time - # switchover. - tzinfo = pytz.timezone('Europe/Vilnius') - transition_time = datetime(1941, 6, 23, 21, 00, 00, tzinfo=UTC) - before = { - 'tzname': 'MSK', - 'utcoffset': timedelta(hours=3), - 'dst': timedelta(0), - } - after = { - 'tzname': 'CEST', - 'utcoffset': timedelta(hours=2), - 'dst': timedelta(hours=1), - } - - -class LondonHistoryStartTestCase(USEasternDSTStartTestCase): - # The first known timezone transition in London was in 1847 when - # clocks where synchronized to GMT. However, we currently only - # understand v1 format tzfile(5) files which does handle years - # this far in the past, so our earliest known transition is in - # 1916. - tzinfo = pytz.timezone('Europe/London') - # transition_time = datetime(1847, 12, 1, 1, 15, 00, tzinfo=UTC) - # before = { - # 'tzname': 'LMT', - # 'utcoffset': timedelta(minutes=-75), - # 'dst': timedelta(0), - # } - # after = { - # 'tzname': 'GMT', - # 'utcoffset': timedelta(0), - # 'dst': timedelta(0), - # } - transition_time = datetime(1916, 5, 21, 2, 00, 00, tzinfo=UTC) - before = { - 'tzname': 'GMT', - 'utcoffset': timedelta(0), - 'dst': timedelta(0), - } - after = { - 'tzname': 'BST', - 'utcoffset': timedelta(hours=1), - 'dst': timedelta(hours=1), - } - - -class LondonHistoryEndTestCase(USEasternDSTStartTestCase): - # Timezone switchovers are projected into the future, even - # though no official statements exist or could be believed even - # if they did exist. We currently only check the last known - # transition in 2037, as we are still using v1 format tzfile(5) - # files. - tzinfo = pytz.timezone('Europe/London') - # transition_time = datetime(2499, 10, 25, 1, 0, 0, tzinfo=UTC) - transition_time = datetime(2037, 10, 25, 1, 0, 0, tzinfo=UTC) - before = { - 'tzname': 'BST', - 'utcoffset': timedelta(hours=1), - 'dst': timedelta(hours=1), - } - after = { - 'tzname': 'GMT', - 'utcoffset': timedelta(0), - 'dst': timedelta(0), - } - - -class NoumeaHistoryStartTestCase(USEasternDSTStartTestCase): - # Noumea adopted a whole hour offset in 1912. Previously - # it was 11 hours, 5 minutes and 48 seconds off UTC. However, - # due to limitations of the Python datetime library, we need - # to round that to 11 hours 6 minutes. - tzinfo = pytz.timezone('Pacific/Noumea') - transition_time = datetime(1912, 1, 12, 12, 54, 12, tzinfo=UTC) - before = { - 'tzname': 'LMT', - 'utcoffset': timedelta(hours=11, minutes=6), - 'dst': timedelta(0), - } - after = { - 'tzname': 'NCT', - 'utcoffset': timedelta(hours=11), - 'dst': timedelta(0), - } - - -class NoumeaDSTEndTestCase(USEasternDSTStartTestCase): - # Noumea dropped DST in 1997. - tzinfo = pytz.timezone('Pacific/Noumea') - transition_time = datetime(1997, 3, 1, 15, 00, 00, tzinfo=UTC) - before = { - 'tzname': 'NCST', - 'utcoffset': timedelta(hours=12), - 'dst': timedelta(hours=1), - } - after = { - 'tzname': 'NCT', - 'utcoffset': timedelta(hours=11), - 'dst': timedelta(0), - } - - -class NoumeaNoMoreDSTTestCase(NoumeaDSTEndTestCase): - # Noumea dropped DST in 1997. Here we test that it stops occuring. - transition_time = ( - NoumeaDSTEndTestCase.transition_time + timedelta(days=365*10)) - before = NoumeaDSTEndTestCase.after - after = NoumeaDSTEndTestCase.after - - -class TahitiTestCase(USEasternDSTStartTestCase): - # Tahiti has had a single transition in its history. - tzinfo = pytz.timezone('Pacific/Tahiti') - transition_time = datetime(1912, 10, 1, 9, 58, 16, tzinfo=UTC) - before = { - 'tzname': 'LMT', - 'utcoffset': timedelta(hours=-9, minutes=-58), - 'dst': timedelta(0), - } - after = { - 'tzname': 'TAHT', - 'utcoffset': timedelta(hours=-10), - 'dst': timedelta(0), - } - - -class SamoaInternationalDateLineChange(USEasternDSTStartTestCase): - # At the end of 2011, Samoa will switch from being east of the - # international dateline to the west. There will be no Dec 30th - # 2011 and it will switch from UTC-10 to UTC+14. - tzinfo = pytz.timezone('Pacific/Apia') - transition_time = datetime(2011, 12, 30, 10, 0, 0, tzinfo=UTC) - before = { - 'tzname': 'WSDT', - 'utcoffset': timedelta(hours=-10), - 'dst': timedelta(hours=1), - } - after = { - 'tzname': 'WSDT', - 'utcoffset': timedelta(hours=14), - 'dst': timedelta(hours=1), - } - - -class ReferenceUSEasternDSTStartTestCase(USEasternDSTStartTestCase): - tzinfo = reference.Eastern - def test_arithmetic(self): - # Reference implementation cannot handle this - pass - - -class ReferenceUSEasternDSTEndTestCase(USEasternDSTEndTestCase): - tzinfo = reference.Eastern - - def testHourBefore(self): - # Python's datetime library has a bug, where the hour before - # a daylight savings transition is one hour out. For example, - # at the end of US/Eastern daylight savings time, 01:00 EST - # occurs twice (once at 05:00 UTC and once at 06:00 UTC), - # whereas the first should actually be 01:00 EDT. - # Note that this bug is by design - by accepting this ambiguity - # for one hour one hour per year, an is_dst flag on datetime.time - # became unnecessary. - self._test_all( - self.transition_time - timedelta(hours=1), self.after - ) - - def testInstantBefore(self): - self._test_all( - self.transition_time - timedelta(seconds=1), self.after - ) - - def test_arithmetic(self): - # Reference implementation cannot handle this - pass - - -class LocalTestCase(unittest.TestCase): - def testLocalize(self): - loc_tz = pytz.timezone('Europe/Amsterdam') - - loc_time = loc_tz.localize(datetime(1930, 5, 10, 0, 0, 0)) - # Actually +00:19:32, but Python datetime rounds this - self.assertEqual(loc_time.strftime('%Z%z'), 'AMT+0020') - - loc_time = loc_tz.localize(datetime(1930, 5, 20, 0, 0, 0)) - # Actually +00:19:32, but Python datetime rounds this - self.assertEqual(loc_time.strftime('%Z%z'), 'NST+0120') - - loc_time = loc_tz.localize(datetime(1940, 5, 10, 0, 0, 0)) - self.assertEqual(loc_time.strftime('%Z%z'), 'NET+0020') - - loc_time = loc_tz.localize(datetime(1940, 5, 20, 0, 0, 0)) - self.assertEqual(loc_time.strftime('%Z%z'), 'CEST+0200') - - loc_time = loc_tz.localize(datetime(2004, 2, 1, 0, 0, 0)) - self.assertEqual(loc_time.strftime('%Z%z'), 'CET+0100') - - loc_time = loc_tz.localize(datetime(2004, 4, 1, 0, 0, 0)) - self.assertEqual(loc_time.strftime('%Z%z'), 'CEST+0200') - - tz = pytz.timezone('Europe/Amsterdam') - loc_time = loc_tz.localize(datetime(1943, 3, 29, 1, 59, 59)) - self.assertEqual(loc_time.strftime('%Z%z'), 'CET+0100') - - - # Switch to US - loc_tz = pytz.timezone('US/Eastern') - - # End of DST ambiguity check - loc_time = loc_tz.localize(datetime(1918, 10, 27, 1, 59, 59), is_dst=1) - self.assertEqual(loc_time.strftime('%Z%z'), 'EDT-0400') - - loc_time = loc_tz.localize(datetime(1918, 10, 27, 1, 59, 59), is_dst=0) - self.assertEqual(loc_time.strftime('%Z%z'), 'EST-0500') - - self.assertRaises(pytz.AmbiguousTimeError, - loc_tz.localize, datetime(1918, 10, 27, 1, 59, 59), is_dst=None - ) - - # Start of DST non-existent times - loc_time = loc_tz.localize(datetime(1918, 3, 31, 2, 0, 0), is_dst=0) - self.assertEqual(loc_time.strftime('%Z%z'), 'EST-0500') - - loc_time = loc_tz.localize(datetime(1918, 3, 31, 2, 0, 0), is_dst=1) - self.assertEqual(loc_time.strftime('%Z%z'), 'EDT-0400') - - self.assertRaises(pytz.NonExistentTimeError, - loc_tz.localize, datetime(1918, 3, 31, 2, 0, 0), is_dst=None - ) - - # Weird changes - war time and peace time both is_dst==True - - loc_time = loc_tz.localize(datetime(1942, 2, 9, 3, 0, 0)) - self.assertEqual(loc_time.strftime('%Z%z'), 'EWT-0400') - - loc_time = loc_tz.localize(datetime(1945, 8, 14, 19, 0, 0)) - self.assertEqual(loc_time.strftime('%Z%z'), 'EPT-0400') - - loc_time = loc_tz.localize(datetime(1945, 9, 30, 1, 0, 0), is_dst=1) - self.assertEqual(loc_time.strftime('%Z%z'), 'EPT-0400') - - loc_time = loc_tz.localize(datetime(1945, 9, 30, 1, 0, 0), is_dst=0) - self.assertEqual(loc_time.strftime('%Z%z'), 'EST-0500') - - def testNormalize(self): - tz = pytz.timezone('US/Eastern') - dt = datetime(2004, 4, 4, 7, 0, 0, tzinfo=UTC).astimezone(tz) - dt2 = dt - timedelta(minutes=10) - self.assertEqual( - dt2.strftime('%Y-%m-%d %H:%M:%S %Z%z'), - '2004-04-04 02:50:00 EDT-0400' - ) - - dt2 = tz.normalize(dt2) - self.assertEqual( - dt2.strftime('%Y-%m-%d %H:%M:%S %Z%z'), - '2004-04-04 01:50:00 EST-0500' - ) - - def testPartialMinuteOffsets(self): - # utcoffset in Amsterdam was not a whole minute until 1937 - # However, we fudge this by rounding them, as the Python - # datetime library - tz = pytz.timezone('Europe/Amsterdam') - utc_dt = datetime(1914, 1, 1, 13, 40, 28, tzinfo=UTC) # correct - utc_dt = utc_dt.replace(second=0) # But we need to fudge it - loc_dt = utc_dt.astimezone(tz) - self.assertEqual( - loc_dt.strftime('%Y-%m-%d %H:%M:%S %Z%z'), - '1914-01-01 14:00:00 AMT+0020' - ) - - # And get back... - utc_dt = loc_dt.astimezone(UTC) - self.assertEqual( - utc_dt.strftime('%Y-%m-%d %H:%M:%S %Z%z'), - '1914-01-01 13:40:00 UTC+0000' - ) - - def no_testCreateLocaltime(self): - # It would be nice if this worked, but it doesn't. - tz = pytz.timezone('Europe/Amsterdam') - dt = datetime(2004, 10, 31, 2, 0, 0, tzinfo=tz) - self.assertEqual( - dt.strftime(fmt), - '2004-10-31 02:00:00 CET+0100' - ) - - -class CommonTimezonesTestCase(unittest.TestCase): - def test_bratislava(self): - # Bratislava is the default timezone for Slovakia, but our - # heuristics where not adding it to common_timezones. Ideally, - # common_timezones should be populated from zone.tab at runtime, - # but I'm hesitant to pay the startup cost as loading the list - # on demand whilst remaining backwards compatible seems - # difficult. - self.assertTrue('Europe/Bratislava' in pytz.common_timezones) - self.assertTrue('Europe/Bratislava' in pytz.common_timezones_set) - - def test_us_eastern(self): - self.assertTrue('US/Eastern' in pytz.common_timezones) - self.assertTrue('US/Eastern' in pytz.common_timezones_set) - - def test_belfast(self): - # Belfast uses London time. - self.assertTrue('Europe/Belfast' in pytz.all_timezones_set) - self.assertFalse('Europe/Belfast' in pytz.common_timezones) - self.assertFalse('Europe/Belfast' in pytz.common_timezones_set) - - -class BaseTzInfoTestCase: - '''Ensure UTC, StaticTzInfo and DstTzInfo work consistently. - - These tests are run for each type of tzinfo. - ''' - tz = None # override - tz_class = None # override - - def test_expectedclass(self): - self.assertTrue(isinstance(self.tz, self.tz_class)) - - def test_fromutc(self): - # naive datetime. - dt1 = datetime(2011, 10, 31) - - # localized datetime, same timezone. - dt2 = self.tz.localize(dt1) - - # Both should give the same results. Note that the standard - # Python tzinfo.fromutc() only supports the second. - for dt in [dt1, dt2]: - loc_dt = self.tz.fromutc(dt) - loc_dt2 = pytz.utc.localize(dt1).astimezone(self.tz) - self.assertEqual(loc_dt, loc_dt2) - - # localized datetime, different timezone. - new_tz = pytz.timezone('Europe/Paris') - self.assertTrue(self.tz is not new_tz) - dt3 = new_tz.localize(dt1) - self.assertRaises(ValueError, self.tz.fromutc, dt3) - - def test_normalize(self): - other_tz = pytz.timezone('Europe/Paris') - self.assertTrue(self.tz is not other_tz) - - dt = datetime(2012, 3, 26, 12, 0) - other_dt = other_tz.localize(dt) - - local_dt = self.tz.normalize(other_dt) - - self.assertTrue(local_dt.tzinfo is not other_dt.tzinfo) - self.assertNotEqual( - local_dt.replace(tzinfo=None), other_dt.replace(tzinfo=None)) - - def test_astimezone(self): - other_tz = pytz.timezone('Europe/Paris') - self.assertTrue(self.tz is not other_tz) - - dt = datetime(2012, 3, 26, 12, 0) - other_dt = other_tz.localize(dt) - - local_dt = other_dt.astimezone(self.tz) - - self.assertTrue(local_dt.tzinfo is not other_dt.tzinfo) - self.assertNotEqual( - local_dt.replace(tzinfo=None), other_dt.replace(tzinfo=None)) - - -class OptimizedUTCTestCase(unittest.TestCase, BaseTzInfoTestCase): - tz = pytz.utc - tz_class = tz.__class__ - - -class LegacyUTCTestCase(unittest.TestCase, BaseTzInfoTestCase): - # Deprecated timezone, but useful for comparison tests. - tz = pytz.timezone('Etc/UTC') - tz_class = StaticTzInfo - - -class StaticTzInfoTestCase(unittest.TestCase, BaseTzInfoTestCase): - tz = pytz.timezone('GMT') - tz_class = StaticTzInfo - - -class DstTzInfoTestCase(unittest.TestCase, BaseTzInfoTestCase): - tz = pytz.timezone('Australia/Melbourne') - tz_class = DstTzInfo - - -def test_suite(): - suite = unittest.TestSuite() - suite.addTest(doctest.DocTestSuite('pytz')) - suite.addTest(doctest.DocTestSuite('pytz.tzinfo')) - import test_tzinfo - suite.addTest(unittest.defaultTestLoader.loadTestsFromModule(test_tzinfo)) - return suite - - -if __name__ == '__main__': - warnings.simplefilter("error") # Warnings should be fatal in tests. - unittest.main(defaultTest='test_suite') - diff --git a/wakatime/packages/pytz3/tests/test_docs.py b/wakatime/packages/pytz3/tests/test_docs.py deleted file mode 100644 index 4302dca..0000000 --- a/wakatime/packages/pytz3/tests/test_docs.py +++ /dev/null @@ -1,36 +0,0 @@ -# -*- coding: ascii -*- - -from doctest import DocTestSuite -import unittest, os, os.path, sys -import warnings - -# We test the documentation this way instead of using DocFileSuite so -# we can run the tests under Python 2.3 -def test_README(): - pass - -this_dir = os.path.dirname(__file__) -locs = [ - os.path.join(this_dir, os.pardir, 'README.txt'), - os.path.join(this_dir, os.pardir, os.pardir, 'README.txt'), - ] -for loc in locs: - if os.path.exists(loc): - test_README.__doc__ = open(loc).read() - break -if test_README.__doc__ is None: - raise RuntimeError('README.txt not found') - - -def test_suite(): - "For the Z3 test runner" - return DocTestSuite() - - -if __name__ == '__main__': - sys.path.insert(0, os.path.abspath(os.path.join( - this_dir, os.pardir, os.pardir - ))) - unittest.main(defaultTest='test_suite') - - diff --git a/wakatime/packages/pytz3/tests/test_tzinfo.py b/wakatime/packages/pytz3/tests/test_tzinfo.py deleted file mode 100644 index 5428bb4..0000000 --- a/wakatime/packages/pytz3/tests/test_tzinfo.py +++ /dev/null @@ -1,813 +0,0 @@ -# -*- coding: ascii -*- - -import sys, os, os.path -import unittest, doctest -try: - import pickle as pickle -except ImportError: - import pickle -from datetime import datetime, time, timedelta, tzinfo -import warnings - -if __name__ == '__main__': - # Only munge path if invoked as a script. Testrunners should have setup - # the paths already - sys.path.insert(0, os.path.abspath(os.path.join(os.pardir, os.pardir))) - -import pytz -from pytz import reference -from pytz.tzfile import _byte_string -from pytz.tzinfo import DstTzInfo, StaticTzInfo - -# I test for expected version to ensure the correct version of pytz is -# actually being tested. -EXPECTED_VERSION='2013d' - -fmt = '%Y-%m-%d %H:%M:%S %Z%z' - -NOTIME = timedelta(0) - -# GMT is a tzinfo.StaticTzInfo--the class we primarily want to test--while -# UTC is reference implementation. They both have the same timezone meaning. -UTC = pytz.timezone('UTC') -GMT = pytz.timezone('GMT') -assert isinstance(GMT, StaticTzInfo), 'GMT is no longer a StaticTzInfo' - -def prettydt(dt): - """datetime as a string using a known format. - - We don't use strftime as it doesn't handle years earlier than 1900 - per http://bugs.python.org/issue1777412 - """ - if dt.utcoffset() >= timedelta(0): - offset = '+%s' % (dt.utcoffset(),) - else: - offset = '-%s' % (-1 * dt.utcoffset(),) - return '%04d-%02d-%02d %02d:%02d:%02d %s %s' % ( - dt.year, dt.month, dt.day, - dt.hour, dt.minute, dt.second, - dt.tzname(), offset) - - -try: - str -except NameError: - # Python 3.x doesn't have unicode(), making writing code - # for Python 2.3 and Python 3.x a pain. - str = str - - -class BasicTest(unittest.TestCase): - - def testVersion(self): - # Ensuring the correct version of pytz has been loaded - self.assertEqual(EXPECTED_VERSION, pytz.__version__, - 'Incorrect pytz version loaded. Import path is stuffed ' - 'or this test needs updating. (Wanted %s, got %s)' - % (EXPECTED_VERSION, pytz.__version__) - ) - - def testGMT(self): - now = datetime.now(tz=GMT) - self.assertTrue(now.utcoffset() == NOTIME) - self.assertTrue(now.dst() == NOTIME) - self.assertTrue(now.timetuple() == now.utctimetuple()) - self.assertTrue(now==now.replace(tzinfo=UTC)) - - def testReferenceUTC(self): - now = datetime.now(tz=UTC) - self.assertTrue(now.utcoffset() == NOTIME) - self.assertTrue(now.dst() == NOTIME) - self.assertTrue(now.timetuple() == now.utctimetuple()) - - def testUnknownOffsets(self): - # This tzinfo behavior is required to make - # datetime.time.{utcoffset, dst, tzname} work as documented. - - dst_tz = pytz.timezone('US/Eastern') - - # This information is not known when we don't have a date, - # so return None per API. - self.assertTrue(dst_tz.utcoffset(None) is None) - self.assertTrue(dst_tz.dst(None) is None) - # We don't know the abbreviation, but this is still a valid - # tzname per the Python documentation. - self.assertEqual(dst_tz.tzname(None), 'US/Eastern') - - def clearCache(self): - pytz._tzinfo_cache.clear() - - def testUnicodeTimezone(self): - # We need to ensure that cold lookups work for both Unicode - # and traditional strings, and that the desired singleton is - # returned. - self.clearCache() - eastern = pytz.timezone(str('US/Eastern')) - self.assertTrue(eastern is pytz.timezone('US/Eastern')) - - self.clearCache() - eastern = pytz.timezone('US/Eastern') - self.assertTrue(eastern is pytz.timezone(str('US/Eastern'))) - - -class PicklingTest(unittest.TestCase): - - def _roundtrip_tzinfo(self, tz): - p = pickle.dumps(tz) - unpickled_tz = pickle.loads(p) - self.assertTrue(tz is unpickled_tz, '%s did not roundtrip' % tz.zone) - - def _roundtrip_datetime(self, dt): - # Ensure that the tzinfo attached to a datetime instance - # is identical to the one returned. This is important for - # DST timezones, as some state is stored in the tzinfo. - tz = dt.tzinfo - p = pickle.dumps(dt) - unpickled_dt = pickle.loads(p) - unpickled_tz = unpickled_dt.tzinfo - self.assertTrue(tz is unpickled_tz, '%s did not roundtrip' % tz.zone) - - def testDst(self): - tz = pytz.timezone('Europe/Amsterdam') - dt = datetime(2004, 2, 1, 0, 0, 0) - - for localized_tz in list(tz._tzinfos.values()): - self._roundtrip_tzinfo(localized_tz) - self._roundtrip_datetime(dt.replace(tzinfo=localized_tz)) - - def testRoundtrip(self): - dt = datetime(2004, 2, 1, 0, 0, 0) - for zone in pytz.all_timezones: - tz = pytz.timezone(zone) - self._roundtrip_tzinfo(tz) - - def testDatabaseFixes(self): - # Hack the pickle to make it refer to a timezone abbreviation - # that does not match anything. The unpickler should be able - # to repair this case - tz = pytz.timezone('Australia/Melbourne') - p = pickle.dumps(tz) - tzname = tz._tzname - hacked_p = p.replace(_byte_string(tzname), _byte_string('???')) - self.assertNotEqual(p, hacked_p) - unpickled_tz = pickle.loads(hacked_p) - self.assertTrue(tz is unpickled_tz) - - # Simulate a database correction. In this case, the incorrect - # data will continue to be used. - p = pickle.dumps(tz) - new_utcoffset = tz._utcoffset.seconds + 42 - - # Python 3 introduced a new pickle protocol where numbers are stored in - # hexadecimal representation. Here we extract the pickle - # representation of the number for the current Python version. - old_pickle_pattern = pickle.dumps(tz._utcoffset.seconds)[3:-1] - new_pickle_pattern = pickle.dumps(new_utcoffset)[3:-1] - hacked_p = p.replace(old_pickle_pattern, new_pickle_pattern) - - self.assertNotEqual(p, hacked_p) - unpickled_tz = pickle.loads(hacked_p) - self.assertEqual(unpickled_tz._utcoffset.seconds, new_utcoffset) - self.assertTrue(tz is not unpickled_tz) - - def testOldPickles(self): - # Ensure that applications serializing pytz instances as pickles - # have no troubles upgrading to a new pytz release. These pickles - # where created with pytz2006j - east1 = pickle.loads(_byte_string( - "cpytz\n_p\np1\n(S'US/Eastern'\np2\nI-18000\n" - "I0\nS'EST'\np3\ntRp4\n." - )) - east2 = pytz.timezone('US/Eastern') - self.assertTrue(east1 is east2) - - # Confirm changes in name munging between 2006j and 2007c cause - # no problems. - pap1 = pickle.loads(_byte_string( - "cpytz\n_p\np1\n(S'America/Port_minus_au_minus_Prince'" - "\np2\nI-17340\nI0\nS'PPMT'\np3\ntRp4\n.")) - pap2 = pytz.timezone('America/Port-au-Prince') - self.assertTrue(pap1 is pap2) - - gmt1 = pickle.loads(_byte_string( - "cpytz\n_p\np1\n(S'Etc/GMT_plus_10'\np2\ntRp3\n.")) - gmt2 = pytz.timezone('Etc/GMT+10') - self.assertTrue(gmt1 is gmt2) - - -class USEasternDSTStartTestCase(unittest.TestCase): - tzinfo = pytz.timezone('US/Eastern') - - # 24 hours before DST changeover - transition_time = datetime(2002, 4, 7, 7, 0, 0, tzinfo=UTC) - - # Increase for 'flexible' DST transitions due to 1 minute granularity - # of Python's datetime library - instant = timedelta(seconds=1) - - # before transition - before = { - 'tzname': 'EST', - 'utcoffset': timedelta(hours = -5), - 'dst': timedelta(hours = 0), - } - - # after transition - after = { - 'tzname': 'EDT', - 'utcoffset': timedelta(hours = -4), - 'dst': timedelta(hours = 1), - } - - def _test_tzname(self, utc_dt, wanted): - tzname = wanted['tzname'] - dt = utc_dt.astimezone(self.tzinfo) - self.assertEqual(dt.tzname(), tzname, - 'Expected %s as tzname for %s. Got %s' % ( - tzname, str(utc_dt), dt.tzname() - ) - ) - - def _test_utcoffset(self, utc_dt, wanted): - utcoffset = wanted['utcoffset'] - dt = utc_dt.astimezone(self.tzinfo) - self.assertEqual( - dt.utcoffset(), wanted['utcoffset'], - 'Expected %s as utcoffset for %s. Got %s' % ( - utcoffset, utc_dt, dt.utcoffset() - ) - ) - - def _test_dst(self, utc_dt, wanted): - dst = wanted['dst'] - dt = utc_dt.astimezone(self.tzinfo) - self.assertEqual(dt.dst(),dst, - 'Expected %s as dst for %s. Got %s' % ( - dst, utc_dt, dt.dst() - ) - ) - - def test_arithmetic(self): - utc_dt = self.transition_time - - for days in range(-420, 720, 20): - delta = timedelta(days=days) - - # Make sure we can get back where we started - dt = utc_dt.astimezone(self.tzinfo) - dt2 = dt + delta - dt2 = dt2 - delta - self.assertEqual(dt, dt2) - - # Make sure arithmetic crossing DST boundaries ends - # up in the correct timezone after normalization - utc_plus_delta = (utc_dt + delta).astimezone(self.tzinfo) - local_plus_delta = self.tzinfo.normalize(dt + delta) - self.assertEqual( - prettydt(utc_plus_delta), - prettydt(local_plus_delta), - 'Incorrect result for delta==%d days. Wanted %r. Got %r'%( - days, - prettydt(utc_plus_delta), - prettydt(local_plus_delta), - ) - ) - - def _test_all(self, utc_dt, wanted): - self._test_utcoffset(utc_dt, wanted) - self._test_tzname(utc_dt, wanted) - self._test_dst(utc_dt, wanted) - - def testDayBefore(self): - self._test_all( - self.transition_time - timedelta(days=1), self.before - ) - - def testTwoHoursBefore(self): - self._test_all( - self.transition_time - timedelta(hours=2), self.before - ) - - def testHourBefore(self): - self._test_all( - self.transition_time - timedelta(hours=1), self.before - ) - - def testInstantBefore(self): - self._test_all( - self.transition_time - self.instant, self.before - ) - - def testTransition(self): - self._test_all( - self.transition_time, self.after - ) - - def testInstantAfter(self): - self._test_all( - self.transition_time + self.instant, self.after - ) - - def testHourAfter(self): - self._test_all( - self.transition_time + timedelta(hours=1), self.after - ) - - def testTwoHoursAfter(self): - self._test_all( - self.transition_time + timedelta(hours=1), self.after - ) - - def testDayAfter(self): - self._test_all( - self.transition_time + timedelta(days=1), self.after - ) - - -class USEasternDSTEndTestCase(USEasternDSTStartTestCase): - tzinfo = pytz.timezone('US/Eastern') - transition_time = datetime(2002, 10, 27, 6, 0, 0, tzinfo=UTC) - before = { - 'tzname': 'EDT', - 'utcoffset': timedelta(hours = -4), - 'dst': timedelta(hours = 1), - } - after = { - 'tzname': 'EST', - 'utcoffset': timedelta(hours = -5), - 'dst': timedelta(hours = 0), - } - - -class USEasternEPTStartTestCase(USEasternDSTStartTestCase): - transition_time = datetime(1945, 8, 14, 23, 0, 0, tzinfo=UTC) - before = { - 'tzname': 'EWT', - 'utcoffset': timedelta(hours = -4), - 'dst': timedelta(hours = 1), - } - after = { - 'tzname': 'EPT', - 'utcoffset': timedelta(hours = -4), - 'dst': timedelta(hours = 1), - } - - -class USEasternEPTEndTestCase(USEasternDSTStartTestCase): - transition_time = datetime(1945, 9, 30, 6, 0, 0, tzinfo=UTC) - before = { - 'tzname': 'EPT', - 'utcoffset': timedelta(hours = -4), - 'dst': timedelta(hours = 1), - } - after = { - 'tzname': 'EST', - 'utcoffset': timedelta(hours = -5), - 'dst': timedelta(hours = 0), - } - - -class WarsawWMTEndTestCase(USEasternDSTStartTestCase): - # In 1915, Warsaw changed from Warsaw to Central European time. - # This involved the clocks being set backwards, causing a end-of-DST - # like situation without DST being involved. - tzinfo = pytz.timezone('Europe/Warsaw') - transition_time = datetime(1915, 8, 4, 22, 36, 0, tzinfo=UTC) - before = { - 'tzname': 'WMT', - 'utcoffset': timedelta(hours=1, minutes=24), - 'dst': timedelta(0), - } - after = { - 'tzname': 'CET', - 'utcoffset': timedelta(hours=1), - 'dst': timedelta(0), - } - - -class VilniusWMTEndTestCase(USEasternDSTStartTestCase): - # At the end of 1916, Vilnius changed timezones putting its clock - # forward by 11 minutes 35 seconds. Neither timezone was in DST mode. - tzinfo = pytz.timezone('Europe/Vilnius') - instant = timedelta(seconds=31) - transition_time = datetime(1916, 12, 31, 22, 36, 00, tzinfo=UTC) - before = { - 'tzname': 'WMT', - 'utcoffset': timedelta(hours=1, minutes=24), - 'dst': timedelta(0), - } - after = { - 'tzname': 'KMT', - 'utcoffset': timedelta(hours=1, minutes=36), # Really 1:35:36 - 'dst': timedelta(0), - } - - -class VilniusCESTStartTestCase(USEasternDSTStartTestCase): - # In 1941, Vilnius changed from MSG to CEST, switching to summer - # time while simultaneously reducing its UTC offset by two hours, - # causing the clocks to go backwards for this summer time - # switchover. - tzinfo = pytz.timezone('Europe/Vilnius') - transition_time = datetime(1941, 6, 23, 21, 00, 00, tzinfo=UTC) - before = { - 'tzname': 'MSK', - 'utcoffset': timedelta(hours=3), - 'dst': timedelta(0), - } - after = { - 'tzname': 'CEST', - 'utcoffset': timedelta(hours=2), - 'dst': timedelta(hours=1), - } - - -class LondonHistoryStartTestCase(USEasternDSTStartTestCase): - # The first known timezone transition in London was in 1847 when - # clocks where synchronized to GMT. However, we currently only - # understand v1 format tzfile(5) files which does handle years - # this far in the past, so our earliest known transition is in - # 1916. - tzinfo = pytz.timezone('Europe/London') - # transition_time = datetime(1847, 12, 1, 1, 15, 00, tzinfo=UTC) - # before = { - # 'tzname': 'LMT', - # 'utcoffset': timedelta(minutes=-75), - # 'dst': timedelta(0), - # } - # after = { - # 'tzname': 'GMT', - # 'utcoffset': timedelta(0), - # 'dst': timedelta(0), - # } - transition_time = datetime(1916, 5, 21, 2, 00, 00, tzinfo=UTC) - before = { - 'tzname': 'GMT', - 'utcoffset': timedelta(0), - 'dst': timedelta(0), - } - after = { - 'tzname': 'BST', - 'utcoffset': timedelta(hours=1), - 'dst': timedelta(hours=1), - } - - -class LondonHistoryEndTestCase(USEasternDSTStartTestCase): - # Timezone switchovers are projected into the future, even - # though no official statements exist or could be believed even - # if they did exist. We currently only check the last known - # transition in 2037, as we are still using v1 format tzfile(5) - # files. - tzinfo = pytz.timezone('Europe/London') - # transition_time = datetime(2499, 10, 25, 1, 0, 0, tzinfo=UTC) - transition_time = datetime(2037, 10, 25, 1, 0, 0, tzinfo=UTC) - before = { - 'tzname': 'BST', - 'utcoffset': timedelta(hours=1), - 'dst': timedelta(hours=1), - } - after = { - 'tzname': 'GMT', - 'utcoffset': timedelta(0), - 'dst': timedelta(0), - } - - -class NoumeaHistoryStartTestCase(USEasternDSTStartTestCase): - # Noumea adopted a whole hour offset in 1912. Previously - # it was 11 hours, 5 minutes and 48 seconds off UTC. However, - # due to limitations of the Python datetime library, we need - # to round that to 11 hours 6 minutes. - tzinfo = pytz.timezone('Pacific/Noumea') - transition_time = datetime(1912, 1, 12, 12, 54, 12, tzinfo=UTC) - before = { - 'tzname': 'LMT', - 'utcoffset': timedelta(hours=11, minutes=6), - 'dst': timedelta(0), - } - after = { - 'tzname': 'NCT', - 'utcoffset': timedelta(hours=11), - 'dst': timedelta(0), - } - - -class NoumeaDSTEndTestCase(USEasternDSTStartTestCase): - # Noumea dropped DST in 1997. - tzinfo = pytz.timezone('Pacific/Noumea') - transition_time = datetime(1997, 3, 1, 15, 00, 00, tzinfo=UTC) - before = { - 'tzname': 'NCST', - 'utcoffset': timedelta(hours=12), - 'dst': timedelta(hours=1), - } - after = { - 'tzname': 'NCT', - 'utcoffset': timedelta(hours=11), - 'dst': timedelta(0), - } - - -class NoumeaNoMoreDSTTestCase(NoumeaDSTEndTestCase): - # Noumea dropped DST in 1997. Here we test that it stops occuring. - transition_time = ( - NoumeaDSTEndTestCase.transition_time + timedelta(days=365*10)) - before = NoumeaDSTEndTestCase.after - after = NoumeaDSTEndTestCase.after - - -class TahitiTestCase(USEasternDSTStartTestCase): - # Tahiti has had a single transition in its history. - tzinfo = pytz.timezone('Pacific/Tahiti') - transition_time = datetime(1912, 10, 1, 9, 58, 16, tzinfo=UTC) - before = { - 'tzname': 'LMT', - 'utcoffset': timedelta(hours=-9, minutes=-58), - 'dst': timedelta(0), - } - after = { - 'tzname': 'TAHT', - 'utcoffset': timedelta(hours=-10), - 'dst': timedelta(0), - } - - -class SamoaInternationalDateLineChange(USEasternDSTStartTestCase): - # At the end of 2011, Samoa will switch from being east of the - # international dateline to the west. There will be no Dec 30th - # 2011 and it will switch from UTC-10 to UTC+14. - tzinfo = pytz.timezone('Pacific/Apia') - transition_time = datetime(2011, 12, 30, 10, 0, 0, tzinfo=UTC) - before = { - 'tzname': 'WSDT', - 'utcoffset': timedelta(hours=-10), - 'dst': timedelta(hours=1), - } - after = { - 'tzname': 'WSDT', - 'utcoffset': timedelta(hours=14), - 'dst': timedelta(hours=1), - } - - -class ReferenceUSEasternDSTStartTestCase(USEasternDSTStartTestCase): - tzinfo = reference.Eastern - def test_arithmetic(self): - # Reference implementation cannot handle this - pass - - -class ReferenceUSEasternDSTEndTestCase(USEasternDSTEndTestCase): - tzinfo = reference.Eastern - - def testHourBefore(self): - # Python's datetime library has a bug, where the hour before - # a daylight savings transition is one hour out. For example, - # at the end of US/Eastern daylight savings time, 01:00 EST - # occurs twice (once at 05:00 UTC and once at 06:00 UTC), - # whereas the first should actually be 01:00 EDT. - # Note that this bug is by design - by accepting this ambiguity - # for one hour one hour per year, an is_dst flag on datetime.time - # became unnecessary. - self._test_all( - self.transition_time - timedelta(hours=1), self.after - ) - - def testInstantBefore(self): - self._test_all( - self.transition_time - timedelta(seconds=1), self.after - ) - - def test_arithmetic(self): - # Reference implementation cannot handle this - pass - - -class LocalTestCase(unittest.TestCase): - def testLocalize(self): - loc_tz = pytz.timezone('Europe/Amsterdam') - - loc_time = loc_tz.localize(datetime(1930, 5, 10, 0, 0, 0)) - # Actually +00:19:32, but Python datetime rounds this - self.assertEqual(loc_time.strftime('%Z%z'), 'AMT+0020') - - loc_time = loc_tz.localize(datetime(1930, 5, 20, 0, 0, 0)) - # Actually +00:19:32, but Python datetime rounds this - self.assertEqual(loc_time.strftime('%Z%z'), 'NST+0120') - - loc_time = loc_tz.localize(datetime(1940, 5, 10, 0, 0, 0)) - self.assertEqual(loc_time.strftime('%Z%z'), 'NET+0020') - - loc_time = loc_tz.localize(datetime(1940, 5, 20, 0, 0, 0)) - self.assertEqual(loc_time.strftime('%Z%z'), 'CEST+0200') - - loc_time = loc_tz.localize(datetime(2004, 2, 1, 0, 0, 0)) - self.assertEqual(loc_time.strftime('%Z%z'), 'CET+0100') - - loc_time = loc_tz.localize(datetime(2004, 4, 1, 0, 0, 0)) - self.assertEqual(loc_time.strftime('%Z%z'), 'CEST+0200') - - tz = pytz.timezone('Europe/Amsterdam') - loc_time = loc_tz.localize(datetime(1943, 3, 29, 1, 59, 59)) - self.assertEqual(loc_time.strftime('%Z%z'), 'CET+0100') - - - # Switch to US - loc_tz = pytz.timezone('US/Eastern') - - # End of DST ambiguity check - loc_time = loc_tz.localize(datetime(1918, 10, 27, 1, 59, 59), is_dst=1) - self.assertEqual(loc_time.strftime('%Z%z'), 'EDT-0400') - - loc_time = loc_tz.localize(datetime(1918, 10, 27, 1, 59, 59), is_dst=0) - self.assertEqual(loc_time.strftime('%Z%z'), 'EST-0500') - - self.assertRaises(pytz.AmbiguousTimeError, - loc_tz.localize, datetime(1918, 10, 27, 1, 59, 59), is_dst=None - ) - - # Start of DST non-existent times - loc_time = loc_tz.localize(datetime(1918, 3, 31, 2, 0, 0), is_dst=0) - self.assertEqual(loc_time.strftime('%Z%z'), 'EST-0500') - - loc_time = loc_tz.localize(datetime(1918, 3, 31, 2, 0, 0), is_dst=1) - self.assertEqual(loc_time.strftime('%Z%z'), 'EDT-0400') - - self.assertRaises(pytz.NonExistentTimeError, - loc_tz.localize, datetime(1918, 3, 31, 2, 0, 0), is_dst=None - ) - - # Weird changes - war time and peace time both is_dst==True - - loc_time = loc_tz.localize(datetime(1942, 2, 9, 3, 0, 0)) - self.assertEqual(loc_time.strftime('%Z%z'), 'EWT-0400') - - loc_time = loc_tz.localize(datetime(1945, 8, 14, 19, 0, 0)) - self.assertEqual(loc_time.strftime('%Z%z'), 'EPT-0400') - - loc_time = loc_tz.localize(datetime(1945, 9, 30, 1, 0, 0), is_dst=1) - self.assertEqual(loc_time.strftime('%Z%z'), 'EPT-0400') - - loc_time = loc_tz.localize(datetime(1945, 9, 30, 1, 0, 0), is_dst=0) - self.assertEqual(loc_time.strftime('%Z%z'), 'EST-0500') - - def testNormalize(self): - tz = pytz.timezone('US/Eastern') - dt = datetime(2004, 4, 4, 7, 0, 0, tzinfo=UTC).astimezone(tz) - dt2 = dt - timedelta(minutes=10) - self.assertEqual( - dt2.strftime('%Y-%m-%d %H:%M:%S %Z%z'), - '2004-04-04 02:50:00 EDT-0400' - ) - - dt2 = tz.normalize(dt2) - self.assertEqual( - dt2.strftime('%Y-%m-%d %H:%M:%S %Z%z'), - '2004-04-04 01:50:00 EST-0500' - ) - - def testPartialMinuteOffsets(self): - # utcoffset in Amsterdam was not a whole minute until 1937 - # However, we fudge this by rounding them, as the Python - # datetime library - tz = pytz.timezone('Europe/Amsterdam') - utc_dt = datetime(1914, 1, 1, 13, 40, 28, tzinfo=UTC) # correct - utc_dt = utc_dt.replace(second=0) # But we need to fudge it - loc_dt = utc_dt.astimezone(tz) - self.assertEqual( - loc_dt.strftime('%Y-%m-%d %H:%M:%S %Z%z'), - '1914-01-01 14:00:00 AMT+0020' - ) - - # And get back... - utc_dt = loc_dt.astimezone(UTC) - self.assertEqual( - utc_dt.strftime('%Y-%m-%d %H:%M:%S %Z%z'), - '1914-01-01 13:40:00 UTC+0000' - ) - - def no_testCreateLocaltime(self): - # It would be nice if this worked, but it doesn't. - tz = pytz.timezone('Europe/Amsterdam') - dt = datetime(2004, 10, 31, 2, 0, 0, tzinfo=tz) - self.assertEqual( - dt.strftime(fmt), - '2004-10-31 02:00:00 CET+0100' - ) - - -class CommonTimezonesTestCase(unittest.TestCase): - def test_bratislava(self): - # Bratislava is the default timezone for Slovakia, but our - # heuristics where not adding it to common_timezones. Ideally, - # common_timezones should be populated from zone.tab at runtime, - # but I'm hesitant to pay the startup cost as loading the list - # on demand whilst remaining backwards compatible seems - # difficult. - self.assertTrue('Europe/Bratislava' in pytz.common_timezones) - self.assertTrue('Europe/Bratislava' in pytz.common_timezones_set) - - def test_us_eastern(self): - self.assertTrue('US/Eastern' in pytz.common_timezones) - self.assertTrue('US/Eastern' in pytz.common_timezones_set) - - def test_belfast(self): - # Belfast uses London time. - self.assertTrue('Europe/Belfast' in pytz.all_timezones_set) - self.assertFalse('Europe/Belfast' in pytz.common_timezones) - self.assertFalse('Europe/Belfast' in pytz.common_timezones_set) - - -class BaseTzInfoTestCase: - '''Ensure UTC, StaticTzInfo and DstTzInfo work consistently. - - These tests are run for each type of tzinfo. - ''' - tz = None # override - tz_class = None # override - - def test_expectedclass(self): - self.assertTrue(isinstance(self.tz, self.tz_class)) - - def test_fromutc(self): - # naive datetime. - dt1 = datetime(2011, 10, 31) - - # localized datetime, same timezone. - dt2 = self.tz.localize(dt1) - - # Both should give the same results. Note that the standard - # Python tzinfo.fromutc() only supports the second. - for dt in [dt1, dt2]: - loc_dt = self.tz.fromutc(dt) - loc_dt2 = pytz.utc.localize(dt1).astimezone(self.tz) - self.assertEqual(loc_dt, loc_dt2) - - # localized datetime, different timezone. - new_tz = pytz.timezone('Europe/Paris') - self.assertTrue(self.tz is not new_tz) - dt3 = new_tz.localize(dt1) - self.assertRaises(ValueError, self.tz.fromutc, dt3) - - def test_normalize(self): - other_tz = pytz.timezone('Europe/Paris') - self.assertTrue(self.tz is not other_tz) - - dt = datetime(2012, 3, 26, 12, 0) - other_dt = other_tz.localize(dt) - - local_dt = self.tz.normalize(other_dt) - - self.assertTrue(local_dt.tzinfo is not other_dt.tzinfo) - self.assertNotEqual( - local_dt.replace(tzinfo=None), other_dt.replace(tzinfo=None)) - - def test_astimezone(self): - other_tz = pytz.timezone('Europe/Paris') - self.assertTrue(self.tz is not other_tz) - - dt = datetime(2012, 3, 26, 12, 0) - other_dt = other_tz.localize(dt) - - local_dt = other_dt.astimezone(self.tz) - - self.assertTrue(local_dt.tzinfo is not other_dt.tzinfo) - self.assertNotEqual( - local_dt.replace(tzinfo=None), other_dt.replace(tzinfo=None)) - - -class OptimizedUTCTestCase(unittest.TestCase, BaseTzInfoTestCase): - tz = pytz.utc - tz_class = tz.__class__ - - -class LegacyUTCTestCase(unittest.TestCase, BaseTzInfoTestCase): - # Deprecated timezone, but useful for comparison tests. - tz = pytz.timezone('Etc/UTC') - tz_class = StaticTzInfo - - -class StaticTzInfoTestCase(unittest.TestCase, BaseTzInfoTestCase): - tz = pytz.timezone('GMT') - tz_class = StaticTzInfo - - -class DstTzInfoTestCase(unittest.TestCase, BaseTzInfoTestCase): - tz = pytz.timezone('Australia/Melbourne') - tz_class = DstTzInfo - - -def test_suite(): - suite = unittest.TestSuite() - suite.addTest(doctest.DocTestSuite('pytz')) - suite.addTest(doctest.DocTestSuite('pytz.tzinfo')) - import test_tzinfo - suite.addTest(unittest.defaultTestLoader.loadTestsFromModule(test_tzinfo)) - return suite - - -if __name__ == '__main__': - warnings.simplefilter("error") # Warnings should be fatal in tests. - unittest.main(defaultTest='test_suite') - diff --git a/wakatime/packages/tzlocal/test_data/Harare b/wakatime/packages/tzlocal/test_data/Harare deleted file mode 100644 index 258b393..0000000 Binary files a/wakatime/packages/tzlocal/test_data/Harare and /dev/null differ diff --git a/wakatime/packages/tzlocal/test_data/localtime/etc/localtime b/wakatime/packages/tzlocal/test_data/localtime/etc/localtime deleted file mode 100644 index 258b393..0000000 Binary files a/wakatime/packages/tzlocal/test_data/localtime/etc/localtime and /dev/null differ diff --git a/wakatime/packages/tzlocal/test_data/timezone/etc/timezone b/wakatime/packages/tzlocal/test_data/timezone/etc/timezone deleted file mode 100644 index 28b3372..0000000 --- a/wakatime/packages/tzlocal/test_data/timezone/etc/timezone +++ /dev/null @@ -1 +0,0 @@ -Africa/Harare diff --git a/wakatime/packages/tzlocal/test_data/timezone_setting/etc/conf.d/clock b/wakatime/packages/tzlocal/test_data/timezone_setting/etc/conf.d/clock deleted file mode 100644 index 9503293..0000000 --- a/wakatime/packages/tzlocal/test_data/timezone_setting/etc/conf.d/clock +++ /dev/null @@ -1 +0,0 @@ -TIMEZONE = "Africa/Harare" diff --git a/wakatime/packages/tzlocal/test_data/zone_setting/etc/sysconfig/clock b/wakatime/packages/tzlocal/test_data/zone_setting/etc/sysconfig/clock deleted file mode 100644 index e1ddbfd..0000000 --- a/wakatime/packages/tzlocal/test_data/zone_setting/etc/sysconfig/clock +++ /dev/null @@ -1 +0,0 @@ -ZONE="Africa/Harare" diff --git a/wakatime/packages/tzlocal/tests.py b/wakatime/packages/tzlocal/tests.py deleted file mode 100644 index 3cbadf4..0000000 --- a/wakatime/packages/tzlocal/tests.py +++ /dev/null @@ -1,64 +0,0 @@ -import sys -import os -from datetime import datetime -import unittest -import pytz -import tzlocal.unix - -class TzLocalTests(unittest.TestCase): - - def test_env(self): - tz_harare = tzlocal.unix._tz_from_env(':Africa/Harare') - self.assertEqual(tz_harare.zone, 'Africa/Harare') - - # Some Unices allow this as well, so we must allow it: - tz_harare = tzlocal.unix._tz_from_env('Africa/Harare') - self.assertEqual(tz_harare.zone, 'Africa/Harare') - - local_path = os.path.split(__file__)[0] - tz_local = tzlocal.unix._tz_from_env(':' + os.path.join(local_path, 'test_data', 'Harare')) - self.assertEqual(tz_local.zone, 'local') - # Make sure the local timezone is the same as the Harare one above. - # We test this with a past date, so that we don't run into future changes - # of the Harare timezone. - dt = datetime(2012, 1, 1, 5) - self.assertEqual(tz_harare.localize(dt), tz_local.localize(dt)) - - # Non-zoneinfo timezones are not supported in the TZ environment. - self.assertRaises(pytz.UnknownTimeZoneError, tzlocal.unix._tz_from_env, 'GMT+03:00') - - def test_timezone(self): - # Most versions of Ubuntu - local_path = os.path.split(__file__)[0] - tz = tzlocal.unix._get_localzone(_root=os.path.join(local_path, 'test_data', 'timezone')) - self.assertEqual(tz.zone, 'Africa/Harare') - - def test_zone_setting(self): - # A ZONE setting in /etc/sysconfig/clock, f ex CentOS - local_path = os.path.split(__file__)[0] - tz = tzlocal.unix._get_localzone(_root=os.path.join(local_path, 'test_data', 'zone_setting')) - self.assertEqual(tz.zone, 'Africa/Harare') - - def test_timezone_setting(self): - # A ZONE setting in /etc/conf.d/clock, f ex Gentoo - local_path = os.path.split(__file__)[0] - tz = tzlocal.unix._get_localzone(_root=os.path.join(local_path, 'test_data', 'timezone_setting')) - self.assertEqual(tz.zone, 'Africa/Harare') - - def test_only_localtime(self): - local_path = os.path.split(__file__)[0] - tz = tzlocal.unix._get_localzone(_root=os.path.join(local_path, 'test_data', 'localtime')) - self.assertEqual(tz.zone, 'local') - dt = datetime(2012, 1, 1, 5) - self.assertEqual(pytz.timezone('Africa/Harare').localize(dt), tz.localize(dt)) - -if sys.platform == 'win32': - - import tzlocal.win32 - class TzWin32Tests(unittest.TestCase): - - def test_win32(self): - tz = tzlocal.win32.get_localzone() - -if __name__ == '__main__': - unittest.main() \ No newline at end of file diff --git a/wakatime/packages/tzlocal/windows_tz.py b/wakatime/packages/tzlocal/windows_tz.py deleted file mode 100644 index 52a9117..0000000 --- a/wakatime/packages/tzlocal/windows_tz.py +++ /dev/null @@ -1,101 +0,0 @@ -# This file is autogenerated by the get_windows_info.py script -# Do not edit. -tz_names = {'AUS Central Standard Time': 'Australia/Darwin', - 'AUS Eastern Standard Time': 'Australia/Sydney', - 'Afghanistan Standard Time': 'Asia/Kabul', - 'Alaskan Standard Time': 'America/Anchorage', - 'Arab Standard Time': 'Asia/Riyadh', - 'Arabian Standard Time': 'Asia/Dubai', - 'Arabic Standard Time': 'Asia/Baghdad', - 'Argentina Standard Time': 'America/Buenos_Aires', - 'Atlantic Standard Time': 'America/Halifax', - 'Azerbaijan Standard Time': 'Asia/Baku', - 'Azores Standard Time': 'Atlantic/Azores', - 'Bahia Standard Time': 'America/Bahia', - 'Bangladesh Standard Time': 'Asia/Dhaka', - 'Canada Central Standard Time': 'America/Regina', - 'Cape Verde Standard Time': 'Atlantic/Cape_Verde', - 'Caucasus Standard Time': 'Asia/Yerevan', - 'Cen. Australia Standard Time': 'Australia/Adelaide', - 'Central America Standard Time': 'America/Guatemala', - 'Central Asia Standard Time': 'Asia/Almaty', - 'Central Brazilian Standard Time': 'America/Cuiaba', - 'Central Europe Standard Time': 'Europe/Budapest', - 'Central European Standard Time': 'Europe/Warsaw', - 'Central Pacific Standard Time': 'Pacific/Guadalcanal', - 'Central Standard Time': 'America/Chicago', - 'Central Standard Time (Mexico)': 'America/Mexico_City', - 'China Standard Time': 'Asia/Shanghai', - 'Dateline Standard Time': 'Etc/GMT+12', - 'E. Africa Standard Time': 'Africa/Nairobi', - 'E. Australia Standard Time': 'Australia/Brisbane', - 'E. Europe Standard Time': 'Asia/Nicosia', - 'E. South America Standard Time': 'America/Sao_Paulo', - 'Eastern Standard Time': 'America/New_York', - 'Egypt Standard Time': 'Africa/Cairo', - 'Ekaterinburg Standard Time': 'Asia/Yekaterinburg', - 'FLE Standard Time': 'Europe/Kiev', - 'Fiji Standard Time': 'Pacific/Fiji', - 'GMT Standard Time': 'Europe/London', - 'GTB Standard Time': 'Europe/Bucharest', - 'Georgian Standard Time': 'Asia/Tbilisi', - 'Greenland Standard Time': 'America/Godthab', - 'Greenwich Standard Time': 'Atlantic/Reykjavik', - 'Hawaiian Standard Time': 'Pacific/Honolulu', - 'India Standard Time': 'Asia/Calcutta', - 'Iran Standard Time': 'Asia/Tehran', - 'Israel Standard Time': 'Asia/Jerusalem', - 'Jordan Standard Time': 'Asia/Amman', - 'Kaliningrad Standard Time': 'Europe/Kaliningrad', - 'Korea Standard Time': 'Asia/Seoul', - 'Magadan Standard Time': 'Asia/Magadan', - 'Mauritius Standard Time': 'Indian/Mauritius', - 'Middle East Standard Time': 'Asia/Beirut', - 'Montevideo Standard Time': 'America/Montevideo', - 'Morocco Standard Time': 'Africa/Casablanca', - 'Mountain Standard Time': 'America/Denver', - 'Mountain Standard Time (Mexico)': 'America/Chihuahua', - 'Myanmar Standard Time': 'Asia/Rangoon', - 'N. Central Asia Standard Time': 'Asia/Novosibirsk', - 'Namibia Standard Time': 'Africa/Windhoek', - 'Nepal Standard Time': 'Asia/Katmandu', - 'New Zealand Standard Time': 'Pacific/Auckland', - 'Newfoundland Standard Time': 'America/St_Johns', - 'North Asia East Standard Time': 'Asia/Irkutsk', - 'North Asia Standard Time': 'Asia/Krasnoyarsk', - 'Pacific SA Standard Time': 'America/Santiago', - 'Pacific Standard Time': 'America/Los_Angeles', - 'Pacific Standard Time (Mexico)': 'America/Santa_Isabel', - 'Pakistan Standard Time': 'Asia/Karachi', - 'Paraguay Standard Time': 'America/Asuncion', - 'Romance Standard Time': 'Europe/Paris', - 'Russian Standard Time': 'Europe/Moscow', - 'SA Eastern Standard Time': 'America/Cayenne', - 'SA Pacific Standard Time': 'America/Bogota', - 'SA Western Standard Time': 'America/La_Paz', - 'SE Asia Standard Time': 'Asia/Bangkok', - 'Samoa Standard Time': 'Pacific/Apia', - 'Singapore Standard Time': 'Asia/Singapore', - 'South Africa Standard Time': 'Africa/Johannesburg', - 'Sri Lanka Standard Time': 'Asia/Colombo', - 'Syria Standard Time': 'Asia/Damascus', - 'Taipei Standard Time': 'Asia/Taipei', - 'Tasmania Standard Time': 'Australia/Hobart', - 'Tokyo Standard Time': 'Asia/Tokyo', - 'Tonga Standard Time': 'Pacific/Tongatapu', - 'Turkey Standard Time': 'Europe/Istanbul', - 'US Eastern Standard Time': 'America/Indianapolis', - 'US Mountain Standard Time': 'America/Phoenix', - 'UTC': 'Etc/GMT', - 'UTC+12': 'Etc/GMT-12', - 'UTC-02': 'Etc/GMT+2', - 'UTC-11': 'Etc/GMT+11', - 'Ulaanbaatar Standard Time': 'Asia/Ulaanbaatar', - 'Venezuela Standard Time': 'America/Caracas', - 'Vladivostok Standard Time': 'Asia/Vladivostok', - 'W. Australia Standard Time': 'Australia/Perth', - 'W. Central Africa Standard Time': 'Africa/Lagos', - 'W. Europe Standard Time': 'Europe/Berlin', - 'West Asia Standard Time': 'Asia/Tashkent', - 'West Pacific Standard Time': 'Pacific/Port_Moresby', - 'Yakutsk Standard Time': 'Asia/Yakutsk'} diff --git a/wakatime/packages/tzlocal3/tests.py b/wakatime/packages/tzlocal3/tests.py deleted file mode 100644 index f61e6d0..0000000 --- a/wakatime/packages/tzlocal3/tests.py +++ /dev/null @@ -1,64 +0,0 @@ -import sys -import os -from datetime import datetime -import unittest -import pytz3 as pytz -import tzlocal.unix - -class TzLocalTests(unittest.TestCase): - - def test_env(self): - tz_harare = tzlocal.unix._tz_from_env(':Africa/Harare') - self.assertEqual(tz_harare.zone, 'Africa/Harare') - - # Some Unices allow this as well, so we must allow it: - tz_harare = tzlocal.unix._tz_from_env('Africa/Harare') - self.assertEqual(tz_harare.zone, 'Africa/Harare') - - local_path = os.path.split(__file__)[0] - tz_local = tzlocal.unix._tz_from_env(':' + os.path.join(local_path, 'test_data', 'Harare')) - self.assertEqual(tz_local.zone, 'local') - # Make sure the local timezone is the same as the Harare one above. - # We test this with a past date, so that we don't run into future changes - # of the Harare timezone. - dt = datetime(2012, 1, 1, 5) - self.assertEqual(tz_harare.localize(dt), tz_local.localize(dt)) - - # Non-zoneinfo timezones are not supported in the TZ environment. - self.assertRaises(pytz.UnknownTimeZoneError, tzlocal.unix._tz_from_env, 'GMT+03:00') - - def test_timezone(self): - # Most versions of Ubuntu - local_path = os.path.split(__file__)[0] - tz = tzlocal.unix._get_localzone(_root=os.path.join(local_path, 'test_data', 'timezone')) - self.assertEqual(tz.zone, 'Africa/Harare') - - def test_zone_setting(self): - # A ZONE setting in /etc/sysconfig/clock, f ex CentOS - local_path = os.path.split(__file__)[0] - tz = tzlocal.unix._get_localzone(_root=os.path.join(local_path, 'test_data', 'zone_setting')) - self.assertEqual(tz.zone, 'Africa/Harare') - - def test_timezone_setting(self): - # A ZONE setting in /etc/conf.d/clock, f ex Gentoo - local_path = os.path.split(__file__)[0] - tz = tzlocal.unix._get_localzone(_root=os.path.join(local_path, 'test_data', 'timezone_setting')) - self.assertEqual(tz.zone, 'Africa/Harare') - - def test_only_localtime(self): - local_path = os.path.split(__file__)[0] - tz = tzlocal.unix._get_localzone(_root=os.path.join(local_path, 'test_data', 'localtime')) - self.assertEqual(tz.zone, 'local') - dt = datetime(2012, 1, 1, 5) - self.assertEqual(pytz.timezone('Africa/Harare').localize(dt), tz.localize(dt)) - -if sys.platform == 'win32': - - import tzlocal.win32 - class TzWin32Tests(unittest.TestCase): - - def test_win32(self): - tz = tzlocal.win32.get_localzone() - -if __name__ == '__main__': - unittest.main() diff --git a/wakatime/packages/tzlocal3/windows_tz.py b/wakatime/packages/tzlocal3/windows_tz.py deleted file mode 100644 index 52a9117..0000000 --- a/wakatime/packages/tzlocal3/windows_tz.py +++ /dev/null @@ -1,101 +0,0 @@ -# This file is autogenerated by the get_windows_info.py script -# Do not edit. -tz_names = {'AUS Central Standard Time': 'Australia/Darwin', - 'AUS Eastern Standard Time': 'Australia/Sydney', - 'Afghanistan Standard Time': 'Asia/Kabul', - 'Alaskan Standard Time': 'America/Anchorage', - 'Arab Standard Time': 'Asia/Riyadh', - 'Arabian Standard Time': 'Asia/Dubai', - 'Arabic Standard Time': 'Asia/Baghdad', - 'Argentina Standard Time': 'America/Buenos_Aires', - 'Atlantic Standard Time': 'America/Halifax', - 'Azerbaijan Standard Time': 'Asia/Baku', - 'Azores Standard Time': 'Atlantic/Azores', - 'Bahia Standard Time': 'America/Bahia', - 'Bangladesh Standard Time': 'Asia/Dhaka', - 'Canada Central Standard Time': 'America/Regina', - 'Cape Verde Standard Time': 'Atlantic/Cape_Verde', - 'Caucasus Standard Time': 'Asia/Yerevan', - 'Cen. Australia Standard Time': 'Australia/Adelaide', - 'Central America Standard Time': 'America/Guatemala', - 'Central Asia Standard Time': 'Asia/Almaty', - 'Central Brazilian Standard Time': 'America/Cuiaba', - 'Central Europe Standard Time': 'Europe/Budapest', - 'Central European Standard Time': 'Europe/Warsaw', - 'Central Pacific Standard Time': 'Pacific/Guadalcanal', - 'Central Standard Time': 'America/Chicago', - 'Central Standard Time (Mexico)': 'America/Mexico_City', - 'China Standard Time': 'Asia/Shanghai', - 'Dateline Standard Time': 'Etc/GMT+12', - 'E. Africa Standard Time': 'Africa/Nairobi', - 'E. Australia Standard Time': 'Australia/Brisbane', - 'E. Europe Standard Time': 'Asia/Nicosia', - 'E. South America Standard Time': 'America/Sao_Paulo', - 'Eastern Standard Time': 'America/New_York', - 'Egypt Standard Time': 'Africa/Cairo', - 'Ekaterinburg Standard Time': 'Asia/Yekaterinburg', - 'FLE Standard Time': 'Europe/Kiev', - 'Fiji Standard Time': 'Pacific/Fiji', - 'GMT Standard Time': 'Europe/London', - 'GTB Standard Time': 'Europe/Bucharest', - 'Georgian Standard Time': 'Asia/Tbilisi', - 'Greenland Standard Time': 'America/Godthab', - 'Greenwich Standard Time': 'Atlantic/Reykjavik', - 'Hawaiian Standard Time': 'Pacific/Honolulu', - 'India Standard Time': 'Asia/Calcutta', - 'Iran Standard Time': 'Asia/Tehran', - 'Israel Standard Time': 'Asia/Jerusalem', - 'Jordan Standard Time': 'Asia/Amman', - 'Kaliningrad Standard Time': 'Europe/Kaliningrad', - 'Korea Standard Time': 'Asia/Seoul', - 'Magadan Standard Time': 'Asia/Magadan', - 'Mauritius Standard Time': 'Indian/Mauritius', - 'Middle East Standard Time': 'Asia/Beirut', - 'Montevideo Standard Time': 'America/Montevideo', - 'Morocco Standard Time': 'Africa/Casablanca', - 'Mountain Standard Time': 'America/Denver', - 'Mountain Standard Time (Mexico)': 'America/Chihuahua', - 'Myanmar Standard Time': 'Asia/Rangoon', - 'N. Central Asia Standard Time': 'Asia/Novosibirsk', - 'Namibia Standard Time': 'Africa/Windhoek', - 'Nepal Standard Time': 'Asia/Katmandu', - 'New Zealand Standard Time': 'Pacific/Auckland', - 'Newfoundland Standard Time': 'America/St_Johns', - 'North Asia East Standard Time': 'Asia/Irkutsk', - 'North Asia Standard Time': 'Asia/Krasnoyarsk', - 'Pacific SA Standard Time': 'America/Santiago', - 'Pacific Standard Time': 'America/Los_Angeles', - 'Pacific Standard Time (Mexico)': 'America/Santa_Isabel', - 'Pakistan Standard Time': 'Asia/Karachi', - 'Paraguay Standard Time': 'America/Asuncion', - 'Romance Standard Time': 'Europe/Paris', - 'Russian Standard Time': 'Europe/Moscow', - 'SA Eastern Standard Time': 'America/Cayenne', - 'SA Pacific Standard Time': 'America/Bogota', - 'SA Western Standard Time': 'America/La_Paz', - 'SE Asia Standard Time': 'Asia/Bangkok', - 'Samoa Standard Time': 'Pacific/Apia', - 'Singapore Standard Time': 'Asia/Singapore', - 'South Africa Standard Time': 'Africa/Johannesburg', - 'Sri Lanka Standard Time': 'Asia/Colombo', - 'Syria Standard Time': 'Asia/Damascus', - 'Taipei Standard Time': 'Asia/Taipei', - 'Tasmania Standard Time': 'Australia/Hobart', - 'Tokyo Standard Time': 'Asia/Tokyo', - 'Tonga Standard Time': 'Pacific/Tongatapu', - 'Turkey Standard Time': 'Europe/Istanbul', - 'US Eastern Standard Time': 'America/Indianapolis', - 'US Mountain Standard Time': 'America/Phoenix', - 'UTC': 'Etc/GMT', - 'UTC+12': 'Etc/GMT-12', - 'UTC-02': 'Etc/GMT+2', - 'UTC-11': 'Etc/GMT+11', - 'Ulaanbaatar Standard Time': 'Asia/Ulaanbaatar', - 'Venezuela Standard Time': 'America/Caracas', - 'Vladivostok Standard Time': 'Asia/Vladivostok', - 'W. Australia Standard Time': 'Australia/Perth', - 'W. Central Africa Standard Time': 'Africa/Lagos', - 'W. Europe Standard Time': 'Europe/Berlin', - 'West Asia Standard Time': 'Asia/Tashkent', - 'West Pacific Standard Time': 'Pacific/Port_Moresby', - 'Yakutsk Standard Time': 'Asia/Yakutsk'} diff --git a/wakatime/stats.py b/wakatime/stats.py index 81fb283..a7a15a4 100644 --- a/wakatime/stats.py +++ b/wakatime/stats.py @@ -16,13 +16,12 @@ import sys from .compat import u, open from .dependencies import DependencyParser -if sys.version_info[0] == 2: # pragma: nocover - sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)), 'packages', 'pygments_py2')) -else: # pragma: nocover - sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)), 'packages', 'pygments_py3')) -from pygments.lexers import get_lexer_by_name, guess_lexer_for_filename -from pygments.modeline import get_filetype_from_buffer -from pygments.util import ClassNotFound +from .packages import ( + get_lexer_by_name, + guess_lexer_for_filename, + get_filetype_from_buffer, + ClassNotFound, +) log = logging.getLogger('WakaTime')