Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-toolz for openSUSE:Factory checked in at 2022-10-12 18:24:27 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-toolz (Old) and /work/SRC/openSUSE:Factory/.python-toolz.new.2275 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-toolz" Wed Oct 12 18:24:27 2022 rev:8 rq:1009874 version:0.12.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-toolz/python-toolz.changes 2022-01-08 23:24:51.378292233 +0100 +++ /work/SRC/openSUSE:Factory/.python-toolz.new.2275/python-toolz.changes 2022-10-12 18:25:58.909857891 +0200 @@ -1,0 +2,12 @@ +Tue Oct 11 16:02:42 UTC 2022 - Yogalakshmi Arunachalam <yarunacha...@suse.com> + +- update to version 0.12.0 + * Add apply (#411) + * Support newer Python versions--up to Python 3.11-alpha (#525, #527, #533) + * Improve warning when using toolz.compatibility (#485) + * Improve documentation (#507, #524, #526, #530) + * Improve performance of merge_with (#532) + * Improve import times (#534) + * Auto-upload new releases to PyPI (#536, #537) + +------------------------------------------------------------------- Old: ---- toolz-0.11.2.tar.gz New: ---- toolz-0.12.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-toolz.spec ++++++ --- /var/tmp/diff_new_pack.CW75bm/_old 2022-10-12 18:26:00.649862238 +0200 +++ /var/tmp/diff_new_pack.CW75bm/_new 2022-10-12 18:26:00.657862258 +0200 @@ -19,7 +19,7 @@ %{?!python_module:%define python_module() python3-%{**}} %global skip_python2 1 Name: python-toolz -Version: 0.11.2 +Version: 0.12.0 Release: 0 Summary: List processing tools and functional utilities for python License: BSD-3-Clause ++++++ toolz-0.11.2.tar.gz -> toolz-0.12.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/toolz-0.11.2/PKG-INFO new/toolz-0.12.0/PKG-INFO --- old/toolz-0.11.2/PKG-INFO 2021-11-06 06:22:52.936383200 +0100 +++ new/toolz-0.12.0/PKG-INFO 2022-07-10 06:29:51.076025200 +0200 @@ -1,12 +1,145 @@ -Metadata-Version: 2.1 +Metadata-Version: 1.2 Name: toolz -Version: 0.11.2 +Version: 0.12.0 Summary: List processing tools and functional utilities Home-page: https://github.com/pytoolz/toolz/ Author: https://raw.github.com/pytoolz/toolz/master/AUTHORS.md Maintainer: Erik Welch Maintainer-email: erik.n.we...@gmail.com License: BSD +Description: Toolz + ===== + + |Build Status| |Coverage Status| |Version Status| + + A set of utility functions for iterators, functions, and dictionaries. + + See the PyToolz documentation at https://toolz.readthedocs.io + + LICENSE + ------- + + New BSD. See `License File <https://github.com/pytoolz/toolz/blob/master/LICENSE.txt>`__. + + Install + ------- + + ``toolz`` is on the Python Package Index (PyPI): + + :: + + pip install toolz + + Structure and Heritage + ---------------------- + + ``toolz`` is implemented in three parts: + + |literal itertoolz|_, for operations on iterables. Examples: ``groupby``, + ``unique``, ``interpose``, + + |literal functoolz|_, for higher-order functions. Examples: ``memoize``, + ``curry``, ``compose``, + + |literal dicttoolz|_, for operations on dictionaries. Examples: ``assoc``, + ``update-in``, ``merge``. + + .. |literal itertoolz| replace:: ``itertoolz`` + .. _literal itertoolz: https://github.com/pytoolz/toolz/blob/master/toolz/itertoolz.py + + .. |literal functoolz| replace:: ``functoolz`` + .. _literal functoolz: https://github.com/pytoolz/toolz/blob/master/toolz/functoolz.py + + .. |literal dicttoolz| replace:: ``dicttoolz`` + .. _literal dicttoolz: https://github.com/pytoolz/toolz/blob/master/toolz/dicttoolz.py + + These functions come from the legacy of functional languages for list + processing. They interoperate well to accomplish common complex tasks. + + Read our `API + Documentation <https://toolz.readthedocs.io/en/latest/api.html>`__ for + more details. + + Example + ------- + + This builds a standard wordcount function from pieces within ``toolz``: + + .. code:: python + + >>> def stem(word): + ... """ Stem word to primitive form """ + ... return word.lower().rstrip(",.!:;'-\"").lstrip("'\"") + + >>> from toolz import compose, frequencies + >>> from toolz.curried import map + >>> wordcount = compose(frequencies, map(stem), str.split) + + >>> sentence = "This cat jumped over this other cat!" + >>> wordcount(sentence) + {'this': 2, 'cat': 2, 'jumped': 1, 'over': 1, 'other': 1} + + Dependencies + ------------ + + ``toolz`` supports Python 3.5+ with a common codebase. + It is pure Python and requires no dependencies beyond the standard + library. + + It is, in short, a lightweight dependency. + + + CyToolz + ------- + + The ``toolz`` project has been reimplemented in `Cython <http://cython.org>`__. + The ``cytoolz`` project is a drop-in replacement for the Pure Python + implementation. + See `CyToolz GitHub Page <https://github.com/pytoolz/cytoolz/>`__ for more + details. + + See Also + -------- + + - `Underscore.js <https://underscorejs.org/>`__: A similar library for + JavaScript + - `Enumerable <https://ruby-doc.org/core-2.0.0/Enumerable.html>`__: A + similar library for Ruby + - `Clojure <https://clojure.org/>`__: A functional language whose + standard library has several counterparts in ``toolz`` + - `itertools <https://docs.python.org/2/library/itertools.html>`__: The + Python standard library for iterator tools + - `functools <https://docs.python.org/2/library/functools.html>`__: The + Python standard library for function tools + + Contributions Welcome + --------------------- + + ``toolz`` aims to be a repository for utility functions, particularly + those that come from the functional programming and list processing + traditions. We welcome contributions that fall within this scope. + + We also try to keep the API small to keep ``toolz`` manageable. The ideal + contribution is significantly different from existing functions and has + precedent in a few other functional systems. + + Please take a look at our + `issue page <https://github.com/pytoolz/toolz/issues>`__ + for contribution ideas. + + Community + --------- + + See our `mailing list <https://groups.google.com/forum/#!forum/pytoolz>`__. + We're friendly. + + .. |Build Status| image:: https://github.com/pytoolz/toolz/workflows/Test/badge.svg + :target: https://github.com/pytoolz/toolz/actions + .. |Coverage Status| image:: https://coveralls.io/repos/pytoolz/toolz/badge.svg?branch=master + :target: https://coveralls.io/r/pytoolz/toolz + .. |Version Status| image:: https://badge.fury.io/py/toolz.svg + :target: https://badge.fury.io/py/toolz + Keywords: functional utility itertools functools Platform: UNKNOWN Classifier: Development Status :: 5 - Production/Stable @@ -22,140 +155,3 @@ Classifier: Programming Language :: Python :: Implementation :: CPython Classifier: Programming Language :: Python :: Implementation :: PyPy Requires-Python: >=3.5 -License-File: LICENSE.txt -License-File: AUTHORS.md - -Toolz -===== - -|Build Status| |Coverage Status| |Version Status| - -A set of utility functions for iterators, functions, and dictionaries. - -See the PyToolz documentation at https://toolz.readthedocs.io - -LICENSE -------- - -New BSD. See `License File <https://github.com/pytoolz/toolz/blob/master/LICENSE.txt>`__. - -Install -------- - -``toolz`` is on the Python Package Index (PyPI): - -:: - - pip install toolz - -Structure and Heritage ----------------------- - -``toolz`` is implemented in three parts: - -|literal itertoolz|_, for operations on iterables. Examples: ``groupby``, -``unique``, ``interpose``, - -|literal functoolz|_, for higher-order functions. Examples: ``memoize``, -``curry``, ``compose``, - -|literal dicttoolz|_, for operations on dictionaries. Examples: ``assoc``, -``update-in``, ``merge``. - -.. |literal itertoolz| replace:: ``itertoolz`` -.. _literal itertoolz: https://github.com/pytoolz/toolz/blob/master/toolz/itertoolz.py - -.. |literal functoolz| replace:: ``functoolz`` -.. _literal functoolz: https://github.com/pytoolz/toolz/blob/master/toolz/functoolz.py - -.. |literal dicttoolz| replace:: ``dicttoolz`` -.. _literal dicttoolz: https://github.com/pytoolz/toolz/blob/master/toolz/dicttoolz.py - -These functions come from the legacy of functional languages for list -processing. They interoperate well to accomplish common complex tasks. - -Read our `API -Documentation <https://toolz.readthedocs.io/en/latest/api.html>`__ for -more details. - -Example -------- - -This builds a standard wordcount function from pieces within ``toolz``: - -.. code:: python - - >>> def stem(word): - ... """ Stem word to primitive form """ - ... return word.lower().rstrip(",.!:;'-\"").lstrip("'\"") - - >>> from toolz import compose, frequencies - >>> from toolz.curried import map - >>> wordcount = compose(frequencies, map(stem), str.split) - - >>> sentence = "This cat jumped over this other cat!" - >>> wordcount(sentence) - {'this': 2, 'cat': 2, 'jumped': 1, 'over': 1, 'other': 1} - -Dependencies ------------- - -``toolz`` supports Python 3.5+ with a common codebase. -It is pure Python and requires no dependencies beyond the standard -library. - -It is, in short, a lightweight dependency. - - -CyToolz -------- - -The ``toolz`` project has been reimplemented in `Cython <http://cython.org>`__. -The ``cytoolz`` project is a drop-in replacement for the Pure Python -implementation. -See `CyToolz GitHub Page <https://github.com/pytoolz/cytoolz/>`__ for more -details. - -See Also --------- - -- `Underscore.js <https://underscorejs.org/>`__: A similar library for - JavaScript -- `Enumerable <https://ruby-doc.org/core-2.0.0/Enumerable.html>`__: A - similar library for Ruby -- `Clojure <https://clojure.org/>`__: A functional language whose - standard library has several counterparts in ``toolz`` -- `itertools <https://docs.python.org/2/library/itertools.html>`__: The - Python standard library for iterator tools -- `functools <https://docs.python.org/2/library/functools.html>`__: The - Python standard library for function tools - -Contributions Welcome ---------------------- - -``toolz`` aims to be a repository for utility functions, particularly -those that come from the functional programming and list processing -traditions. We welcome contributions that fall within this scope. - -We also try to keep the API small to keep ``toolz`` manageable. The ideal -contribution is significantly different from existing functions and has -precedent in a few other functional systems. - -Please take a look at our -`issue page <https://github.com/pytoolz/toolz/issues>`__ -for contribution ideas. - -Community ---------- - -See our `mailing list <https://groups.google.com/forum/#!forum/pytoolz>`__. -We're friendly. - -.. |Build Status| image:: https://github.com/pytoolz/toolz/workflows/Test/badge.svg - :target: https://github.com/pytoolz/toolz/actions -.. |Coverage Status| image:: https://coveralls.io/repos/pytoolz/toolz/badge.svg?branch=master - :target: https://coveralls.io/r/pytoolz/toolz -.. |Version Status| image:: https://badge.fury.io/py/toolz.svg - :target: https://badge.fury.io/py/toolz - - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/toolz-0.11.2/setup.cfg new/toolz-0.12.0/setup.cfg --- old/toolz-0.11.2/setup.cfg 2021-11-06 06:22:52.937012200 +0100 +++ new/toolz-0.12.0/setup.cfg 2022-07-10 06:29:51.076025200 +0200 @@ -1,5 +1,5 @@ [versioneer] -VCS = git +vcs = git style = pep440 versionfile_source = toolz/_version.py versionfile_build = toolz/_version.py diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/toolz-0.11.2/tlz/_build_tlz.py new/toolz-0.12.0/tlz/_build_tlz.py --- old/toolz-0.11.2/tlz/_build_tlz.py 2021-11-06 06:07:13.000000000 +0100 +++ new/toolz-0.12.0/tlz/_build_tlz.py 2022-07-10 06:29:48.000000000 +0200 @@ -2,9 +2,10 @@ import types import toolz from importlib import import_module +from importlib.machinery import ModuleSpec -class TlzLoader(object): +class TlzLoader: """ Finds and loads ``tlz`` modules when added to sys.meta_path""" def __init__(self): self.always_from_toolz = { @@ -36,7 +37,7 @@ def load_module(self, fullname): # pragma: py3 no cover if fullname in sys.modules: # pragma: no cover return sys.modules[fullname] - spec = TlzSpec(fullname, self) + spec = ModuleSpec(fullname, self) module = self.create_module(spec) sys.modules[fullname] = module self.exec_module(module) @@ -45,7 +46,7 @@ def find_spec(self, fullname, path, target=None): # pragma: no cover package, dot, submodules = fullname.partition('.') if package == 'tlz': - return TlzSpec(fullname, self) + return ModuleSpec(fullname, self) def create_module(self, spec): return types.ModuleType(spec.name) @@ -86,18 +87,6 @@ module.__dict__[k] = submodule -class TlzSpec(object): - def __init__(self, name, loader): - self.name = name - self.loader = loader - self.origin = None - self.submodule_search_locations = [] - self.loader_state = None - self.cached = None - self.parent = None - self.has_location = False - - tlz_loader = TlzLoader() sys.meta_path.append(tlz_loader) tlz_loader.exec_module(sys.modules['tlz']) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/toolz-0.11.2/toolz/_version.py new/toolz-0.12.0/toolz/_version.py --- old/toolz-0.11.2/toolz/_version.py 2021-11-06 06:22:52.938442500 +0100 +++ new/toolz-0.12.0/toolz/_version.py 2022-07-10 06:29:51.076025200 +0200 @@ -8,11 +8,11 @@ version_json = ''' { - "date": "2021-11-06T00:07:13-0500", + "date": "2022-07-09T23:15:45-0500", "dirty": false, "error": null, - "full-revisionid": "294e981edad035a7ac6f0e2b48f1738368fa4b34", - "version": "0.11.2" + "full-revisionid": "245b78e6320c41a4a9cdd15c6123681fbfb62843", + "version": "0.12.0" } ''' # END VERSION_JSON diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/toolz-0.11.2/toolz/curried/operator.py new/toolz-0.12.0/toolz/curried/operator.py --- old/toolz-0.11.2/toolz/curried/operator.py 2021-11-06 06:07:13.000000000 +0100 +++ new/toolz-0.12.0/toolz/curried/operator.py 2022-07-10 06:29:48.000000000 +0200 @@ -2,22 +2,21 @@ import operator -from toolz.functoolz import curry, num_required_args, has_keywords - - -def should_curry(f): - num = num_required_args(f) - return num is None or num > 1 or num == 1 and has_keywords(f) is not False +from toolz.functoolz import curry +# Tests will catch if/when this needs updated +IGNORE = { + "__abs__", "__index__", "__inv__", "__invert__", "__neg__", "__not__", + "__pos__", "_abs", "abs", "attrgetter", "index", "inv", "invert", + "itemgetter", "neg", "not_", "pos", "truth" +} locals().update( - {name: curry(f) if should_curry(f) else f - for name, f in vars(operator).items() if callable(f)}, + {name: f if name in IGNORE else curry(f) + for name, f in vars(operator).items() if callable(f)} ) # Clean up the namespace. +del IGNORE del curry -del num_required_args -del has_keywords del operator -del should_curry diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/toolz-0.11.2/toolz/dicttoolz.py new/toolz-0.12.0/toolz/dicttoolz.py --- old/toolz-0.11.2/toolz/dicttoolz.py 2021-11-06 06:07:13.000000000 +0100 +++ new/toolz-0.12.0/toolz/dicttoolz.py 2022-07-10 06:29:48.000000000 +0200 @@ -1,4 +1,5 @@ import operator +import collections from functools import reduce from collections.abc import Mapping @@ -58,14 +59,15 @@ dicts = dicts[0] factory = _get_factory(merge_with, kwargs) - result = factory() + values = collections.defaultdict(lambda: [].append) for d in dicts: for k, v in d.items(): - if k not in result: - result[k] = [v] - else: - result[k].append(v) - return valmap(func, result, factory) + values[k](v) + + result = factory() + for k, v in values.items(): + result[k] = func(v.__self__) + return result def valmap(func, d, factory=dict): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/toolz-0.11.2/toolz/functoolz.py new/toolz-0.12.0/toolz/functoolz.py --- old/toolz-0.11.2/toolz/functoolz.py 2021-11-06 06:07:13.000000000 +0100 +++ new/toolz-0.12.0/toolz/functoolz.py 2022-07-10 06:29:48.000000000 +0200 @@ -3,9 +3,7 @@ import sys from operator import attrgetter, not_ from importlib import import_module -from textwrap import dedent from types import MethodType -import sys from .utils import no_default @@ -780,6 +778,8 @@ @instanceproperty(classval=__doc__) def __doc__(self): + from textwrap import dedent + exc = self.exc try: if isinstance(exc, tuple): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/toolz-0.11.2/toolz/itertoolz.py new/toolz-0.12.0/toolz/itertoolz.py --- old/toolz-0.11.2/toolz/itertoolz.py 2021-11-06 06:07:13.000000000 +0100 +++ new/toolz-0.12.0/toolz/itertoolz.py 2022-07-10 06:29:48.000000000 +0200 @@ -4,7 +4,6 @@ import operator from functools import partial from itertools import filterfalse, zip_longest -from random import Random from collections.abc import Sequence from toolz.utils import no_default @@ -1052,5 +1051,7 @@ [7, 9, 19, 25, 30, 32, 34, 48, 59, 60, 81, 98] """ if not hasattr(random_state, 'random'): + from random import Random + random_state = Random(random_state) return filter(lambda _: random_state.random() < prob, seq) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/toolz-0.11.2/toolz/sandbox/core.py new/toolz-0.12.0/toolz/sandbox/core.py --- old/toolz-0.11.2/toolz/sandbox/core.py 2021-11-06 06:07:13.000000000 +0100 +++ new/toolz-0.12.0/toolz/sandbox/core.py 2022-07-10 06:29:48.000000000 +0200 @@ -40,7 +40,7 @@ [[], (), [1], [2], {}] **Warning:** don't change the equality value of an item already in a hash - containter. Unhashable types are unhashable for a reason. For example: + container. Unhashable types are unhashable for a reason. For example: >>> L1 = [1] ; L2 = [2] >>> s = set(map(EqualityHashDefault, [L1, L2])) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/toolz-0.11.2/toolz/tests/test_curried.py new/toolz-0.12.0/toolz/tests/test_curried.py --- old/toolz-0.11.2/toolz/tests/test_curried.py 2021-11-06 06:07:13.000000000 +0100 +++ new/toolz-0.12.0/toolz/tests/test_curried.py 2022-07-10 06:29:48.000000000 +0200 @@ -41,7 +41,18 @@ assert toolz.curried.__name__ == 'toolz.curried' +def should_curry(func): + if not callable(func) or isinstance(func, toolz.curry): + return False + nargs = toolz.functoolz.num_required_args(func) + if nargs is None or nargs > 1: + return True + return nargs == 1 and toolz.functoolz.has_keywords(func) + + def test_curried_operator(): + import operator + for k, v in vars(cop).items(): if not callable(v): continue @@ -60,6 +71,7 @@ raise AssertionError( 'toolz.curried.operator.%s is not curried!' % k, ) + assert should_curry(getattr(operator, k)) == isinstance(v, toolz.curry), k # Make sure this isn't totally empty. assert len(set(vars(cop)) & {'add', 'sub', 'mul'}) == 3 @@ -69,14 +81,6 @@ exceptions = import_module('toolz.curried.exceptions') namespace = {} - def should_curry(func): - if not callable(func) or isinstance(func, toolz.curry): - return False - nargs = toolz.functoolz.num_required_args(func) - if nargs is None or nargs > 1: - return True - return nargs == 1 and toolz.functoolz.has_keywords(func) - def curry_namespace(ns): return { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/toolz-0.11.2/toolz.egg-info/PKG-INFO new/toolz-0.12.0/toolz.egg-info/PKG-INFO --- old/toolz-0.11.2/toolz.egg-info/PKG-INFO 2021-11-06 06:22:52.000000000 +0100 +++ new/toolz-0.12.0/toolz.egg-info/PKG-INFO 2022-07-10 06:29:51.000000000 +0200 @@ -1,12 +1,145 @@ -Metadata-Version: 2.1 +Metadata-Version: 1.2 Name: toolz -Version: 0.11.2 +Version: 0.12.0 Summary: List processing tools and functional utilities Home-page: https://github.com/pytoolz/toolz/ Author: https://raw.github.com/pytoolz/toolz/master/AUTHORS.md Maintainer: Erik Welch Maintainer-email: erik.n.we...@gmail.com License: BSD +Description: Toolz + ===== + + |Build Status| |Coverage Status| |Version Status| + + A set of utility functions for iterators, functions, and dictionaries. + + See the PyToolz documentation at https://toolz.readthedocs.io + + LICENSE + ------- + + New BSD. See `License File <https://github.com/pytoolz/toolz/blob/master/LICENSE.txt>`__. + + Install + ------- + + ``toolz`` is on the Python Package Index (PyPI): + + :: + + pip install toolz + + Structure and Heritage + ---------------------- + + ``toolz`` is implemented in three parts: + + |literal itertoolz|_, for operations on iterables. Examples: ``groupby``, + ``unique``, ``interpose``, + + |literal functoolz|_, for higher-order functions. Examples: ``memoize``, + ``curry``, ``compose``, + + |literal dicttoolz|_, for operations on dictionaries. Examples: ``assoc``, + ``update-in``, ``merge``. + + .. |literal itertoolz| replace:: ``itertoolz`` + .. _literal itertoolz: https://github.com/pytoolz/toolz/blob/master/toolz/itertoolz.py + + .. |literal functoolz| replace:: ``functoolz`` + .. _literal functoolz: https://github.com/pytoolz/toolz/blob/master/toolz/functoolz.py + + .. |literal dicttoolz| replace:: ``dicttoolz`` + .. _literal dicttoolz: https://github.com/pytoolz/toolz/blob/master/toolz/dicttoolz.py + + These functions come from the legacy of functional languages for list + processing. They interoperate well to accomplish common complex tasks. + + Read our `API + Documentation <https://toolz.readthedocs.io/en/latest/api.html>`__ for + more details. + + Example + ------- + + This builds a standard wordcount function from pieces within ``toolz``: + + .. code:: python + + >>> def stem(word): + ... """ Stem word to primitive form """ + ... return word.lower().rstrip(",.!:;'-\"").lstrip("'\"") + + >>> from toolz import compose, frequencies + >>> from toolz.curried import map + >>> wordcount = compose(frequencies, map(stem), str.split) + + >>> sentence = "This cat jumped over this other cat!" + >>> wordcount(sentence) + {'this': 2, 'cat': 2, 'jumped': 1, 'over': 1, 'other': 1} + + Dependencies + ------------ + + ``toolz`` supports Python 3.5+ with a common codebase. + It is pure Python and requires no dependencies beyond the standard + library. + + It is, in short, a lightweight dependency. + + + CyToolz + ------- + + The ``toolz`` project has been reimplemented in `Cython <http://cython.org>`__. + The ``cytoolz`` project is a drop-in replacement for the Pure Python + implementation. + See `CyToolz GitHub Page <https://github.com/pytoolz/cytoolz/>`__ for more + details. + + See Also + -------- + + - `Underscore.js <https://underscorejs.org/>`__: A similar library for + JavaScript + - `Enumerable <https://ruby-doc.org/core-2.0.0/Enumerable.html>`__: A + similar library for Ruby + - `Clojure <https://clojure.org/>`__: A functional language whose + standard library has several counterparts in ``toolz`` + - `itertools <https://docs.python.org/2/library/itertools.html>`__: The + Python standard library for iterator tools + - `functools <https://docs.python.org/2/library/functools.html>`__: The + Python standard library for function tools + + Contributions Welcome + --------------------- + + ``toolz`` aims to be a repository for utility functions, particularly + those that come from the functional programming and list processing + traditions. We welcome contributions that fall within this scope. + + We also try to keep the API small to keep ``toolz`` manageable. The ideal + contribution is significantly different from existing functions and has + precedent in a few other functional systems. + + Please take a look at our + `issue page <https://github.com/pytoolz/toolz/issues>`__ + for contribution ideas. + + Community + --------- + + See our `mailing list <https://groups.google.com/forum/#!forum/pytoolz>`__. + We're friendly. + + .. |Build Status| image:: https://github.com/pytoolz/toolz/workflows/Test/badge.svg + :target: https://github.com/pytoolz/toolz/actions + .. |Coverage Status| image:: https://coveralls.io/repos/pytoolz/toolz/badge.svg?branch=master + :target: https://coveralls.io/r/pytoolz/toolz + .. |Version Status| image:: https://badge.fury.io/py/toolz.svg + :target: https://badge.fury.io/py/toolz + Keywords: functional utility itertools functools Platform: UNKNOWN Classifier: Development Status :: 5 - Production/Stable @@ -22,140 +155,3 @@ Classifier: Programming Language :: Python :: Implementation :: CPython Classifier: Programming Language :: Python :: Implementation :: PyPy Requires-Python: >=3.5 -License-File: LICENSE.txt -License-File: AUTHORS.md - -Toolz -===== - -|Build Status| |Coverage Status| |Version Status| - -A set of utility functions for iterators, functions, and dictionaries. - -See the PyToolz documentation at https://toolz.readthedocs.io - -LICENSE -------- - -New BSD. See `License File <https://github.com/pytoolz/toolz/blob/master/LICENSE.txt>`__. - -Install -------- - -``toolz`` is on the Python Package Index (PyPI): - -:: - - pip install toolz - -Structure and Heritage ----------------------- - -``toolz`` is implemented in three parts: - -|literal itertoolz|_, for operations on iterables. Examples: ``groupby``, -``unique``, ``interpose``, - -|literal functoolz|_, for higher-order functions. Examples: ``memoize``, -``curry``, ``compose``, - -|literal dicttoolz|_, for operations on dictionaries. Examples: ``assoc``, -``update-in``, ``merge``. - -.. |literal itertoolz| replace:: ``itertoolz`` -.. _literal itertoolz: https://github.com/pytoolz/toolz/blob/master/toolz/itertoolz.py - -.. |literal functoolz| replace:: ``functoolz`` -.. _literal functoolz: https://github.com/pytoolz/toolz/blob/master/toolz/functoolz.py - -.. |literal dicttoolz| replace:: ``dicttoolz`` -.. _literal dicttoolz: https://github.com/pytoolz/toolz/blob/master/toolz/dicttoolz.py - -These functions come from the legacy of functional languages for list -processing. They interoperate well to accomplish common complex tasks. - -Read our `API -Documentation <https://toolz.readthedocs.io/en/latest/api.html>`__ for -more details. - -Example -------- - -This builds a standard wordcount function from pieces within ``toolz``: - -.. code:: python - - >>> def stem(word): - ... """ Stem word to primitive form """ - ... return word.lower().rstrip(",.!:;'-\"").lstrip("'\"") - - >>> from toolz import compose, frequencies - >>> from toolz.curried import map - >>> wordcount = compose(frequencies, map(stem), str.split) - - >>> sentence = "This cat jumped over this other cat!" - >>> wordcount(sentence) - {'this': 2, 'cat': 2, 'jumped': 1, 'over': 1, 'other': 1} - -Dependencies ------------- - -``toolz`` supports Python 3.5+ with a common codebase. -It is pure Python and requires no dependencies beyond the standard -library. - -It is, in short, a lightweight dependency. - - -CyToolz -------- - -The ``toolz`` project has been reimplemented in `Cython <http://cython.org>`__. -The ``cytoolz`` project is a drop-in replacement for the Pure Python -implementation. -See `CyToolz GitHub Page <https://github.com/pytoolz/cytoolz/>`__ for more -details. - -See Also --------- - -- `Underscore.js <https://underscorejs.org/>`__: A similar library for - JavaScript -- `Enumerable <https://ruby-doc.org/core-2.0.0/Enumerable.html>`__: A - similar library for Ruby -- `Clojure <https://clojure.org/>`__: A functional language whose - standard library has several counterparts in ``toolz`` -- `itertools <https://docs.python.org/2/library/itertools.html>`__: The - Python standard library for iterator tools -- `functools <https://docs.python.org/2/library/functools.html>`__: The - Python standard library for function tools - -Contributions Welcome ---------------------- - -``toolz`` aims to be a repository for utility functions, particularly -those that come from the functional programming and list processing -traditions. We welcome contributions that fall within this scope. - -We also try to keep the API small to keep ``toolz`` manageable. The ideal -contribution is significantly different from existing functions and has -precedent in a few other functional systems. - -Please take a look at our -`issue page <https://github.com/pytoolz/toolz/issues>`__ -for contribution ideas. - -Community ---------- - -See our `mailing list <https://groups.google.com/forum/#!forum/pytoolz>`__. -We're friendly. - -.. |Build Status| image:: https://github.com/pytoolz/toolz/workflows/Test/badge.svg - :target: https://github.com/pytoolz/toolz/actions -.. |Coverage Status| image:: https://coveralls.io/repos/pytoolz/toolz/badge.svg?branch=master - :target: https://coveralls.io/r/pytoolz/toolz -.. |Version Status| image:: https://badge.fury.io/py/toolz.svg - :target: https://badge.fury.io/py/toolz - - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/toolz-0.11.2/versioneer.py new/toolz-0.12.0/versioneer.py --- old/toolz-0.11.2/versioneer.py 2021-11-06 06:07:13.000000000 +0100 +++ new/toolz-0.12.0/versioneer.py 2022-07-10 06:29:48.000000000 +0200 @@ -180,7 +180,7 @@ `setup.cfg`, and `tox.ini`. Projects like these produce multiple PyPI distributions (and upload multiple independently-installable tarballs). * Source trees whose main purpose is to contain a C library, but which also - provide bindings to Python (and perhaps other langauges) in subdirectories. + provide bindings to Python (and perhaps other languages) in subdirectories. Versioneer will look for `.git` in parent directories, and most operations should get the right version string. However `pip` and `setuptools` have bugs @@ -688,7 +688,7 @@ # TAG-NUM-gHEX mo = re.search(r'^(.+)-(\d+)-g([0-9a-f]+)$', git_describe) if not mo: - # unparseable. Maybe git-describe is misbehaving? + # unparsable. Maybe git-describe is misbehaving? pieces["error"] = ("unable to parse git-describe output: '%%s'" %% describe_out) return pieces @@ -1080,7 +1080,7 @@ # TAG-NUM-gHEX mo = re.search(r'^(.+)-(\d+)-g([0-9a-f]+)$', git_describe) if not mo: - # unparseable. Maybe git-describe is misbehaving? + # unparsable. Maybe git-describe is misbehaving? pieces["error"] = ("unable to parse git-describe output: '%s'" % describe_out) return pieces