Skip to main content

Backport of the python 3.X `range` class

Project description

Unit Tests Code Coverage

PyPI Package PyPI Status PyPI Versions PyPI Implementations

Backports the python 3.X range class as a replacement for python 2.X range functions. The range class is similar to xrange in that its values are computed on demand - however, the range class is actually a lazy sequence: it supports indexing, membership testing and other sequence features.

Thus, it can be used to replace both range and xrange.

Features

This implementation provides all features introduced and documented in python 3.3.

All objects are available by default in a pure python implementation. In addition, there are optional, optimized implementations using Cython.

Performance

The backports.range is adequate in performance for most applications. It is comparable in speed to builtins when using PyPy or Cython, but somewhat slower for small ranges of less than 1000 elements. This should not be noticeable in all but the most high-performance applications.

When using CPython (aka plain python), pure python mode is considerably slower than the builtins. Again, this should not matter for most applications, but the use of Cython is strongly advised.

Benchmark for [a for a in range(...)]

Interpreter vs Builtin range vs Builtin xrange
Py2 50 - 100 20 - 50
Py3 25 - 30
Py2 + Cython 3 - 6 1.0 - 3
Py3 + Cython 1.1 - 3
PyPy2 1.6 - 2.5 1.6 - 2.3
PyPy3 0.9 - 1.2

Cython Optimizations

All Cython optimizations are optional. They are automatically made available if Cython is installed.

  • Iteration in the C long long range [-9223372036854775807, 9223372036854775807]

Compatibility

  • Features are tested against the Python 3.6 unittests for range.
  • The following python versions are tested explicitly:
    • CPython (aka python): 2.6, 2.7, 3.2, 3.3, 3.4, 3.5
    • Cython: All versions supported by cpython
    • PyPy: pypy2, pypy3
  • Some features depending on language features or other modules may not be available or work differently:
    • Comparing range against other types does not throw TypeError in python 2.X.

Notice

This packages includes parts of the python documentation (http://www.python.org) Copyright (C) 2001-2016 Python Software Foundation. Licensed under the Python Software Foundation License.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
backports.range-3.3.2.tar.gz (8.8 kB) Copy SHA256 hash SHA256 Source None

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page