Skip to content

Commit

Permalink
Prepare for Python 3.12, use venv, blacken, fix some mypy errors.
Browse files Browse the repository at this point in the history
  • Loading branch information
MarcelloPerathoner committed Sep 24, 2023
1 parent ec177c3 commit 3ad963c
Show file tree
Hide file tree
Showing 72 changed files with 4,099 additions and 1,475 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/pages.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Deploy Pages
name: Deploy Github Pages

on:
# Runs on pushes targeting the default branch
Expand Down
12 changes: 6 additions & 6 deletions .github/workflows/python-package.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Python package
name: Run Tox Tests

on:
push:
Expand All @@ -13,18 +13,18 @@ jobs:
strategy:
fail-fast: false
matrix:
python-version: ["3.9", "3.10", "3.11-dev"]
python-version: ["pypy3.9", "3.9", "3.10", "3.11", "3.12"]

steps:
- uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v3
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
allow-prereleases: true
- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install pytest coverage[toml] tox
make install
- name: Run tox
run: |
tox -e py
make tox-e
55 changes: 31 additions & 24 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,70 +1,77 @@
.PHONY: lint test dist upload docs

ENV=env
BIN=$(ENV)/bin/
DIRS=src/ tests/unit/ tests/performance/ scripts/ docs/
BROWSER=firefox
PYTEST=pytest --doctest-modules --doctest-glob="*.rst"
PYTEST=pytest --doctest-modules --doctest-glob="*.rst" --doctest-ignore-import-errors

all: lint test

black:
-black $(DIRS)
-$(BIN)black $(DIRS)

blackdoc:
-blackdoc $(DIRS)
-$(BIN)blackdoc $(DIRS)

pylint:
-pylint src/
-$(BIN)pylint src/

mypy:
-mypy $(DIRS)
-$(BIN)mypy $(DIRS)

doc8:
-doc8 README.rst
-$(BIN)doc8 README.rst

pydocstyle:
pydocstyle src/
-$(BIN)pydocstyle src/

lint: black blackdoc pylint mypy pydocstyle

test:
python3 -m $(PYTEST) src/ tests/ docs/ README.rst
$(BIN)python -m $(PYTEST) src/ tests/ docs/ README.rst

test-performance:
python3 -m $(PYTEST) --performance tests/performance/
$(BIN)python -m $(PYTEST) --performance tests/performance/

coverage:
coverage erase
coverage run --branch --source=src -m $(PYTEST) tests/
coverage run --append --branch --source=src -m $(PYTEST) --debug-mode tests/
coverage report
coverage html
$(BIN)coverage erase
$(BIN)coverage run --branch --source=src -m $(PYTEST) tests/
$(BIN)coverage run --append --branch --source=src -m $(PYTEST) --debug-mode tests/
$(BIN)coverage report
$(BIN)coverage html
$(BROWSER) htmlcov/index.html

profile:
python3 -O -m scripts.profile
$(BIN)python -O -m scripts.profile

docs:
cd docs; make html

badges: test coverage
python -m scripts.make_badges
$(BIN)python docs/make_badges.py

tox:
tox
$(BIN)tox

dist: test coverage badges
python3 -m build
twine check dist/*
tox-e:
$(BIN)tox -e py

dist: clean test coverage badges
$(BIN)python -m build
$(BIN)twine check dist/*

upload: dist
twine check dist/*
twine upload dist/*
$(BIN)twine check dist/*
$(BIN)twine upload dist/*

install:
pip3 install --force-reinstall -e .
python -m venv --clear $(ENV)
$(BIN)pip install -r requirements-dev.txt
$(BIN)pip install --force-reinstall -e .

uninstall:
pip3 uninstall -e .
$(BIN)pip uninstall suffix_tree

clean:
-rm -rf dist build *.egg-info
Expand Down
6 changes: 4 additions & 2 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,13 @@

.. |py311| image:: docs/_images/tox-py311.svg

.. |pypy38| image:: docs/_images/tox-pypy38.svg
.. |py312| image:: docs/_images/tox-py312.svg

.. |pypy39| image:: docs/_images/tox-pypy39.svg

.. |coverage| image:: docs/_images/coverage.svg

|py39| |py310| |py311| |pypy38| |coverage|
|py39| |py310| |py311| |py312| |pypy39| |coverage|

A Generalized Suffix Tree for any Python sequence, with Lowest Common Ancestor
retrieval.
Expand Down
2 changes: 1 addition & 1 deletion docs/_build/.buildinfo
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Sphinx build info version 1
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
config: 297f20ea3a6874e89c9dc4cc6abc5402
config: 4bdf12490a12bba785614e1fb9e228e8
tags: 645f666f9bcd5a90fca523b33c5a78b7
2 changes: 1 addition & 1 deletion docs/_build/_images/coverage.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions docs/_build/_images/tox-py.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions docs/_build/_images/tox-py312.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions docs/_build/_images/tox-pypy39.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
123 changes: 123 additions & 0 deletions docs/_build/_static/_sphinx_javascript_frameworks_compat.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
/* Compatability shim for jQuery and underscores.js.
*
* Copyright Sphinx contributors
* Released under the two clause BSD licence
*/

/**
* small helper function to urldecode strings
*
* See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#Decoding_query_parameters_from_a_URL
*/
jQuery.urldecode = function(x) {
if (!x) {
return x
}
return decodeURIComponent(x.replace(/\+/g, ' '));
};

/**
* small helper function to urlencode strings
*/
jQuery.urlencode = encodeURIComponent;

/**
* This function returns the parsed url parameters of the
* current request. Multiple values per key are supported,
* it will always return arrays of strings for the value parts.
*/
jQuery.getQueryParameters = function(s) {
if (typeof s === 'undefined')
s = document.location.search;
var parts = s.substr(s.indexOf('?') + 1).split('&');
var result = {};
for (var i = 0; i < parts.length; i++) {
var tmp = parts[i].split('=', 2);
var key = jQuery.urldecode(tmp[0]);
var value = jQuery.urldecode(tmp[1]);
if (key in result)
result[key].push(value);
else
result[key] = [value];
}
return result;
};

/**
* highlight a given string on a jquery object by wrapping it in
* span elements with the given class name.
*/
jQuery.fn.highlightText = function(text, className) {
function highlight(node, addItems) {
if (node.nodeType === 3) {
var val = node.nodeValue;
var pos = val.toLowerCase().indexOf(text);
if (pos >= 0 &&
!jQuery(node.parentNode).hasClass(className) &&
!jQuery(node.parentNode).hasClass("nohighlight")) {
var span;
var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg");
if (isInSVG) {
span = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
} else {
span = document.createElement("span");
span.className = className;
}
span.appendChild(document.createTextNode(val.substr(pos, text.length)));
node.parentNode.insertBefore(span, node.parentNode.insertBefore(
document.createTextNode(val.substr(pos + text.length)),
node.nextSibling));
node.nodeValue = val.substr(0, pos);
if (isInSVG) {
var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect");
var bbox = node.parentElement.getBBox();
rect.x.baseVal.value = bbox.x;
rect.y.baseVal.value = bbox.y;
rect.width.baseVal.value = bbox.width;
rect.height.baseVal.value = bbox.height;
rect.setAttribute('class', className);
addItems.push({
"parent": node.parentNode,
"target": rect});
}
}
}
else if (!jQuery(node).is("button, select, textarea")) {
jQuery.each(node.childNodes, function() {
highlight(this, addItems);
});
}
}
var addItems = [];
var result = this.each(function() {
highlight(this, addItems);
});
for (var i = 0; i < addItems.length; ++i) {
jQuery(addItems[i].parent).before(addItems[i].target);
}
return result;
};

/*
* backward compatibility for jQuery.browser
* This will be supported until firefox bug is fixed.
*/
if (!jQuery.browser) {
jQuery.uaMatch = function(ua) {
ua = ua.toLowerCase();

var match = /(chrome)[ \/]([\w.]+)/.exec(ua) ||
/(webkit)[ \/]([\w.]+)/.exec(ua) ||
/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
/(msie) ([\w.]+)/.exec(ua) ||
ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) ||
[];

return {
browser: match[ 1 ] || "",
version: match[ 2 ] || "0"
};
};
jQuery.browser = {};
jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true;
}
Loading

0 comments on commit 3ad963c

Please sign in to comment.