summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/pcb-tools.yml26
-rw-r--r--.travis.yml21
-rw-r--r--README.md4
-rw-r--r--doc-requirements.txt4
-rw-r--r--gerber/excellon_statements.py11
-rw-r--r--gerber/utils.py4
-rw-r--r--requirements-dev.txt5
-rw-r--r--requirements-docs.txt6
-rw-r--r--requirements.txt2
-rw-r--r--test-requirements.txt4
10 files changed, 50 insertions, 37 deletions
diff --git a/.github/workflows/pcb-tools.yml b/.github/workflows/pcb-tools.yml
new file mode 100644
index 0000000..85038a7
--- /dev/null
+++ b/.github/workflows/pcb-tools.yml
@@ -0,0 +1,26 @@
+name: pcb-tools
+
+on: [push, pull_request]
+
+jobs:
+ test:
+ strategy:
+ matrix:
+ python-version: [2.7, 3.5, 3.6, 3.7, 3.8]
+
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v1
+ - name: Set up Python ${{ matrix.python-version }}
+ uses: actions/setup-python@v1
+ with:
+ python-version: ${{ matrix.python-version }}
+ - name: Install dependencies
+ run: |
+ python -m pip install --upgrade pip
+ pip install -r requirements-dev.txt
+ - name: Test with pytest
+ run: |
+ pip install pytest
+ pytest
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 7525487..0000000
--- a/.travis.yml
+++ /dev/null
@@ -1,21 +0,0 @@
-dist: precise
-language: python
-python:
- - "2.7"
- - "3.3"
- - "3.4"
- - "3.5"
-
-# command to install dependencies
-install:
- - "pip install -r requirements.txt"
- - "pip install -r test-requirements.txt"
- - "pip install coveralls"
-
-# command to run tests
-script:
- - make test-coverage
-
-# Coveralls
-after_success:
- - coveralls
diff --git a/README.md b/README.md
index f741f80..42c90f4 100644
--- a/README.md
+++ b/README.md
@@ -48,11 +48,11 @@ Documentation:
Development and Testing:
------------------------
-Dependencies for developing and testing pcb-tools are listed in test-requirements.txt. Use of a virtual environment is strongly recommended.
+Dependencies for developing and testing pcb-tools are listed in requirements-dev.txt. Use of a virtual environment is strongly recommended.
$ virtualenv venv
$ source venv/bin/activate
- (venv)$ pip install -r test-requirements.txt
+ (venv)$ pip install -r requirements-dev.txt
(venv)$ pip install -e .
We use nose to run pcb-tools's suite of unittests and doctests.
diff --git a/doc-requirements.txt b/doc-requirements.txt
deleted file mode 100644
index a163c9b..0000000
--- a/doc-requirements.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-# Doc requirements
-Sphinx==1.2.3
-numpydoc==0.5
-
diff --git a/gerber/excellon_statements.py b/gerber/excellon_statements.py
index bcf35e4..2c50ef9 100644
--- a/gerber/excellon_statements.py
+++ b/gerber/excellon_statements.py
@@ -23,6 +23,7 @@ Excellon Statements
import re
import uuid
+import itertools
from .utils import (parse_gerber_value, write_gerber_value, decimal_string,
inch, metric)
@@ -151,8 +152,7 @@ class ExcellonTool(ExcellonStatement):
tool : Tool
An ExcellonTool representing the tool defined in `line`
"""
- commands = re.split('([BCFHSTZ])', line)[1:]
- commands = [(command, value) for command, value in pairwise(commands)]
+ commands = pairwise(re.split('([BCFHSTZ])', line)[1:])
args = {}
args['id'] = id
nformat = settings.format
@@ -973,6 +973,7 @@ def pairwise(iterator):
e.g. [1, 2, 3, 4, 5, 6] ==> [(1, 2), (3, 4), (5, 6)]
"""
- itr = iter(iterator)
- while True:
- yield tuple([next(itr) for i in range(2)])
+ a, b = itertools.tee(iterator)
+ itr = zip(itertools.islice(a, 0, None, 2), itertools.islice(b, 1, None, 2))
+ for elem in itr:
+ yield elem
diff --git a/gerber/utils.py b/gerber/utils.py
index 817a36e..3d39df9 100644
--- a/gerber/utils.py
+++ b/gerber/utils.py
@@ -123,6 +123,10 @@ def write_gerber_value(value, format=(2, 5), zero_suppression='trailing'):
value : string
The specified value as a Gerber/Excellon-formatted string.
"""
+
+ if format[0] == float:
+ return "%f" %value
+
# Format precision
integer_digits, decimal_digits = format
MAX_DIGITS = integer_digits + decimal_digits
diff --git a/requirements-dev.txt b/requirements-dev.txt
new file mode 100644
index 0000000..c1e695d
--- /dev/null
+++ b/requirements-dev.txt
@@ -0,0 +1,5 @@
+# install base requirements
+-r requirements.txt
+
+coverage==4.5.4
+nose==1.3.7
diff --git a/requirements-docs.txt b/requirements-docs.txt
new file mode 100644
index 0000000..128ae8b
--- /dev/null
+++ b/requirements-docs.txt
@@ -0,0 +1,6 @@
+# install base requirements
+-r requirements.txt
+
+# documentation generation support
+Sphinx==2.2.1
+numpydoc==0.9.1
diff --git a/requirements.txt b/requirements.txt
index a7f5f01..1f769f2 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,2 +1,2 @@
-## The following requirements were added by pip --freeze:
+# cairo rendering support
cairocffi==0.6
diff --git a/test-requirements.txt b/test-requirements.txt
deleted file mode 100644
index 826da33..0000000
--- a/test-requirements.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-# Test requirements
-cairocffi==0.6
-coverage==3.7.1
-nose==1.3.4