Skip to content

Commit

Permalink
chore: Drop py3.8 support | Replace pkg_resources lib with importlib.…
Browse files Browse the repository at this point in the history
…resources

* chore: transitioned from pkg_resources api to importlib-resources api
* feat!: drop support for python 3.8
  • Loading branch information
farhan committed Aug 7, 2024
1 parent 601f26e commit 805ea25
Show file tree
Hide file tree
Showing 10 changed files with 26 additions and 28 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ jobs:
strategy:
matrix:
os: [ubuntu-20.04]
python-version: ['3.8', '3.11', '3.12']
python-version: ['3.11', '3.12']
toxenv: [django42]
steps:
- uses: actions/checkout@v2
Expand All @@ -31,7 +31,7 @@ jobs:
run: tox -e ${{ matrix.toxenv }}

- name: Upload coverage to CodeCov
if: matrix.python-version == '3.8' && matrix.toxenv == 'django42'
if: matrix.python-version == '3.11' && matrix.toxenv == 'django42'
uses: codecov/codecov-action@v4
with:
file: ./coverage.xml
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/pypi-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ jobs:
- name: setup python
uses: actions/setup-python@v2
with:
python-version: 3.8
python-version: 3.11

- name: Install pip
run: pip install -r requirements/pip.txt
Expand Down
5 changes: 5 additions & 0 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,11 @@ Change history for XBlock SDK

These are notable changes in XBlock.

1.0.0 - 2024-05-30
------------------
* dropped python 3.8 support
* transitioned from deprecated pkg_resources lib to importlib.resources

0.9.0
-----
* Xblock bumped to 3.0.0. Removed the deprecated id_generator method parameter in xblock.runtime
Expand Down
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ COPY . /usr/local/src/xblock-sdk
WORKDIR /usr/local/src/xblock-sdk

ENV VIRTUAL_ENV=/venvs/xblock-sdk
RUN python3.8 -m venv $VIRTUAL_ENV
RUN python3.11 -m venv $VIRTUAL_ENV
ENV PATH="$VIRTUAL_ENV/bin:$PATH"

RUN pip install --upgrade pip && pip install -r /usr/local/src/xblock-sdk/requirements/dev.txt
Expand Down
6 changes: 3 additions & 3 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ Getting Started
Developing
==========

This code runs on Python 3.8 or newer.
This code runs on Python 3.11 or newer.

One Time Setup
--------------
Expand All @@ -40,7 +40,7 @@ One Time Setup
# Set up a virtualenv with the same name as the repo and activate it
# Here's how you might do that if you have virtualenvwrapper setup.
mkvirtualenv -p python3.8 xblock-sdk
mkvirtualenv -p python3.11 xblock-sdk
# Install system requirements needed to run this on ubuntu.
# Note: Debian 10 needs libjpeg62-turbo-dev instead of libjpeg62-dev.
Expand Down Expand Up @@ -107,7 +107,7 @@ On the first startup run the following command to create the SQLite database.

Command::

$ docker container exec -it edx.devstack.xblock-sdk python3.8 manage.py migrate
$ docker container exec -it edx.devstack.xblock-sdk python3.11 manage.py migrate

You should now be able to access the XBlock SDK environment in your browser at http://localhost:8000

Expand Down
15 changes: 6 additions & 9 deletions sample_xblocks/filethumbs/filethumbs.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,10 @@
"""



import json
import logging

import pkg_resources
import importlib.resources
import png
from web_fragments.fragment import Fragment
from xblock.core import XBlock
Expand Down Expand Up @@ -72,8 +70,9 @@ def student_view(self, context=None): # pylint: disable=W0613
"""

# Load the HTML fragment from within the package and fill in the template
html_str = pkg_resources.resource_string(__name__,
"static/html/thumbs.html").decode('utf-8')
html_str = importlib.resources.files(__package__).joinpath(
"static/html/thumbs.html"
).read_text(encoding="utf-8")
frag = Fragment(str(html_str))

if not self.fs.exists("thumbsvotes.json"):
Expand All @@ -86,12 +85,10 @@ def student_view(self, context=None): # pylint: disable=W0613
self.downvotes = votes['down']

# Load the CSS and JavaScript fragments from within the package
css_str = pkg_resources.resource_string(__name__,
"static/css/thumbs.css").decode('utf-8')
css_str = importlib.resources.files(__package__).joinpath("static/css/thumbs.css").read_text(encoding="utf-8")
frag.add_css(str(css_str))

js_str = pkg_resources.resource_string(__name__,
"static/js/src/thumbs.js").decode('utf-8')
js_str = importlib.resources.files(__package__).joinpath("static/js/src/thumbs.js").read_text(encoding="utf-8")
frag.add_javascript(str(js_str))

with self.fs.open('uparrow.png', 'wb') as file_output:
Expand Down
15 changes: 6 additions & 9 deletions sample_xblocks/thumbs/thumbs.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
"""An XBlock providing thumbs-up/thumbs-down voting."""



import logging

import pkg_resources
import importlib.resources
from web_fragments.fragment import Fragment
from xblock.core import XBlock, XBlockAside
from xblock.fields import Boolean, Integer, Scope
Expand Down Expand Up @@ -36,17 +34,16 @@ def student_view(self, context=None): # pylint: disable=W0613
"""

# Load the HTML fragment from within the package and fill in the template
html_str = pkg_resources.resource_string(__name__,
"static/html/thumbs.html").decode('utf-8')
html_str = importlib.resources.files(
__package__
).joinpath("static/html/thumbs.html").read_text(encoding="utf-8")
frag = Fragment(str(html_str).format(block=self))

# Load the CSS and JavaScript fragments from within the package
css_str = pkg_resources.resource_string(__name__,
"static/css/thumbs.css").decode('utf-8')
css_str = importlib.resources.files(__package__).joinpath("static/css/thumbs.css").read_text(encoding="utf-8")
frag.add_css(str(css_str))

js_str = pkg_resources.resource_string(__name__,
"static/js/src/thumbs.js").decode('utf-8')
js_str = importlib.resources.files(__package__).joinpath("static/js/src/thumbs.js").read_text(encoding="utf-8")
frag.add_javascript(str(js_str))

frag.initialize_js('ThumbsBlock')
Expand Down
1 change: 0 additions & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,6 @@ def get_version(*file_paths):
'License :: OSI Approved :: GNU Affero General Public License v3 or later (AGPLv3+)',
'Natural Language :: English',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.8',
'Programming Language :: Python :: 3.11',
'Programming Language :: Python :: 3.12',
],
Expand Down
2 changes: 1 addition & 1 deletion tox.ini
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[tox]
envlist = py{38,311,312}-django{42},quality
envlist = py{311,312}-django{42},quality

[pycodestyle]
exclude = .git,.tox,migrations
Expand Down
2 changes: 1 addition & 1 deletion workbench/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@
Provide a djangoapp for XBlock development
"""

__version__ = '0.11.0'
__version__ = '0.12.0'

0 comments on commit 805ea25

Please sign in to comment.