diff --git a/ci/requirements-3.4.build b/ci/requirements-3.4.build deleted file mode 100644 index e8a957f70d40e..0000000000000 --- a/ci/requirements-3.4.build +++ /dev/null @@ -1,4 +0,0 @@ -python=3.4* -numpy=1.8.1 -cython=0.24.1 -libgfortran=1.0 diff --git a/ci/requirements-3.4.pip b/ci/requirements-3.4.pip deleted file mode 100644 index 4e5fe52d56cf1..0000000000000 --- a/ci/requirements-3.4.pip +++ /dev/null @@ -1,2 +0,0 @@ -python-dateutil==2.2 -blosc diff --git a/ci/requirements-3.4.run b/ci/requirements-3.4.run deleted file mode 100644 index 3e12adae7dd9f..0000000000000 --- a/ci/requirements-3.4.run +++ /dev/null @@ -1,18 +0,0 @@ -pytz=2015.7 -numpy=1.8.1 -openpyxl -xlsxwriter -xlrd -xlwt -html5lib -patsy -beautiful-soup -scipy -numexpr -pytables -lxml -sqlalchemy -bottleneck -pymysql=0.6.3 -psycopg2 -jinja2=2.8 diff --git a/ci/requirements-3.4_SLOW.run b/ci/requirements-3.4_SLOW.run deleted file mode 100644 index 90156f62c6e71..0000000000000 --- a/ci/requirements-3.4_SLOW.run +++ /dev/null @@ -1,20 +0,0 @@ -python-dateutil -pytz -numpy=1.10* -openpyxl -xlsxwriter -xlrd -xlwt -html5lib -patsy -beautiful-soup -scipy -numexpr=2.4.6 -pytables -matplotlib -lxml -sqlalchemy -bottleneck -pymysql -psycopg2 -jinja2=2.8 diff --git a/ci/requirements-3.4_SLOW.sh b/ci/requirements-3.4_SLOW.sh deleted file mode 100644 index 24f1e042ed69e..0000000000000 --- a/ci/requirements-3.4_SLOW.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash - -source activate pandas - -echo "install 34_slow" - -conda install -n pandas -c conda-forge matplotlib diff --git a/ci/requirements-3.4_SLOW.build b/ci/requirements-3.6_LOCALE.build similarity index 58% rename from ci/requirements-3.4_SLOW.build rename to ci/requirements-3.6_LOCALE.build index 88212053af472..1c4b46aea3865 100644 --- a/ci/requirements-3.4_SLOW.build +++ b/ci/requirements-3.6_LOCALE.build @@ -1,6 +1,6 @@ -python=3.4* +python=3.6* python-dateutil pytz nomkl -numpy=1.10* +numpy cython diff --git a/ci/requirements-3.6_LOCALE.pip b/ci/requirements-3.6_LOCALE.pip new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/ci/requirements-3.6_LOCALE.run b/ci/requirements-3.6_LOCALE.run new file mode 100644 index 0000000000000..ae456f4f9f38a --- /dev/null +++ b/ci/requirements-3.6_LOCALE.run @@ -0,0 +1,22 @@ +python-dateutil +pytz +numpy +scipy +openpyxl +xlsxwriter +xlrd +xlwt +numexpr +pytables +matplotlib +lxml +html5lib +jinja2 +sqlalchemy +pymysql +# feather-format (not available on defaults ATM) +# psycopg2 (not avail on defaults ATM) +beautifulsoup4 +s3fs +xarray +ipython diff --git a/ci/requirements-3.6_LOCALE_SLOW.build b/ci/requirements-3.6_LOCALE_SLOW.build new file mode 100644 index 0000000000000..1c4b46aea3865 --- /dev/null +++ b/ci/requirements-3.6_LOCALE_SLOW.build @@ -0,0 +1,6 @@ +python=3.6* +python-dateutil +pytz +nomkl +numpy +cython diff --git a/ci/requirements-3.6_LOCALE_SLOW.pip b/ci/requirements-3.6_LOCALE_SLOW.pip new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/ci/requirements-3.6_LOCALE_SLOW.run b/ci/requirements-3.6_LOCALE_SLOW.run new file mode 100644 index 0000000000000..28131031f0bbd --- /dev/null +++ b/ci/requirements-3.6_LOCALE_SLOW.run @@ -0,0 +1,22 @@ +python-dateutil +pytz +numpy +scipy +openpyxl +xlsxwriter +xlrd +xlwt +numexpr +pytables +matplotlib +lxml +html5lib +jinja2 +sqlalchemy +pymysql +# feather-format (not available on defaults ATM) +# psycopg2 (not available on defaults ATM) +beautifulsoup4 +s3fs +xarray +ipython diff --git a/circle.yml b/circle.yml index fa2da0680f388..9d49145af54e3 100644 --- a/circle.yml +++ b/circle.yml @@ -23,9 +23,9 @@ dependencies: 0) sudo apt-get install language-pack-it && ./ci/install_circle.sh JOB="2.7_COMPAT" LOCALE_OVERRIDE="it_IT.UTF-8" ;; 1) - sudo apt-get install language-pack-zh-hans && ./ci/install_circle.sh JOB="3.4_SLOW" LOCALE_OVERRIDE="zh_CN.UTF-8" ;; + sudo apt-get install language-pack-zh-hans && ./ci/install_circle.sh JOB="3.6_LOCALE" LOCALE_OVERRIDE="zh_CN.UTF-8" ;; 2) - sudo apt-get install language-pack-zh-hans && ./ci/install_circle.sh JOB="3.4" LOCALE_OVERRIDE="zh_CN.UTF-8" ;; + sudo apt-get install language-pack-zh-hans && ./ci/install_circle.sh JOB="3.6_LOCALE_SLOW" LOCALE_OVERRIDE="zh_CN.UTF-8" ;; 3) ./ci/install_circle.sh JOB="3.5_ASCII" LOCALE_OVERRIDE="C" ;; esac diff --git a/doc/source/whatsnew/v0.21.0.txt b/doc/source/whatsnew/v0.21.0.txt index 3df0a21facb02..f392687a0a3fd 100644 --- a/doc/source/whatsnew/v0.21.0.txt +++ b/doc/source/whatsnew/v0.21.0.txt @@ -35,7 +35,7 @@ Other Enhancements Backwards incompatible API changes ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - +- Support has been dropped for Python 3.4 (:issue:`15251`) .. _whatsnew_0210.api: diff --git a/pandas/compat/__init__.py b/pandas/compat/__init__.py index 2fe6359fd1ea6..9eacb9acef2c9 100644 --- a/pandas/compat/__init__.py +++ b/pandas/compat/__init__.py @@ -7,7 +7,7 @@ Key items to import for 2/3 compatible code: * iterators: range(), map(), zip(), filter(), reduce() * lists: lrange(), lmap(), lzip(), lfilter() -* unicode: u() [u"" is a syntax error in Python 3.0-3.2] +* unicode: u() [no unicode builtin in Python 3] * longs: long (int in Python 3) * callable * iterable method compatibility: iteritems, iterkeys, itervalues @@ -110,7 +110,7 @@ def signature(f): unichr = chr # This was introduced in Python 3.3, but we don't support - # Python 3.x < 3.4, so checking PY3 is safe. + # Python 3.x < 3.5, so checking PY3 is safe. FileNotFoundError = FileNotFoundError # list-producing versions of the major Python iterating functions diff --git a/pandas/tests/util/test_util.py b/pandas/tests/util/test_util.py index 532d596220501..abd82cfa89f94 100644 --- a/pandas/tests/util/test_util.py +++ b/pandas/tests/util/test_util.py @@ -16,9 +16,6 @@ import pandas.util.testing as tm -CURRENT_LOCALE = locale.getlocale() -LOCALE_OVERRIDE = os.environ.get('LOCALE_OVERRIDE', None) - class TestDecorators(object): @@ -412,6 +409,7 @@ class TestLocaleUtils(object): @classmethod def setup_class(cls): cls.locales = tm.get_locales() + cls.current_locale = locale.getlocale() if not cls.locales: pytest.skip("No locales found") @@ -421,6 +419,7 @@ def setup_class(cls): @classmethod def teardown_class(cls): del cls.locales + del cls.current_locale def test_get_locales(self): # all systems should have at least a single locale @@ -438,17 +437,19 @@ def test_set_locale(self): pytest.skip("Only a single locale found, no point in " "trying to test setting another locale") - if all(x is None for x in CURRENT_LOCALE): + if all(x is None for x in self.current_locale): # Not sure why, but on some travis runs with pytest, # getlocale() returned (None, None). - pytest.skip("CURRENT_LOCALE is not set.") + pytest.skip("Current locale is not set.") + + locale_override = os.environ.get('LOCALE_OVERRIDE', None) - if LOCALE_OVERRIDE is None: + if locale_override is None: lang, enc = 'it_CH', 'UTF-8' - elif LOCALE_OVERRIDE == 'C': + elif locale_override == 'C': lang, enc = 'en_US', 'ascii' else: - lang, enc = LOCALE_OVERRIDE.split('.') + lang, enc = locale_override.split('.') enc = codecs.lookup(enc).name new_locale = lang, enc @@ -465,4 +466,4 @@ def test_set_locale(self): assert normalized_locale == new_locale current_locale = locale.getlocale() - assert current_locale == CURRENT_LOCALE + assert current_locale == self.current_locale diff --git a/setup.py b/setup.py index 9a04bb6994869..ff537d5868db6 100755 --- a/setup.py +++ b/setup.py @@ -246,7 +246,6 @@ def build_extensions(self): 'Programming Language :: Python :: 2', 'Programming Language :: Python :: 3', 'Programming Language :: Python :: 2.7', - 'Programming Language :: Python :: 3.4', 'Programming Language :: Python :: 3.5', 'Programming Language :: Python :: 3.6', 'Programming Language :: Cython', diff --git a/tox.ini b/tox.ini index 85c5d90fde7fb..45ad7fc451e76 100644 --- a/tox.ini +++ b/tox.ini @@ -4,7 +4,7 @@ # and then run "tox" from this directory. [tox] -envlist = py27, py34, py35 +envlist = py27, py35, py36 [testenv] deps = @@ -49,14 +49,14 @@ deps = bigquery {[testenv]deps} -[testenv:py34] +[testenv:py35] deps = - numpy==1.8.0 + numpy==1.10.0 {[testenv]deps} -[testenv:py35] +[testenv:py36] deps = - numpy==1.10.0 + numpy {[testenv]deps} [testenv:openpyxl1]