diff --git a/.travis.yml b/.travis.yml index 515751a605c95e55c1c4ce221e1c30815e2f06e4_LnRyYXZpcy55bWw=..a04f1e671d4616c4615080c4c4ca2d858d2b5045_LnRyYXZpcy55bWw= 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,9 +1,34 @@ 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: @@ -9,4 +34,12 @@ 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 0000000000000000000000000000000000000000..a04f1e671d4616c4615080c4c4ca2d858d2b5045_LnRyYXZpcy9pbnN0YWxsLnNo --- /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 0000000000000000000000000000000000000000..a04f1e671d4616c4615080c4c4ca2d858d2b5045_LnRyYXZpcy9ydW4uc2g= --- /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 515751a605c95e55c1c4ce221e1c30815e2f06e4_Q0hBTkdFUy50eHQ=..a04f1e671d4616c4615080c4c4ca2d858d2b5045_Q0hBTkdFUy50eHQ= 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 diff --git a/conf.py b/conf.py index 515751a605c95e55c1c4ce221e1c30815e2f06e4_Y29uZi5weQ==..a04f1e671d4616c4615080c4c4ca2d858d2b5045_Y29uZi5weQ== 100644 --- a/conf.py +++ b/conf.py @@ -44,7 +44,7 @@ # 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 0000000000000000000000000000000000000000..a04f1e671d4616c4615080c4c4ca2d858d2b5045_c2NyaXB0cy9hcnRpZmFjdHMucHk= --- /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() diff --git a/setup.py b/setup.py index 515751a605c95e55c1c4ce221e1c30815e2f06e4_c2V0dXAucHk=..a04f1e671d4616c4615080c4c4ca2d858d2b5045_c2V0dXAucHk= 100644 --- a/setup.py +++ b/setup.py @@ -11,7 +11,7 @@ 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 515751a605c95e55c1c4ce221e1c30815e2f06e4_c2ltcGxlanNvbi9fX2luaXRfXy5weQ==..a04f1e671d4616c4615080c4c4ca2d858d2b5045_c2ltcGxlanNvbi9fX2luaXRfXy5weQ== 100644 --- a/simplejson/__init__.py +++ b/simplejson/__init__.py @@ -97,7 +97,7 @@ 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 515751a605c95e55c1c4ce221e1c30815e2f06e4_c2ltcGxlanNvbi9fc3BlZWR1cHMuYw==..a04f1e671d4616c4615080c4c4ca2d858d2b5045_c2ltcGxlanNvbi9fc3BlZWR1cHMuYw== 100644 --- a/simplejson/_speedups.c +++ b/simplejson/_speedups.c @@ -2654,7 +2654,7 @@ 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) {