Repository: NicolasLM/atoma (language: python)

Issue:
Add support for Python 3.10, drop EOL 3.6
Python 3.10 was released on 2021-10-04:

* https://discuss.python.org/t/python-3-10-0-is-now-available/10955

Python 3.6 is EOL and no longer receiving security updates (or any updates) from the core Python team.

| cycle | latest |  release   |    eol     |
|:------|:-------|:----------:|:----------:|
| 3.10  | 3.10.1 | 2021-10-04 | 2026-10-04 |
| 3.9   | 3.9.9  | 2020-10-05 | 2025-10-05 |
| 3.8   | 3.8.12 | 2019-10-14 | 2024-10-14 |
| 3.7   | 3.7.12 | 2018-06-27 | 2023-06-27 |
| 3.6   | 3.6.15 | 2016-12-23 | 2021-12-23 |

https://endoflife.date/python



Discussion / hints:

Fix patch:
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 39ff52c..0000000
--- a/.travis.yml
+++ /dev/null
@@ -1,21 +0,0 @@
-language: python
-sudo: true
-
-python:
-    - "3.6"
-    - "3.7"
-    - "3.8"
-    - "3.9"
-
-install:
-    - pip install -e .[tests]
-
-script:
-    - pytest -v --cov=atoma tests/
-    - pycodestyle --ignore=E252 atoma tests
-
-after_success:
-  - coveralls
-
-notifications:
-    email: false
diff --git a/README.rst b/README.rst
index 8dcbe7b..a605850 100644
--- a/README.rst
+++ b/README.rst
@@ -1,10 +1,12 @@
 Atoma
 =====
 
-.. image:: https://travis-ci.org/NicolasLM/atoma.svg?branch=master
-    :target: https://travis-ci.org/NicolasLM/atoma
-.. image:: https://coveralls.io/repos/github/NicolasLM/atoma/badge.svg?branch=master
-    :target: https://coveralls.io/github/NicolasLM/atoma?branch=master
+.. image:: https://github.com/NicolasLM/atoma/actions/workflows/test.yml/badge.svg
+    :target: https://github.com/NicolasLM/atoma/actions/workflows/test.yml
+.. image:: https://codecov.io/gh/NicolasLM/atoma/branch/main/graph/badge.svg
+    :target: https://codecov.io/gh/NicolasLM/atoma
+
+
 
 Atom, RSS and JSON feed parser for Python 3.
 
@@ -79,7 +81,7 @@ Some seldom used features are not implemented:
 
 * XML signature and encryption
 * Some Atom and RSS extensions
-* Atom content other than `text`, `html` and `xhtml`
+* Atom content other than ``text``, ``html`` and ``xhtml``
 
 License
 -------
diff --git a/setup.py b/setup.py
index 6f42599..2d3c851 100644
--- a/setup.py
+++ b/setup.py
@@ -25,6 +25,7 @@
     author='Nicolas Le Manchet',
     author_email='nicolas@lemanchet.fr',
     license='MIT',
+    python_requires=">=3.7",
     # See https://pypi.python.org/pypi?%3Aaction=list_classifiers
     classifiers=[
         'Development Status :: 4 - Beta',
@@ -34,10 +35,11 @@
         'Natural Language :: English',
         'Programming Language :: Python :: 3',
         'Programming Language :: Python :: 3 :: Only',
-        'Programming Language :: Python :: 3.6',
         'Programming Language :: Python :: 3.7',
         'Programming Language :: Python :: 3.8',
         'Programming Language :: Python :: 3.9',
+        'Programming Language :: Python :: 3.10',
+        'Programming Language :: Python :: 3.11',
         'Topic :: Text Processing :: Markup :: XML'
     ],
     keywords='atom rss json feed feeds syndication parser RFC4287',


Test patch:
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
new file mode 100644
index 0000000..b2e1e91
--- /dev/null
+++ b/.github/workflows/test.yml
@@ -0,0 +1,47 @@
+name: Test
+
+on: [push, pull_request, workflow_dispatch]
+
+env:
+  FORCE_COLOR: 1
+
+jobs:
+  test:
+    runs-on: ${{ matrix.os }}
+    strategy:
+      fail-fast: false
+      matrix:
+        python-version: ["3.7", "3.8", "3.9", "3.10", "3.11"]
+        os: [windows-latest, macos-latest, ubuntu-latest]
+        include:
+          # Include new variables for Codecov
+          - { codecov-flag: GHA_Windows, os: windows-latest }
+          - { codecov-flag: GHA_macOS, os: macos-latest }
+          - { codecov-flag: GHA_Ubuntu, os: ubuntu-latest }
+
+    steps:
+      - uses: actions/checkout@v2
+
+      - name: Set up Python ${{ matrix.python-version }}
+        uses: actions/setup-python@v4
+        with:
+          python-version: ${{ matrix.python-version }}
+          cache: pip
+          cache-dependency-path: "setup.py"
+
+      - name: Install dependencies
+        run: |
+          python -m pip install -U pip
+          python -m pip install -U wheel
+          python -m pip install -e ".[tests]"
+
+      - name: Run tests
+        run: |
+          pytest -v --cov=atoma tests/ --cov-report xml
+          pycodestyle --ignore=E252 atoma tests
+
+      - name: Upload coverage
+        uses: codecov/codecov-action@v3
+        with:
+          flags: ${{ matrix.codecov-flag }}
+          name: ${{ matrix.os }} Python ${{ matrix.python-version }}