Skip to content

Commit 7f3459d

Browse files
authored
Merge pull request #690 from effigies/maint/python_packaging
MAINT: Add Python deployment to CircleCI
2 parents e5b3816 + ac394fd commit 7f3459d

File tree

4 files changed

+68
-68
lines changed

4 files changed

+68
-68
lines changed

bids_validator/version.py

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

circle.yml

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,25 @@ jobs:
4242
- run: ./node_modules/.bin/gulp build && rsync -av --exclude=".*" --exclude="node_modules" --exclude="src" --exclude="tests" . ~/web_version/
4343
- store_artifacts:
4444
path: ~/web_version/
45+
pypi_precheck:
46+
docker:
47+
- image: alpine:3.8
48+
steps:
49+
- checkout
50+
- run:
51+
name: Set up environment
52+
command: |
53+
apk --no-cache add ca-certificates git build-base
54+
- run:
55+
name: Install Python 3 and update setuptools
56+
command: |
57+
apk --no-cache add python3 python3-dev py3-cffi
58+
python3 -m pip install --upgrade pip setuptools wheel twine readme_renderer[md]
59+
- run:
60+
name: Check build and readme rendering
61+
command: |
62+
python3 setup.py sdist bdist_wheel
63+
twine check dist/*
4564
deployment:
4665
docker:
4766
- image: node:8.11.3-alpine
@@ -59,6 +78,17 @@ jobs:
5978
# Set the version number
6079
- run: sed -i -E "s/0.0.0/$CIRCLE_TAG/" package.json
6180
- run: ./node_modules/.bin/publish
81+
# Publish to PyPI
82+
- run:
83+
name: Install Python 3 and update setuptools
84+
command: |
85+
apk --no-cache add python3 python3-dev py3-cffi
86+
python3 -m pip install --upgrade pip setuptools wheel twine
87+
- run:
88+
name: Build and push to PyPI
89+
command: |
90+
python3 setup.py sdist bdist_wheel
91+
twine upload dist/*
6292
# Update gh-pages demo site
6393
- run: git config --global user.email circleci@circleci
6494
- run: git config --global user.name CircleCI
@@ -91,10 +121,15 @@ workflows:
91121
only: /.*/
92122
tags:
93123
only: /.*/
124+
- pypi_precheck:
125+
filters:
126+
tags:
127+
only: /.*/
94128
- deployment:
95129
requires:
96130
- test
97131
- githubPagesTest
132+
- pypi_precheck
98133
filters:
99134
branches:
100135
ignore: /.*/

setup.cfg

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,34 @@
11
[metadata]
2-
description-file = README.md
2+
name = bids-validator
3+
url = https://github.com/bids-standard/bids-validator
4+
author = PyBIDS developers
5+
author_email = [email protected]
6+
maintainer = BIDS Developers
7+
maintainer_email = [email protected]
8+
description = Validator for the Brain Imaging Data Structure
9+
long_description = file:README.md
10+
long_description_content_type="text/markdown"
11+
license = MIT
12+
classifiers =
13+
Development Status :: 3 - Alpha
14+
Environment :: Console
15+
Intended Audience :: Science/Research
16+
License :: OSI Approved :: MIT License
17+
Operating System :: OS Independent
18+
Programming Language :: Python
19+
Topic :: Scientific/Engineering
20+
21+
[options]
22+
packages = find:
23+
include_package_data = True
24+
25+
[options.package_data]
26+
bids_validator =
27+
rules/*.json
28+
tsv/*.json
29+
30+
[bdist_wheel]
31+
universal=1
332

433
[versioneer]
534
VCS = git

setup.py

Lines changed: 3 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,6 @@
11
#!/usr/bin/env python
2-
import os
3-
from setuptools import setup, find_packages
2+
from setuptools import setup
43
import versioneer
54

6-
7-
PACKAGES = find_packages()
8-
9-
# Get version and release info, which is all stored in bids/version.py
10-
ver_file = os.path.join('bids_validator', 'version.py')
11-
with open(ver_file) as f:
12-
exec(f.read())
13-
14-
opts = dict(name=NAME,
15-
maintainer=MAINTAINER,
16-
maintainer_email=MAINTAINER_EMAIL,
17-
description=DESCRIPTION,
18-
url=URL,
19-
download_url=DOWNLOAD_URL,
20-
license=LICENSE,
21-
classifiers=CLASSIFIERS,
22-
author=AUTHOR,
23-
author_email=AUTHOR_EMAIL,
24-
platforms=PLATFORMS,
25-
version=versioneer.get_version(),
26-
cmdclass=versioneer.get_cmdclass(),
27-
packages=PACKAGES,
28-
package_data=PACKAGE_DATA,
29-
install_requires=REQUIRES)
30-
31-
32-
if __name__ == '__main__':
33-
setup(**opts)
5+
setup(version=versioneer.get_version(),
6+
cmdclass=versioneer.get_cmdclass())

0 commit comments

Comments
 (0)