Skip to content

Commit

Permalink
rfctr(build): modernize build and docs
Browse files Browse the repository at this point in the history
- Add GitHub Actions CI.
- Get docs working.
- Update tox config.
  • Loading branch information
scanny committed Sep 23, 2024
1 parent 5cd2698 commit a26fdd5
Show file tree
Hide file tree
Showing 11 changed files with 517 additions and 48 deletions.
40 changes: 40 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: ci

on:
pull_request:
branches:
- master
push:
branches:
- master

permissions:
contents: write

jobs:

build:
runs-on: ubuntu-latest

strategy:
matrix:
python-version: ["3.9", "3.10", "3.11", "3.12"]

steps:
- uses: actions/checkout@v4

- name: Install uv
uses: astral-sh/setup-uv@v2
with:
version: "0.4.15"

- name: Set up Python ${{ matrix.python-version }}
run: uv python install ${{ matrix.python-version }}

- name: Install the project
run: uv sync --all-extras --dev

- name: Test with pytest + behave
run: |
uv run pytest --cov-report term-missing --cov=opcdiag --cov=tests tests
uv run behave
6 changes: 6 additions & 0 deletions HISTORY.rst
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
History
=======

1.1.0 (2024-09-22)
------------------

* Modernize and repackage with support for Python 3.


1.0.0 (2014-01-14)
------------------

Expand Down
18 changes: 15 additions & 3 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -16,28 +16,40 @@ help:
@echo " sdist generate a source distribution into dist/"
@echo " upload upload distribution tarball to PyPI"

.PHONY: accept
accept:
$(BEHAVE) --stop

.PHONY: clean
clean:
find . -type f -name \*.pyc -exec rm {} \;
rm -rf dist *.egg-info .coverage .DS_Store

.PHONY: cleandocs
cleandocs:
$(MAKE) -C docs clean

.PHONY: coverage
coverage:
py.test --cov-report term-missing --cov=$(PACKAGE) tests/

.PHONY: docs
docs:
$(MAKE) -C docs html

.PHONY: readme
readme:
rst2html README.rst >README.html
open README.html

register:
$(SETUP) register

.PHONY: sdist
sdist:
$(SETUP) sdist

.PHONY: test
test:
$(SETUP) test

.PHONY: upload
upload:
$(SETUP) sdist upload
8 changes: 5 additions & 3 deletions docs/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@
import os
import sys

sys.path.insert(0, os.path.abspath(".."))
import tomli

from opcdiag import __version__
sys.path.insert(0, os.path.abspath(".."))

# -- General configuration --------------------------------------------------

Expand Down Expand Up @@ -46,7 +46,9 @@
# built documents.
#
# The short X.Y version.
version = __version__
with open("../pyproject.toml", "rb") as f:
toml = tomli.load(f)
version = toml["project"]["version"]
# The full version, including alpha/beta/rc tags.
release = version

Expand Down
2 changes: 1 addition & 1 deletion docs/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ opc-diag

Release v\ |version| (:ref:`Installation <install>`)

.. include:: ../README.rst
.. include:: ../README.md


User Guide
Expand Down
16 changes: 0 additions & 16 deletions docs/install.rst
Original file line number Diff line number Diff line change
Expand Up @@ -12,22 +12,6 @@ command line::

$ pip install opc-diag

There are, however, some common difficulties:

|opcd| depends on the ``lxml`` Python package, which cannot reliably be
installed by ``pip`` or ``easy_install`` on Windows. Building it from source
requires a compiler and other items the typical Windows user will not have
installed. Therefore we recommend Windows users manually install |lxml| using
a GUI installer before installing |opcd|. For that, the precompiled binaries at
http://www.lfd.uci.edu/~gohlke/pythonlibs/ have been the best source so far.

|lxml| depends on the ``libxslt`` and ``libxml2`` libraries. If those are not
present the |lxml| build will fail during the install. Linux users shouldn't
have too much trouble as these libraries are commonly installed by default. If
not, ``yum`` or ``apt-get`` is your friend for getting them installed. OS
X users running recent versions may also find these already installed. If not,
they can be installed using Homebrew.


Getting the Code
----------------
Expand Down
17 changes: 15 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
[build-system]
requires = ["setuptools>=61.0.0"]
build-backend = "setuptools.build_meta"

[project]
name = "opc-diag"
version = "1.0.0"
version = "1.0.1"
authors = [{name = "Steve Canny", email = "[email protected]"}]
classifiers = [
"Development Status :: 5 - Production/Stable",
Expand Down Expand Up @@ -61,14 +65,17 @@ filterwarnings = [
looponfailroots = ["src", "tests"]
norecursedirs = [
".git",
".ruff_cache",
"dist",
"docs",
"features",
"src",
"typings",
".tox",
]
python_files = ["test_*.py"]
python_classes = ["Test", "Describe"]
python_functions = ["it_", "its_", "they_", "and_", "but_"]
python_functions = ["test_", "it_", "its_", "they_", "and_", "but_"]

[tool.ruff]
exclude = []
Expand Down Expand Up @@ -102,10 +109,16 @@ known-local-folder = ["helpers"]

[tool.uv]
dev-dependencies = [
"alabaster<0.7.14",
"behave>=1.2.6",
"jinja2==2.11.3",
"markupsafe==0.23",
"pyright>=1.1.381",
"pytest-cov>=5.0.0",
"pytest>=8.3.3",
"ruff>=0.6.7",
"sphinx==1.8.6",
"tox>=4.20.0",
"types-lxml>=2024.9.16",
]

Expand Down
1 change: 0 additions & 1 deletion src/opcdiag/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +0,0 @@
__version__ = "1.0.0" # pragma: no cover
4 changes: 2 additions & 2 deletions tests/test_phys_pkg.py
Original file line number Diff line number Diff line change
Expand Up @@ -116,14 +116,14 @@ def it_can_create_a_new_empty_directory(self):
"""Note: tests integration with filesystem"""
# case: created if does not exist
# ------------------------------
if os.path.exists(DELETEME_DIR):
if os.path.exists(DELETEME_DIR): # pragma: no cover
shutil.rmtree(DELETEME_DIR)
PhysPkg._clear_or_make_dir(FOOBAR_DIR)
assert os.path.exists(FOOBAR_DIR)

# case: re-created if exists
# ------------------------------
if os.path.exists(DELETEME_DIR):
if os.path.exists(DELETEME_DIR): # pragma: no cover
shutil.rmtree(DELETEME_DIR)
os.makedirs(FOOBAR_DIR)
with open(FOOBAR_FILEPATH, "w") as f:
Expand Down
18 changes: 1 addition & 17 deletions tox.ini
Original file line number Diff line number Diff line change
@@ -1,26 +1,10 @@
#
# tox.ini
#
# Copyright (C) 2012, 2013 Steve Canny [email protected]
#
# This module is part of python-opc and is released under the MIT License:
# http://www.opensource.org/licenses/mit-license.php
#
# Configuration for tox and pytest

[pytest]
norecursedirs = doc *.egg-info features .git opcdiag .tox
python_classes = Test Describe
python_functions = test_ it_ they_

[tox]
envlist = py26, py27, py33
envlist = py39, py310, py311, py312

[testenv]
deps =
behave
lxml
mock
pytest

commands =
Expand Down
Loading

0 comments on commit a26fdd5

Please sign in to comment.