[Git][debian-gis-team/cftime][upstream] 4 commits: New upstream version 1.0.3.1
Bas Couwenberg
gitlab at salsa.debian.org
Thu Dec 6 08:56:56 GMT 2018
Bas Couwenberg pushed to branch upstream at Debian GIS Project / cftime
Commits:
b6cd58ff by Bas Couwenberg at 2018-12-06T08:35:35Z
New upstream version 1.0.3.1
- - - - -
5973127d by Bas Couwenberg at 2018-12-06T08:35:40Z
New upstream version 1.0.3.2
- - - - -
cc271463 by Bas Couwenberg at 2018-12-06T08:35:44Z
New upstream version 1.0.3.3
- - - - -
33c6d81b by Bas Couwenberg at 2018-12-06T08:35:52Z
New upstream version 1.0.3.4
- - - - -
9 changed files:
- .travis.yml
- MANIFEST.in
- README.md
- + README.release
- cftime/_cftime.pyx
- setup.cfg
- setup.py
- test/benchmark.py
- test/test_cftime.py
Changes:
=====================================
.travis.yml
=====================================
@@ -45,8 +45,8 @@ script:
- if [[ "${BUILD_DOCS}" == "true" ]]; then
pushd docs && make html linkcheck O=-W && popd;
else
- pytest -v;
- fi;
+ pytest;
+ fi
after_success:
- coveralls
@@ -65,4 +65,4 @@ deploy:
skip_cleanup: true
on:
branch: master
- condition: '${PYTHON_VERSION} == 3.7 AND ${BUILD_DOCS} == "true"'
+ condition: '${PYTHON_VERSION} == 3.7 && ${BUILD_DOCS} == "true"'
=====================================
MANIFEST.in
=====================================
@@ -3,3 +3,4 @@ include README.md
include COPYING
recursive-include cftime *.py
recursive-include cftime *.pyx
+recursive-exclude cftime *.c
=====================================
README.md
=====================================
@@ -5,8 +5,18 @@ Time-handling functionality from netcdf4-python
[![Windows Build Status](https://ci.appveyor.com/api/projects/status/fl9taa9je4e6wi7n/branch/master?svg=true)](https://ci.appveyor.com/project/jswhit/cftime/branch/master)
[![PyPI package](https://badge.fury.io/py/cftime.svg)](http://python.org/pypi/cftime)
[![Coverage Status](https://coveralls.io/repos/github/Unidata/cftime/badge.svg?branch=master)](https://coveralls.io/github/Unidata/cftime?branch=master)
+[![Tag Status](https://img.shields.io/github/tag/UniData/cftime.svg)](https://github.com/Unidata/cftime/tags)
+[![Release Status](https://img.shields.io/github/release/UniData/cftime.svg)](https://github.com/Unidata/cftime/releases)
+[![Commits Status](https://img.shields.io/github/commits-since/UniData/cftime/latest.svg)](https://github.com/UniData/cftime/commits/master)
## News
+12/05/2018: version 1.0.3.4 released (just to fix a problem with the source
+tarball on pypi).
+
+12/05/2018: version 1.0.3.1 released. Bugfix release (fixed issue with installation
+when cython not installed, regression on 32-bit platforms, workaround for pandas
+compatibility).
+
12/01/2018: version 1.0.3 released. Test coverage with coveralls.io, improved round-tripping accuracy for non-real world calendars (like `360_day`).
10/27/2018: version 1.0.2 released. Improved accuracy (from approximately 1000 microseconds to 10 microseconds on x86
=====================================
README.release
=====================================
@@ -0,0 +1,22 @@
+* create a release branch ('vX.Y.Zrel'). In the release branch...
+* make sure version number in cftime/_cftime.pyx is correct.
+* update README.md as needed.
+* commit and push all of the above changes.
+* create a pull request for the release branch.
+* After release branch has been merged, tag a release
+ % git tag -a vX.Y.Zrel -m "version X.Y.Z release"
+ % git push origin --tags
+ Then create a release on github from that tag.
+* Update the BUILD_COMMIT variable in .travis.yml and appveyor.yml
+ in https://github.com/MacPython/cftime-wheels.
+ Push those changes to trigger the binary wheel builds (for
+ macos x, linux and windows).
+* Download the binary wheels from wheels.scipy.org, put them in a
+ directory called 'upload'. Create a source tarball using
+ % python setup.py clean
+ % python setup.py clean_cython
+ % python setup.py sdist
+ Add the source tarball to the 'upload' directory.
+* upload the release files to pypi with twine
+ (twine upload upload/*). This will require creating a ~/.pypirc
+ file with your pypi login credentials.
=====================================
cftime/_cftime.pyx
=====================================
@@ -42,7 +42,7 @@ cdef int[13] _spm_366day = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 33
_rop_lookup = {Py_LT: '__gt__', Py_LE: '__ge__', Py_EQ: '__eq__',
Py_GT: '__lt__', Py_GE: '__le__', Py_NE: '__ne__'}
-__version__ = '1.0.3'
+__version__ = '1.0.3.4'
# Adapted from http://delete.me.uk/2005/03/iso8601.html
# Note: This regex ensures that all ISO8601 timezone formats are accepted - but, due to legacy support for other timestrings, not all incorrect formats can be rejected.
@@ -65,6 +65,7 @@ class real_datetime(datetime_python):
@property
def dayofyr(self):
return self.timetuple().tm_yday
+ nanosecond = 0 # workaround for pandas bug (cftime issue #77)
# start of the gregorian calendar
gregorian = real_datetime(1582,10,15)
@@ -455,7 +456,7 @@ def DateFromJulianDay(JD, calendar='standard', only_use_cftime_datetimes=False,
# get the day (Z) and the fraction of the day (F)
# use 'round half up' rounding instead of numpy's even rounding
# so that 0.5 is rounded to 1.0, not 0 (cftime issue #49)
- Z = np.int32(_round_half_up(julian))
+ Z = np.atleast_1d(np.int32(_round_half_up(julian)))
F = (julian + 0.5 - Z).astype(np.longdouble)
cdef Py_ssize_t i_max = len(Z)
@@ -498,7 +499,7 @@ def DateFromJulianDay(JD, calendar='standard', only_use_cftime_datetimes=False,
# recomputing year,month,day etc
# ms_eps is proportional to julian day,
# about 47 microseconds in 2000 for Julian base date in -4713
- ms_eps = np.array(np.finfo(np.float64).eps,np.longdouble)
+ ms_eps = np.atleast_1d(np.array(np.finfo(np.float64).eps,np.longdouble))
ms_eps = 86400000000.*np.maximum(ms_eps*julian, ms_eps)
microsecond = np.where(microsecond < ms_eps, 0, microsecond)
indxms = microsecond > 1000000-ms_eps
=====================================
setup.cfg
=====================================
@@ -2,6 +2,7 @@
testpaths = test
addopts =
-ra
+ -v
--doctest-modules
--cov-config .coveragerc
--cov=cftime
=====================================
setup.py
=====================================
@@ -3,14 +3,20 @@ from __future__ import print_function
import os
import sys
-from Cython.Build import cythonize
from setuptools import Command, Extension, setup
+# https://github.com/Unidata/cftime/issues/34
+try:
+ from Cython.Build import cythonize
+except ImportError:
+ cythonize = False
+
+BASEDIR = os.path.abspath(os.path.dirname(__file__))
+CMDS_NOCYTHONIZE = ['clean','clean_cython','sdist']
COMPILER_DIRECTIVES = {}
DEFINE_MACROS = None
FLAG_COVERAGE = '--cython-coverage' # custom flag enabling Cython line tracing
-BASEDIR = os.path.abspath(os.path.dirname(__file__))
NAME = 'cftime'
CFTIME_DIR = os.path.join(BASEDIR, NAME)
CYTHON_FNAME = os.path.join(CFTIME_DIR, '_{}.pyx'.format(NAME))
@@ -64,7 +70,8 @@ def description():
return result
-if FLAG_COVERAGE in sys.argv or os.environ.get('CYTHON_COVERAGE', None):
+if ((FLAG_COVERAGE in sys.argv or os.environ.get('CYTHON_COVERAGE', None))
+ and cythonize):
COMPILER_DIRECTIVES = {'linetrace': True,
'warn.maybe_uninitialized': False,
'warn.unreachable': False,
@@ -75,9 +82,18 @@ if FLAG_COVERAGE in sys.argv or os.environ.get('CYTHON_COVERAGE', None):
sys.argv.remove(FLAG_COVERAGE)
print('enable: "linetrace" Cython compiler directive')
-extension = Extension('{}._{}'.format(NAME, NAME),
- sources=[CYTHON_FNAME],
- define_macros=DEFINE_MACROS)
+# See https://github.com/Unidata/cftime/issues/91
+if any([arg in CMDS_NOCYTHONIZE for arg in sys.argv]):
+ ext_modules = []
+else:
+ extension = Extension('{}._{}'.format(NAME, NAME),
+ sources=[CYTHON_FNAME],
+ define_macros=DEFINE_MACROS)
+ ext_modules = [extension]
+ if cythonize:
+ ext_modules = cythonize(extension,
+ compiler_directives=COMPILER_DIRECTIVES,
+ language_level=2)
setup(
name=NAME,
@@ -89,9 +105,18 @@ setup(
cmdclass={'clean_cython': CleanCython},
packages=[NAME],
version=extract_version(),
- ext_modules=cythonize(extension,
- compiler_directives=COMPILER_DIRECTIVES,
- language_level=2),
+ ext_modules=ext_modules,
setup_requires=load('setup.txt'),
install_requires=load('requirements.txt'),
- tests_require=load('requirements-dev.txt'))
+ tests_require=load('requirements-dev.txt'),
+ classifiers=[
+ 'Development Status :: 5 - Production/Stable',
+ 'Operating System :: MacOS :: MacOS X',
+ 'Operating System :: Microsoft :: Windows',
+ 'Operating System :: POSIX :: Linux',
+ 'Programming Language :: Python',
+ 'Programming Language :: Python :: 2.7',
+ 'Programming Language :: Python :: 3.6',
+ 'Programming Language :: Python :: 3.7',
+ 'Topic :: Scientific/Engineering',
+ 'License :: OSI Approved'])
=====================================
test/benchmark.py
=====================================
@@ -1,17 +1,20 @@
from cftime import num2date, date2num
-import time
+try:
+ from time import perf_counter
+except ImportError:
+ from time import clock as perf_counter
import numpy as np
units = 'hours since 01-01-01'
calendar = 'standard'
timevals = np.arange(0,10000,1)
print('processing %s values...' % len(timevals))
-t1 = time.clock()
+t1 = perf_counter()
dates =\
num2date(timevals,units=units,calendar=calendar,only_use_cftime_datetimes=True)
-t2 = time.clock()
+t2 = perf_counter()
t = t2-t1
print('num2date took %s seconds' % t)
timevals2 = date2num(dates,units=units,calendar=calendar)
-t1 = time.clock()
+t1 = perf_counter()
t = t1-t2
print('date2num took %s seconds' % t)
=====================================
test/test_cftime.py
=====================================
@@ -354,7 +354,7 @@ class cftimeTestCase(unittest.TestCase):
assert(err < eps)
assert(date1.strftime(dateformat) == date2.strftime(dateformat))
if verbose:
- print('calender = %s max abs err (microsecs) = %s eps = %s' % \
+ print('calendar = %s max abs err (microsecs) = %s eps = %s' % \
(calendar,maxerr,eps))
units = 'milliseconds since 1800-01-30 01:01:01'
eps = 0.1
@@ -370,7 +370,7 @@ class cftimeTestCase(unittest.TestCase):
assert(err < eps)
assert(date1.strftime(dateformat) == date2.strftime(dateformat))
if verbose:
- print('calender = %s max abs err (millisecs) = %s eps = %s' % \
+ print('calendar = %s max abs err (millisecs) = %s eps = %s' % \
(calendar,maxerr,eps))
eps = 1.e-3
units = 'seconds since 0001-01-30 01:01:01'
@@ -386,7 +386,7 @@ class cftimeTestCase(unittest.TestCase):
assert(err < eps)
assert(date1.strftime(dateformat) == date2.strftime(dateformat))
if verbose:
- print('calender = %s max abs err (secs) = %s eps = %s' % \
+ print('calendar = %s max abs err (secs) = %s eps = %s' % \
(calendar,maxerr,eps))
eps = 1.e-5
units = 'minutes since 0001-01-30 01:01:01'
@@ -402,7 +402,7 @@ class cftimeTestCase(unittest.TestCase):
assert(err < eps)
assert(date1.strftime(dateformat) == date2.strftime(dateformat))
if verbose:
- print('calender = %s max abs err (mins) = %s eps = %s' % \
+ print('calendar = %s max abs err (mins) = %s eps = %s' % \
(calendar,maxerr,eps))
eps = 1.e-6
units = 'hours since 0001-01-30 01:01:01'
@@ -418,7 +418,7 @@ class cftimeTestCase(unittest.TestCase):
assert(err < eps)
assert(date1.strftime(dateformat) == date2.strftime(dateformat))
if verbose:
- print('calender = %s max abs err (hours) = %s eps = %s' % \
+ print('calendar = %s max abs err (hours) = %s eps = %s' % \
(calendar,maxerr,eps))
eps = 1.e-8
units = 'days since 0001-01-30 01:01:01'
@@ -434,7 +434,7 @@ class cftimeTestCase(unittest.TestCase):
assert(err < eps)
assert(date1.strftime(dateformat) == date2.strftime(dateformat))
if verbose:
- print('calender = %s max abs err (days) = %s eps = %s' % \
+ print('calendar = %s max abs err (days) = %s eps = %s' % \
(calendar,maxerr,eps))
# issue 353
View it on GitLab: https://salsa.debian.org/debian-gis-team/cftime/compare/852410474bcf4617ceef81299cbad89ff41df4a8...33c6d81bba800432b2c2804d9b7054275b24038e
--
View it on GitLab: https://salsa.debian.org/debian-gis-team/cftime/compare/852410474bcf4617ceef81299cbad89ff41df4a8...33c6d81bba800432b2c2804d9b7054275b24038e
You're receiving this email because of your account on salsa.debian.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/pkg-grass-devel/attachments/20181206/923c4508/attachment-0001.html>
More information about the Pkg-grass-devel
mailing list