diff options
author | Bob Ippolito <bob@redivi.com> | 2016-02-14 12:30:55 -0800 |
---|---|---|
committer | Bob Ippolito <bob@redivi.com> | 2016-02-15 09:51:34 -0800 |
commit | 8aaf1ca7d6cda799997815591c1c82e70c51a633 (patch) | |
tree | c0a3471da60ae560dc1f43f0ffabfdbbff6b40e0 | |
parent | 60227944e9879362f9a4e09dfaae605273cdfc8c (diff) | |
download | simplejson-8aaf1ca7d6cda799997815591c1c82e70c51a633.tar.gz |
-rw-r--r-- | .travis.yml | 53 | ||||
-rwxr-xr-x | .travis/install.sh | 17 | ||||
-rwxr-xr-x | .travis/run.sh | 18 | ||||
-rw-r--r-- | CHANGES.txt | 9 | ||||
-rw-r--r-- | conf.py | 2 | ||||
-rw-r--r-- | scripts/artifacts.py | 48 | ||||
-rw-r--r-- | setup.py | 2 | ||||
-rw-r--r-- | simplejson/__init__.py | 2 | ||||
-rw-r--r-- | simplejson/_speedups.c | 2 |
9 files changed, 139 insertions, 14 deletions
diff --git a/.travis.yml b/.travis.yml index 112b434..028910d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,12 +1,45 @@ language: python -python: - - "2.6" - - "2.7" - - "3.3" - - "3.4" - - "3.5" - - "pypy" +cache: + directories: + - "$HOME/.cache/pip" + - "$HOME/.pyenv" +matrix: + include: + - os: linux + dist: trusty + python: '2.6' + - os: linux + dist: trusty + python: '2.7' + - os: linux + dist: trusty + python: '3.3' + - os: linux + dist: trusty + python: '3.4' + - os: linux + dist: trusty + python: '3.5' + - os: linux + dist: trusty + python: pypy + - os: osx + language: objective-c + env: PYENV_VERSION=2.7.11 + - os: osx + language: objective-c + env: PYENV_VERSION=3.5.1 +install: +- "./.travis/install.sh" script: - - python setup.py build_ext -i - - python -m compileall -f . - - python setup.py test +- "./.travis/run.sh" +deploy: + provider: releases + api_key: + secure: QiadMGAmtPw+Ut7LWqa3U/tImPIgiPH79mM9o8DGBckcacp9HkDYvCGuOjs5hZbCBBuQ6IAkikotS8iCSwHey1GK9jSDbpgKvVGiACdp8HNhitY8V/S3e1UukDlMeu+Q7vCJtynSGX0BJuiOQB8ZQyQ2HEZ7kMQgTLCEO1Uljhc= + file: dist/*.whl + file_glob: true + on: + repo: simplejson/simplejson + tags: true + skip_cleanup: true diff --git a/.travis/install.sh b/.travis/install.sh new file mode 100755 index 0000000..2835f82 --- /dev/null +++ b/.travis/install.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +set -e +set -x + +if [[ $TRAVIS_OS_NAME == 'osx' ]]; then + if [ ! -e "$HOME/.pyenv" ]; then + git clone https://github.com/yyuu/pyenv.git ~/.pyenv + fi + PYENV_ROOT="$HOME/.pyenv" + PATH="$PYENV_ROOT/bin:$PATH" + eval "$(pyenv init -)" + hash -r + pyenv install --list + pyenv install -s $PYENV_VERSION + pip install wheel +fi diff --git a/.travis/run.sh b/.travis/run.sh new file mode 100755 index 0000000..4710a2d --- /dev/null +++ b/.travis/run.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +set -e +set -x + +if [[ $TRAVIS_OS_NAME == 'osx' ]]; then + PYENV_ROOT="$HOME/.pyenv" + PATH="$PYENV_ROOT/bin:$PATH" + eval "$(pyenv init -)" +fi + +python setup.py build_ext -i +python -m compileall -f . +python setup.py test + +if [[ $TRAVIS_OS_NAME == 'osx' ]]; then + python setup.py bdist_wheel +fi diff --git a/CHANGES.txt b/CHANGES.txt index af8e566..e657176 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,3 +1,12 @@ +Version 3.8.2 released 2016-02-14 + +* Fix implicit cast compiler warning in _speedups.c +* simplejson is now available as wheels for OS X and Windows thanks to Travis-CI + and AppVeyor respectively! Many thanks to @aebrahim for getting this party + started. + https://github.com/simplejson/simplejson/pull/130 + https://github.com/simplejson/simplejson/issues/122 + Version 3.8.1 released 2015-10-27 * Fix issue with iterable_as_array and indent option @@ -44,7 +44,7 @@ copyright = '2015, Bob Ippolito' # The short X.Y version. version = '3.8' # The full version, including alpha/beta/rc tags. -release = '3.8.1' +release = '3.8.2' # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: diff --git a/scripts/artifacts.py b/scripts/artifacts.py new file mode 100644 index 0000000..48ae2fb --- /dev/null +++ b/scripts/artifacts.py @@ -0,0 +1,48 @@ +try: + from urllib.request import urlopen +except ImportError: + from urllib import urlopen + +import io +import json +import subprocess + + +def get_json(url): + return json.load(io.TextIOWrapper(urlopen(url), encoding='utf-8')) + + +def download_file(src_url, dest_path): + print(dest_path) + subprocess.call( + ['curl', '-L', '-#', '-o', dest_path, src_url]) + + +def download_appveyor_artifacts(): + api_url = 'https://ci.appveyor.com/api' + builds = get_json( + '{}/projects/etrepum/simplejson'.format(api_url)) + + for job in builds['build']['jobs']: + url = '{api_url}/buildjobs/{jobId}/artifacts'.format( + api_url=api_url, **job) + for artifact in get_json(url): + download_file( + '{url}/{fileName}'.format(url=url, **artifact), + artifact['fileName']) + + +def download_github_artifacts(): + release = get_json( + 'https://api.github.com/repos/simplejson/simplejson/releases/latest') + for asset in release['assets']: + download_file(asset['url'], 'dist/{name}'.format(**asset)) + + +def main(): + download_appveyor_artifacts() + download_github_artifacts() + + +if __name__ == '__main__': + main() @@ -11,7 +11,7 @@ from distutils.errors import CCompilerError, DistutilsExecError, \ DistutilsPlatformError IS_PYPY = hasattr(sys, 'pypy_translation_info') -VERSION = '3.8.1' +VERSION = '3.8.2' DESCRIPTION = "Simple, fast, extensible JSON encoder/decoder for Python" with open('README.rst', 'r') as f: diff --git a/simplejson/__init__.py b/simplejson/__init__.py index c448742..b7fe828 100644 --- a/simplejson/__init__.py +++ b/simplejson/__init__.py @@ -97,7 +97,7 @@ Using simplejson.tool from the shell to validate and pretty-print:: Expecting property name: line 1 column 3 (char 2) """ from __future__ import absolute_import -__version__ = '3.8.1' +__version__ = '3.8.2' __all__ = [ 'dump', 'dumps', 'load', 'loads', 'JSONDecoder', 'JSONDecodeError', 'JSONEncoder', diff --git a/simplejson/_speedups.c b/simplejson/_speedups.c index 173c5e1..9976464 100644 --- a/simplejson/_speedups.c +++ b/simplejson/_speedups.c @@ -2654,7 +2654,7 @@ encoder_init(PyObject *self, PyObject *args, PyObject *kwds) if (PyInt_Check(int_as_string_bitcount) || PyLong_Check(int_as_string_bitcount)) { static const unsigned int long_long_bitsize = SIZEOF_LONG_LONG * 8; int int_as_string_bitcount_val = (int)PyLong_AsLong(int_as_string_bitcount); - if (int_as_string_bitcount_val > 0 && int_as_string_bitcount_val < long_long_bitsize) { + if (int_as_string_bitcount_val > 0 && int_as_string_bitcount_val < (int)long_long_bitsize) { s->max_long_size = PyLong_FromUnsignedLongLong(1ULL << int_as_string_bitcount_val); s->min_long_size = PyLong_FromLongLong(-1LL << int_as_string_bitcount_val); if (s->min_long_size == NULL || s->max_long_size == NULL) { |