Repository: falconry/falcon
Pull request #1403 (2019-01-01 17:54:21)

chore: Drop support for Python 3.4

codecov[bot]: # [Codecov](https://codecov.io/gh/falconry/falcon/pull/1403?src=pr&el=h1) Report
> Merging [#1403](https://codecov.io/gh/falconry/falcon/pull/1403?src=pr&el=desc) into [master](https://codecov.io/gh/falconry/falcon/commit/db7ab35dd55bbab11ef2c58e407d710ae41ea970?src=pr&el=desc) will **not change** coverage.
> The diff coverage is `n/a`.

[![Impacted file tree graph](https://codecov.io/gh/falconry/falcon/pull/1403/graphs/tree.svg?width=650&token=zOtkfNQ3h6&height=150&src=pr)](https://codecov.io/gh/falconry/falcon/pull/1403?src=pr&el=tree)

```diff
@@          Coverage Diff           @@
##           master   #1403   +/-   ##
======================================
  Coverage     100%    100%           
======================================
  Files          38      38           
  Lines        2545    2545           
  Branches      391     391           
======================================
  Hits         2545    2545
```



------

[Continue to review full report at Codecov](https://codecov.io/gh/falconry/falcon/pull/1403?src=pr&el=continue).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/falconry/falcon/pull/1403?src=pr&el=footer). Last update [db7ab35...f0f3be5](https://codecov.io/gh/falconry/falcon/pull/1403?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).

codecov[bot]: # [Codecov](https://codecov.io/gh/falconry/falcon/pull/1403?src=pr&el=h1) Report
> Merging [#1403](https://codecov.io/gh/falconry/falcon/pull/1403?src=pr&el=desc) into [master](https://codecov.io/gh/falconry/falcon/commit/db7ab35dd55bbab11ef2c58e407d710ae41ea970?src=pr&el=desc) will **not change** coverage.
> The diff coverage is `n/a`.

[![Impacted file tree graph](https://codecov.io/gh/falconry/falcon/pull/1403/graphs/tree.svg?width=650&token=zOtkfNQ3h6&height=150&src=pr)](https://codecov.io/gh/falconry/falcon/pull/1403?src=pr&el=tree)

```diff
@@          Coverage Diff           @@
##           master   #1403   +/-   ##
======================================
  Coverage     100%    100%           
======================================
  Files          38      38           
  Lines        2545    2545           
  Branches      391     391           
======================================
  Hits         2545    2545
```



------

[Continue to review full report at Codecov](https://codecov.io/gh/falconry/falcon/pull/1403?src=pr&el=continue).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/falconry/falcon/pull/1403?src=pr&el=footer). Last update [db7ab35...f0f3be5](https://codecov.io/gh/falconry/falcon/pull/1403?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).

vytas7: Setting ``blocked-by-release`` for now, since this is slated for 3.0, not 2.0.

Another thing, probably outside the scope of this issue, but we need to consider [officially, including Tox & Travis] adding support for CPython 3.7 before/at the time of dropping support for 3.4.
safaozturk93: It wouldn't be a problem for me. I agree with you that Python3.7 support should be added. 👍 
kgriffs: Agreed; we will hold this for a little bit until we open development on 3.0 later this month. I have also been thinking we need official 3.7 support for 2.0, and would love to get some help on that (README, docs, tox, travis).
kgriffs: Created  https://github.com/falconry/falcon/issues/1405
vytas7: I went on to address my comment; also removed the Python2-specific leftovers.

Patch:
diff --git a/.travis.yml b/.travis.yml
index 09a772a..70e1918 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -15,8 +15,6 @@ matrix:
           env: TOXENV=pep8
         - python: 3.7
           env: TOXENV=pep8-examples
-        - python: 3.4
-          env: TOXENV=py34
         - python: 3.5
           env: TOXENV=py35
         - python: 3.6
diff --git a/CHANGES.rst b/CHANGES.rst
index 3ec066a..28a95a9 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -12,6 +12,8 @@ Changes to Supported Platforms
   continue to maintain the Falcon 2.x series for those who still need
   to run under Python 2, at least until that platform's scheduled
   EOL (January 1, 2020 at the time of this writing; see also PEP 373).
+- Python 3.4 has now reached its end-of-life per PEP 429, and as a result
+  is no longer supported as of Falcon 3.0.
 
 Breaking Changes
 ----------------
diff --git a/docs/changes/3.0.0.rst b/docs/changes/3.0.0.rst
index 4250976..f4b370e 100644
--- a/docs/changes/3.0.0.rst
+++ b/docs/changes/3.0.0.rst
@@ -12,6 +12,8 @@ Changes to Supported Platforms
   continue to maintain the Falcon 2.x series for those who still need
   to run under Python 2, at least until that platform's scheduled
   EOL (January 1, 2020 at the time of this writing; see also PEP 373).
+- Python 3.4 has now reached its end-of-life per PEP 429, and as a result
+  is no longer supported as of Falcon 3.0.
 
 Breaking Changes
 ----------------
diff --git a/setup.py b/setup.py
index 39d5752..6851171 100644
--- a/setup.py
+++ b/setup.py
@@ -132,7 +132,6 @@ setup(
         'Programming Language :: Python :: 2',
         'Programming Language :: Python :: 2.7',
         'Programming Language :: Python :: 3',
-        'Programming Language :: Python :: 3.4',
         'Programming Language :: Python :: 3.5',
         'Programming Language :: Python :: 3.6',
         'Programming Language :: Python :: 3.7',
@@ -145,7 +144,7 @@ setup(
     packages=find_packages(exclude=['tests']),
     include_package_data=True,
     zip_safe=False,
-    python_requires='>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*',
+    python_requires='>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*',
     install_requires=REQUIRES,
     cmdclass=cmdclass,
     ext_modules=ext_modules,
diff --git a/tox.ini b/tox.ini
index 63bdd4c..a17269f 100644
--- a/tox.ini
+++ b/tox.ini
@@ -50,9 +50,6 @@ commands = {[with-coverage]commands}
 # Additional test suite environments
 # --------------------------------------------------------------------
 
-[testenv:py34]
-basepython = python3.4
-
 [testenv:pypy]
 basepython = pypy
 
@@ -79,10 +76,6 @@ deps = {[with-debug-tools]deps}
 deps = -r{toxinidir}/requirements/tests
        cython
 
-[testenv:py34_cython]
-basepython = python3.4
-deps = {[with-cython]deps}
-
 [testenv:py35_cython]
 basepython = python3.5
 deps = {[with-cython]deps}
@@ -170,17 +163,6 @@ commands = python tests/dump_wsgi.py
 # Benchmarking
 # --------------------------------------------------------------------
 
-[testenv:py34_bench]
-basepython = python3.4
-deps = -r{toxinidir}/requirements/bench
-commands = falcon-bench []
-
-[testenv:py34_bench_cython]
-basepython = python3.4
-deps = -r{toxinidir}/requirements/bench
-       cython
-commands = falcon-bench []
-
 [testenv:py35_bench]
 basepython = python3.5
 deps = -r{toxinidir}/requirements/bench


Test patch:
diff --git a/requirements/tests b/requirements/tests
index b5f81fa..64fe697 100644
--- a/requirements/tests
+++ b/requirements/tests
@@ -9,6 +9,5 @@ msgpack
 mujson
 ujson
 
-# Python 3 Only Handlers
-python-rapidjson; python_version >= '3'
-orjson; python_version >= '3' and python_version != '3.4' and platform_python_implementation != 'PyPy'
+python-rapidjson
+orjson; platform_python_implementation != 'PyPy'