Skip to content

Commit d3f9624

Browse files
authored
Merge pull request #4 from escherba/es/updates
v0.1.0 - modernize build, misc fixes
2 parents 3c66dda + 3c0fcd6 commit d3f9624

19 files changed

Lines changed: 5138 additions & 1361 deletions

.circleci/config.yml

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
# Use the latest 2.1 version of CircleCI pipeline process engine.
2+
# See: https://circleci.com/docs/2.0/configuration-reference
3+
version: 2.1
4+
5+
# Orbs are reusable packages of CircleCI configuration that you may share across projects, enabling you to create encapsulated, parameterized commands, jobs, and executors that can be used across multiple projects.
6+
# See: https://circleci.com/docs/2.0/orb-intro/
7+
orbs:
8+
# The python orb contains a set of prepackaged CircleCI configuration you can use repeatedly in your configuration files
9+
# Orb commands and jobs help you with common scripting around a language/tool,
10+
# so you don't have to copy and paste it everywhere.
11+
# See the orb documentation here: https://circleci.com/developer/orbs/orb/circleci/python
12+
python: circleci/python@1.2
13+
14+
# Define a job to be invoked later in a workflow.
15+
# See: https://circleci.com/docs/2.0/configuration-reference/#jobs
16+
jobs:
17+
build-and-test: # This is the name of the job, feel free to change it to better match what you're trying to do!
18+
# These next lines defines a Docker executors: https://circleci.com/docs/2.0/executor-types/
19+
# You can specify an image from Dockerhub or use one of the convenience images from CircleCI's Developer Hub
20+
# A list of available CircleCI Docker convenience images are available here: https://circleci.com/developer/images/image/cimg/python
21+
# The executor is the environment in which the steps below will be executed - below will use a python 3.8 container
22+
# Change the version below to your required version of python
23+
docker:
24+
- image: cimg/python:3.8
25+
environment:
26+
SETUPTOOLS_USE_DISTUTILS: stdlib
27+
# Checkout the code as the first step. This is a dedicated CircleCI step.
28+
# The python orb's install-packages step will install the dependencies from a Pipfile via Pipenv by default.
29+
# Here we're making sure we use just use the system-wide pip. By default, it uses the project root's requirements.txt.
30+
# Then run your tests!
31+
# CircleCI will report the results back to your VCS provider.
32+
steps:
33+
- checkout
34+
- restore_cache:
35+
keys:
36+
# when lock file changes, use increasingly general patterns to restore cache
37+
- pip-packages-v1-{{ .Branch }}-{{ checksum "pip-freeze.txt" }}
38+
- pip-packages-v1-{{ .Branch }}-
39+
- pip-packages-v1-
40+
- python/install-packages:
41+
pkg-manager: pip-dist
42+
pip-dependency-file: requirements.txt
43+
# app-dir: ~/project/package-directory/ # If you're requirements.txt isn't in the root directory.
44+
- run:
45+
name: Run tests
46+
# This assumes pytest is installed via the install-package step above
47+
command: |
48+
make env
49+
make test
50+
- save_cache:
51+
paths:
52+
- env # this path depends on where pipenv creates a virtualenv
53+
key: pip-packages-v1-{{ .Branch }}-{{ checksum "pip-freeze.txt" }}
54+
build-and-publish:
55+
docker:
56+
- image: cimg/python:3.8
57+
environment:
58+
SETUPTOOLS_USE_DISTUTILS: stdlib
59+
steps:
60+
- checkout
61+
- restore_cache:
62+
keys:
63+
# when lock file changes, use increasingly general patterns to restore cache
64+
- pip-packages-v1-{{ .Branch }}-{{ checksum "pip-freeze.txt" }}
65+
- pip-packages-v1-{{ .Branch }}-
66+
- pip-packages-v1-
67+
- python/install-packages:
68+
pkg-manager: pip-dist
69+
pip-dependency-file: requirements.txt
70+
- run:
71+
name: Publish to PyPI
72+
command: |
73+
bash create_pypirc.sh
74+
make test
75+
make release
76+
- save_cache:
77+
paths:
78+
- env # this path depends on where pipenv creates a virtualenv
79+
key: pip-packages-v1-{{ .Branch }}-{{ checksum "pip-freeze.txt" }}
80+
81+
82+
# Invoke jobs via workflows
83+
# See: https://circleci.com/docs/2.0/configuration-reference/#workflows
84+
workflows:
85+
run-tests:
86+
jobs:
87+
- build-and-test
88+
publish-to-pypi:
89+
jobs:
90+
- build-and-publish:
91+
filters:
92+
branches:
93+
only: master

.gitignore

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,10 @@ __pycache__/
1010
.DS_Store
1111
tags
1212
.cache/
13-
*.egg-info/
14-
*.swp
13+
*.sw[op]
1514

1615
# Exclude these directories
1716
bin/
18-
lib/
1917
data/
2018

2119
# Distribution / packaging
@@ -68,3 +66,8 @@ docs/_build/
6866

6967
# PyBuilder
7068
target/
69+
70+
# IDE and editor stuff
71+
.idea/
72+
.vscode/
73+
.ropeproject/

.ycm_extra_conf.py

Lines changed: 0 additions & 190 deletions
This file was deleted.

MANIFEST.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
include LICENSE
22
include README.rst
3+
include cpuinfo.py
34
include include/*.h
45
include src/*.cc
56
include src/*.cpp

Makefile

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,15 @@
1-
include cpp.mk
1+
SHELL := /usr/bin/env bash -c
2+
3+
MAKEFLAGS += --warn-undefined-variables
4+
MAKEFLAGS += --no-builtin-rules
5+
.DEFAULT_GOAL := help
6+
.SUFFIXES:
7+
28
include python.mk
9+
include cpp.mk
10+
11+
.PHONY: help
12+
help: ## show this message and exit
13+
@grep -E '^[a-zA-Z_0-9%-]+:.*?## .*$$' $(MAKEFILE_LIST) \
14+
| awk -F':' '{print $$(NF-1)":"$$NF}' | sort \
15+
| awk 'BEGIN {FS = ":.*?## "}; {printf "$(BOLD)%-24s$(END) %s\n", $$1, $$2}'

0 commit comments

Comments
 (0)