Merge pull request #217 from mailgun/dietz/REP-1030

Drops Python 2 support [python3]
This commit is contained in:
Matt Dietz
2021-06-15 09:46:29 -05:00
committed by GitHub
11 changed files with 2652 additions and 2417 deletions

20
.build/Dockerfile Normal file
View File

@@ -0,0 +1,20 @@
FROM python:3.9-slim-buster AS deps
RUN apt-get update && \
apt-get install -y build-essential git curl python3-dev libatlas3-base libatlas-base-dev liblapack-dev libxml2 libxml2-dev libffi6 libffi-dev musl-dev libxslt-dev
FROM deps AS testable
ARG REPORT_PATH
VOLUME ["/var/mailgun", "/etc/mailgun/ssl", ${REPORT_PATH}]
ADD . /app
WORKDIR /app
COPY wheel/* /wheel/
RUN mkdir -p ${REPORT_PATH}
RUN python ./setup.py build bdist_wheel -d /wheel && \
pip install --no-deps /wheel/*
ENTRYPOINT ["/bin/sh", "/app/run_tests.sh"]

3
.gitignore vendored
View File

@@ -54,3 +54,6 @@ _trial_temp
# OSX # OSX
.DS_Store .DS_Store
# vim-backup
*.bak

11
requirements.txt Normal file
View File

@@ -0,0 +1,11 @@
chardet>=1.0.1
cchardet>=0.3.5
cssselect
html5lib
joblib
lxml>=2.3.3
numpy
regex>=1
scikit-learn==0.24.1 # pickled versions of classifier, else rebuild
scipy
six>=1.10.0

4
run_tests.sh Executable file
View File

@@ -0,0 +1,4 @@
#!/usr/bin/env bash
set -ex
REPORT_PATH="${REPORT_PATH:-./}"
nosetests --with-xunit --with-coverage --cover-xml --cover-xml-file $REPORT_PATH/coverage.xml --xunit-file=$REPORT_PATH/nosetests.xml --cover-package=talon .

View File

@@ -19,12 +19,12 @@ class InstallCommand(install):
if self.no_ml: if self.no_ml:
dist = self.distribution dist = self.distribution
dist.packages=find_packages(exclude=[ dist.packages=find_packages(exclude=[
'tests', "tests",
'tests.*', "tests.*",
'talon.signature', "talon.signature",
'talon.signature.*', "talon.signature.*",
]) ])
for not_required in ['numpy', 'scipy', 'scikit-learn==0.16.1']: for not_required in ["numpy", "scipy", "scikit-learn==0.24.1"]:
dist.install_requires.remove(not_required) dist.install_requires.remove(not_required)
@@ -48,12 +48,13 @@ setup(name='talon',
"regex>=1", "regex>=1",
"numpy", "numpy",
"scipy", "scipy",
"scikit-learn==0.16.1", # pickled versions of classifier, else rebuild "scikit-learn==0.24.1", # pickled versions of classifier, else rebuild
'chardet>=1.0.1', "chardet>=1.0.1",
'cchardet>=0.3.5', "cchardet>=0.3.5",
'cssselect', "cssselect",
'six>=1.10.0', "six>=1.10.0",
'html5lib' "html5lib",
"joblib",
], ],
tests_require=[ tests_require=[
"mock", "mock",

View File

@@ -457,7 +457,7 @@ def _extract_from_html(msg_body):
msg_body = msg_body.replace(b'\r\n', b'\n') msg_body = msg_body.replace(b'\r\n', b'\n')
msg_body = re.sub(r"\<\?xml.+\?\>|\<\!DOCTYPE.+]\>", "", msg_body) msg_body = re.sub(br"\<\?xml.+\?\>|\<\!DOCTYPE.+]\>", "", msg_body)
html_tree = html_document_fromstring(msg_body) html_tree = html_document_fromstring(msg_body)

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -8,7 +8,7 @@ body belongs to the signature.
from __future__ import absolute_import from __future__ import absolute_import
from numpy import genfromtxt from numpy import genfromtxt
from sklearn.externals import joblib import joblib
from sklearn.svm import LinearSVC from sklearn.svm import LinearSVC

3
test-requirements.txt Normal file
View File

@@ -0,0 +1,3 @@
coverage
mock
nose>=1.2.1

View File

@@ -826,10 +826,10 @@ The user experience was unparallelled. Please continue production. I'm sending p
that this line is intact.""" that this line is intact."""
parsed = quotations.extract_from_plain(msg_body) parsed = quotations.extract_from_plain(msg_body)
eq_(msg_body, parsed.decode('utf8')) eq_(msg_body, parsed)
def test_appointment(): def test_appointment_2():
msg_body = """Invitation for an interview: msg_body = """Invitation for an interview:
Date: Wednesday 3, October 2011 Date: Wednesday 3, October 2011
@@ -838,4 +838,4 @@ Address: 130 Fox St
Please bring in your ID.""" Please bring in your ID."""
parsed = quotations.extract_from_plain(msg_body) parsed = quotations.extract_from_plain(msg_body)
eq_(msg_body, parsed.decode('utf8')) eq_(msg_body, parsed)