2019-07-15T19:37:25 Created temporary directory: /tmp/pip-ephem-wheel-cache-7p2eb2x4 2019-07-15T19:37:25 Created temporary directory: /tmp/pip-req-tracker-cc9cb04a 2019-07-15T19:37:25 Created requirements tracker '/tmp/pip-req-tracker-cc9cb04a' 2019-07-15T19:37:25 Created temporary directory: /tmp/pip-wheel-rppf2jin 2019-07-15T19:37:25 Collecting gf3==0.2.3 2019-07-15T19:37:25 1 location(s) to search for versions of gf3: 2019-07-15T19:37:25 * https://pypi.org/simple/gf3/ 2019-07-15T19:37:25 Getting page https://pypi.org/simple/gf3/ 2019-07-15T19:37:25 Analyzing links from page https://pypi.org/simple/gf3/ 2019-07-15T19:37:25 Found link https://files.pythonhosted.org/packages/b4/5d/9b331efb9f8c069031d15e937c9defb40ae4aee983d27e84257e14db49fa/gf3-0.2.1.tar.gz#sha256=983d43c3214268b99a199aa265e57ad7fc8b73d62f54b037cae6f2d814eaa83a (from https://pypi.org/simple/gf3/), version: 0.2.1 2019-07-15T19:37:25 Found link https://files.pythonhosted.org/packages/41/66/e70d94e09b7a657d886799aec4083a15904d3d3265267b499f566c4f62c3/gf3-0.2.2.tar.gz#sha256=a8108c2ea33b39f8dc4354d8bef42a035da99ed271a442ac7a650035ae4aa013 (from https://pypi.org/simple/gf3/), version: 0.2.2 2019-07-15T19:37:25 Found link https://files.pythonhosted.org/packages/e7/30/8392561c8498531a8e6d33e585f736432b3ffde5301e7999708af011326f/gf3-0.2.3.tar.gz#sha256=a31c64aee81d22a48893fff69f67381fd751fed2fffd6c0f6b3395d610909865 (from https://pypi.org/simple/gf3/), version: 0.2.3 2019-07-15T19:37:25 Using version 0.2.3 (newest of versions: 0.2.3) 2019-07-15T19:37:25 Created temporary directory: /tmp/pip-unpack-inbelrdi 2019-07-15T19:37:25 Downloading https://files.pythonhosted.org/packages/e7/30/8392561c8498531a8e6d33e585f736432b3ffde5301e7999708af011326f/gf3-0.2.3.tar.gz 2019-07-15T19:37:25 Downloading from URL https://files.pythonhosted.org/packages/e7/30/8392561c8498531a8e6d33e585f736432b3ffde5301e7999708af011326f/gf3-0.2.3.tar.gz#sha256=a31c64aee81d22a48893fff69f67381fd751fed2fffd6c0f6b3395d610909865 (from https://pypi.org/simple/gf3/) 2019-07-15T19:37:25 Added gf3==0.2.3 from https://files.pythonhosted.org/packages/e7/30/8392561c8498531a8e6d33e585f736432b3ffde5301e7999708af011326f/gf3-0.2.3.tar.gz#sha256=a31c64aee81d22a48893fff69f67381fd751fed2fffd6c0f6b3395d610909865 to build tracker '/tmp/pip-req-tracker-cc9cb04a' 2019-07-15T19:37:25 Running setup.py (path:/tmp/pip-wheel-rppf2jin/gf3/setup.py) egg_info for package gf3 2019-07-15T19:37:25 Running command python setup.py egg_info 2019-07-15T19:37:27 ============================================= 2019-07-15T19:37:27 GF3: Lisp-Like Generic Functions For Python 3 2019-07-15T19:37:27 ============================================= 2019-07-15T19:37:27 Overview 2019-07-15T19:37:27 ======== 2019-07-15T19:37:27 `gf` lets you write generic functions 2019-07-15T19:37:27 `generic functions `_ 2019-07-15T19:37:27 with multi-methods, that dispatch on all their arguments. 2019-07-15T19:37:27 Simple Example 2019-07-15T19:37:27 -------------- 2019-07-15T19:37:27 >>> from gf import generic, method 2019-07-15T19:37:27 >>> add = generic() 2019-07-15T19:37:27 >>> type(add) 2019-07-15T19:37:27 2019-07-15T19:37:27 Lets define `add` for two integers: 2019-07-15T19:37:27 >>> @method() 2019-07-15T19:37:27 ... def add(n0: int, n1: int): 2019-07-15T19:37:27 ... return n0 + n1 2019-07-15T19:37:27 Lets test it: 2019-07-15T19:37:27 >>> add(1, 2) 2019-07-15T19:37:27 3 2019-07-15T19:37:27 Calling `add` with instances of other types fails: 2019-07-15T19:37:27 >>> add("Hello ", "World") 2019-07-15T19:37:27 Traceback (most recent call last): 2019-07-15T19:37:27 ... 2019-07-15T19:37:27 NotImplementedError: Generic '__main__.add' has no implementation for type(s): __builtin__.str, __builtin__.str 2019-07-15T19:37:27 Of course `add` can also by defined for two strings: 2019-07-15T19:37:27 >>> @method() 2019-07-15T19:37:27 ... def add(s0: str, s1: str): 2019-07-15T19:37:27 ... return s0 + s1 2019-07-15T19:37:27 Now our hello world example works: 2019-07-15T19:37:27 >>> add("Hello ", "World") 2019-07-15T19:37:27 'Hello World' 2019-07-15T19:37:27 `add` can also be defined for a string and an integer: 2019-07-15T19:37:27 >>> @method() 2019-07-15T19:37:27 ... def add(s: str, n: int): 2019-07-15T19:37:27 ... return s + str(n) 2019-07-15T19:37:27 Thus we can add a string and a number: 2019-07-15T19:37:27 >>> add("You ", 2) 2019-07-15T19:37:27 'You 2' 2019-07-15T19:37:27 Python's Special Methods 2019-07-15T19:37:27 ------------------------ 2019-07-15T19:37:27 `gf.Object` implements (nearly) all of the `special instance 2019-07-15T19:37:27 methods of a python object`_ as a generic function. 2019-07-15T19:37:27 The package includes a rational number implementation that makes 2019-07-15T19:37:27 heavy use of this feature: 2019-07-15T19:37:27 .. code:: python 2019-07-15T19:37:27 @method() 2019-07-15T19:37:27 def __add__(a: object, b: Rational): 2019-07-15T19:37:27 """Add an object and a rational number. 2019-07-15T19:37:27 `a` is converted to a `Rational` and then both are added.""" 2019-07-15T19:37:27 return Rational(a) + b 2019-07-15T19:37:27 @method(Rational, object) 2019-07-15T19:37:27 def __add__(a: Rational, b: object): 2019-07-15T19:37:27 """Add a rational number and an object. 2019-07-15T19:37:27 `b` is converted to a `Rational` and then both are added.""" 2019-07-15T19:37:27 return a + Rational(b) 2019-07-15T19:37:27 `gf.Object` also has a more Smalltalk means of overwriting 2019-07-15T19:37:27 `object.__str__` and `object.__repr__` using a file like object. 2019-07-15T19:37:27 Again the rational example is instructive about its usage. 2019-07-15T19:37:27 .. code:: python 2019-07-15T19:37:27 @method() 2019-07-15T19:37:27 def __out__(rational: Rational, writer: Writer): 2019-07-15T19:37:27 """Write a nice representation of the rational. 2019-07-15T19:37:27 Denominators that equal 1 are not printed.""" 2019-07-15T19:37:27 writer("%d", rational.numerator) 2019-07-15T19:37:27 if rational.denominator != 1: 2019-07-15T19:37:27 writer(" / %d", rational.denominator) 2019-07-15T19:37:27 @method() 2019-07-15T19:37:27 def __spy__(rational: Rational, writer: Writer): 2019-07-15T19:37:27 """Write a debug representation of the rational.""" 2019-07-15T19:37:27 writer("%s(", rational.__class__.__name__) 2019-07-15T19:37:27 if rational.numerator != 0: 2019-07-15T19:37:27 writer("%r", rational.numerator) 2019-07-15T19:37:27 if rational.denominator != 1: 2019-07-15T19:37:27 writer(", %r", rational.denominator) 2019-07-15T19:37:27 writer(")") 2019-07-15T19:37:27 .. _special instance methods of a python object: 2019-07-15T19:37:27 http://docs.python.org/2/reference/datamodel.html#special-method-names 2019-07-15T19:37:27 Installation 2019-07-15T19:37:27 ------------ 2019-07-15T19:37:27 As usual `gf3` can be installed with `pip`, like this: 2019-07-15T19:37:27 pip install gf3 2019-07-15T19:37:27 Documentation 2019-07-15T19:37:27 ------------- 2019-07-15T19:37:27 The whole documentation is available at in the following formats 2019-07-15T19:37:27 HTML 2019-07-15T19:37:27 http://gf3.klix.ch (Also servers as `gf`'s homepage) 2019-07-15T19:37:27 PDF 2019-07-15T19:37:27 http://gf3.klix.ch/gf3.pdf 2019-07-15T19:37:27 Changes 2019-07-15T19:37:27 ------- 2019-07-15T19:37:27 A short sketch of the changes done in each release. 2019-07-15T19:37:27 Release 0.2.3 2019-07-15T19:37:27 ~~~~~~~~~~~~~ 2019-07-15T19:37:27 The following was change in Release 0.2.3: 2019-07-15T19:37:27 * Fixed the long description. 2019-07-15T19:37:27 * Wrote some documentation about changing the implementation 2019-07-15T19:37:27 class of a generic function. 2019-07-15T19:37:27 Release 0.2.2 2019-07-15T19:37:27 ~~~~~~~~~~~~~ 2019-07-15T19:37:27 The following was change in Release 0.2.2: 2019-07-15T19:37:27 * Write more documentation. 2019-07-15T19:37:27 Especially documented the `merge` and the `isgeneric` 2019-07-15T19:37:27 functions. 2019-07-15T19:37:27 * Consistency between the long text and on PyPi and the documentation. 2019-07-15T19:37:27 Release 0.2.1 2019-07-15T19:37:27 ~~~~~~~~~~~~~ 2019-07-15T19:37:27 Needed to bump the version information, because the homepage 2019-07-15T19:37:27 in the package-information was wrong [#]_ and a new upload was needed. 2019-07-15T19:37:27 Release 0.2.0 2019-07-15T19:37:27 ~~~~~~~~~~~~~ 2019-07-15T19:37:27 The following was change in Release 0.2.0: 2019-07-15T19:37:27 * Ported the whole module to Python 3.6 and Python 3.7. 2019-07-15T19:37:27 * Exclusively uses `parameter annotations`_ to specify the types to dispatch on. 2019-07-15T19:37:27 * Added standard conforming default implementations for methods 2019-07-15T19:37:27 like `__add__`. All these methods now raise a proper 2019-07-15T19:37:27 `TypeError` instead of raising a `NotImplementedError`. 2019-07-15T19:37:27 * Added some means to write generic functions that dispatch types only. 2019-07-15T19:37:27 This is the generic function equivalent of a class-method. 2019-07-15T19:37:27 * Added some means to dispatch on single objects. 2019-07-15T19:37:27 This is the equivalent adding methods to class-instances [#]_. 2019-07-15T19:37:27 * The package name for PyPi is now ``gf3``. 2019-07-15T19:37:27 .. _parameter annotations: https://docs.python.org/3/reference/compound_stmts.html#grammar-token-parameter 2019-07-15T19:37:27 Release 0.1.4 2019-07-15T19:37:27 ~~~~~~~~~~~~~ 2019-07-15T19:37:27 The following was fixed in Release 0.1.4: 2019-07-15T19:37:27 * Fixed an issue with variadic methods. Sometimes definitions 2019-07-15T19:37:27 of variadic methods added after the method was already called 2019-07-15T19:37:27 where not added. 2019-07-15T19:37:27 * Specified and implemented a precedence rule for overlapping 2019-07-15T19:37:27 variadic methods of generic functions. 2019-07-15T19:37:27 * Improved generated documentation for variadic methods. 2019-07-15T19:37:27 * Fixed the markup of some notes in the documentation. 2019-07-15T19:37:27 Release 0.1.3 2019-07-15T19:37:27 ~~~~~~~~~~~~~ 2019-07-15T19:37:27 The following was changed in Release 0.1.3: 2019-07-15T19:37:27 * Added variadic methods, e.g. multi-methods with a 2019-07-15T19:37:27 variable number of arguments. 2019-07-15T19:37:27 * Improved the long description text a bit 2019-07-15T19:37:27 and fixed bug in its markup. 2019-07-15T19:37:27 * Fixed invalid references in the long description. 2019-07-15T19:37:27 Release 0.1.2 2019-07-15T19:37:27 ~~~~~~~~~~~~~ 2019-07-15T19:37:27 The following was changed in Release 0.1.2: 2019-07-15T19:37:27 * Added a generic functions for `gf.Object.__call__`. 2019-07-15T19:37:27 * Added a `gf.go.FinalizingMixin`. 2019-07-15T19:37:27 * `gf.generic` now also accepts a type. 2019-07-15T19:37:27 * Improved the exception information for ambiguous calls. 2019-07-15T19:37:27 * Fixed some documentation glitches. 2019-07-15T19:37:27 Release 0.1.1 2019-07-15T19:37:27 ~~~~~~~~~~~~~ 2019-07-15T19:37:27 This was the initial release. 2019-07-15T19:37:27 .. [#] Silly me discovered about the shutdown of pythonhosted.org 2019-07-15T19:37:27 after version 0.2.0 was uploaded. 2019-07-15T19:37:27 .. [#] Of course this is not possible with standard python classes 2019-07-15T19:37:27 and their instances. 2019-07-15T19:37:27 Acknowledgements 2019-07-15T19:37:27 ================ 2019-07-15T19:37:27 Guido van Rossum created the core of this package. I just renamed some things 2019-07-15T19:37:27 and added some^H^H^H^H oodles of convenience stuff. Thank you Guido! 2019-07-15T19:37:27 Copyright 2019-07-15T19:37:27 ========= 2019-07-15T19:37:27 © 2006-2013 Python Software Foundation. 2019-07-15T19:37:27 © 2013-2018 Gerald Klix. 2019-07-15T19:37:27 running egg_info 2019-07-15T19:37:27 creating pip-egg-info/gf3.egg-info 2019-07-15T19:37:27 writing pip-egg-info/gf3.egg-info/PKG-INFO 2019-07-15T19:37:27 writing dependency_links to pip-egg-info/gf3.egg-info/dependency_links.txt 2019-07-15T19:37:27 writing top-level names to pip-egg-info/gf3.egg-info/top_level.txt 2019-07-15T19:37:27 writing manifest file 'pip-egg-info/gf3.egg-info/SOURCES.txt' 2019-07-15T19:37:27 reading manifest file 'pip-egg-info/gf3.egg-info/SOURCES.txt' 2019-07-15T19:37:27 reading manifest template 'MANIFEST.in' 2019-07-15T19:37:27 writing manifest file 'pip-egg-info/gf3.egg-info/SOURCES.txt' 2019-07-15T19:37:27 Source in /tmp/pip-wheel-rppf2jin/gf3 has version 0.2.3, which satisfies requirement gf3==0.2.3 from https://files.pythonhosted.org/packages/e7/30/8392561c8498531a8e6d33e585f736432b3ffde5301e7999708af011326f/gf3-0.2.3.tar.gz#sha256=a31c64aee81d22a48893fff69f67381fd751fed2fffd6c0f6b3395d610909865 2019-07-15T19:37:27 Removed gf3==0.2.3 from https://files.pythonhosted.org/packages/e7/30/8392561c8498531a8e6d33e585f736432b3ffde5301e7999708af011326f/gf3-0.2.3.tar.gz#sha256=a31c64aee81d22a48893fff69f67381fd751fed2fffd6c0f6b3395d610909865 from build tracker '/tmp/pip-req-tracker-cc9cb04a' 2019-07-15T19:37:27 Building wheels for collected packages: gf3 2019-07-15T19:37:27 Created temporary directory: /tmp/pip-wheel-8g1vgzi2 2019-07-15T19:37:27 Building wheel for gf3 (setup.py): started 2019-07-15T19:37:27 Destination directory: /tmp/pip-wheel-8g1vgzi2 2019-07-15T19:37:27 Running command /usr/bin/python3 -u -c 'import setuptools, tokenize;__file__='"'"'/tmp/pip-wheel-rppf2jin/gf3/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-8g1vgzi2 2019-07-15T19:37:28 ============================================= 2019-07-15T19:37:28 GF3: Lisp-Like Generic Functions For Python 3 2019-07-15T19:37:28 ============================================= 2019-07-15T19:37:28 Overview 2019-07-15T19:37:28 ======== 2019-07-15T19:37:28 `gf` lets you write generic functions 2019-07-15T19:37:28 `generic functions `_ 2019-07-15T19:37:28 with multi-methods, that dispatch on all their arguments. 2019-07-15T19:37:28 Simple Example 2019-07-15T19:37:28 -------------- 2019-07-15T19:37:28 >>> from gf import generic, method 2019-07-15T19:37:28 >>> add = generic() 2019-07-15T19:37:28 >>> type(add) 2019-07-15T19:37:28 2019-07-15T19:37:28 Lets define `add` for two integers: 2019-07-15T19:37:28 >>> @method() 2019-07-15T19:37:28 ... def add(n0: int, n1: int): 2019-07-15T19:37:28 ... return n0 + n1 2019-07-15T19:37:28 Lets test it: 2019-07-15T19:37:28 >>> add(1, 2) 2019-07-15T19:37:28 3 2019-07-15T19:37:28 Calling `add` with instances of other types fails: 2019-07-15T19:37:28 >>> add("Hello ", "World") 2019-07-15T19:37:28 Traceback (most recent call last): 2019-07-15T19:37:28 ... 2019-07-15T19:37:28 NotImplementedError: Generic '__main__.add' has no implementation for type(s): __builtin__.str, __builtin__.str 2019-07-15T19:37:28 Of course `add` can also by defined for two strings: 2019-07-15T19:37:28 >>> @method() 2019-07-15T19:37:28 ... def add(s0: str, s1: str): 2019-07-15T19:37:28 ... return s0 + s1 2019-07-15T19:37:28 Now our hello world example works: 2019-07-15T19:37:28 >>> add("Hello ", "World") 2019-07-15T19:37:28 'Hello World' 2019-07-15T19:37:29 `add` can also be defined for a string and an integer: 2019-07-15T19:37:29 >>> @method() 2019-07-15T19:37:29 ... def add(s: str, n: int): 2019-07-15T19:37:29 ... return s + str(n) 2019-07-15T19:37:29 Thus we can add a string and a number: 2019-07-15T19:37:29 >>> add("You ", 2) 2019-07-15T19:37:29 'You 2' 2019-07-15T19:37:29 Python's Special Methods 2019-07-15T19:37:29 ------------------------ 2019-07-15T19:37:29 `gf.Object` implements (nearly) all of the `special instance 2019-07-15T19:37:29 methods of a python object`_ as a generic function. 2019-07-15T19:37:29 The package includes a rational number implementation that makes 2019-07-15T19:37:29 heavy use of this feature: 2019-07-15T19:37:29 .. code:: python 2019-07-15T19:37:29 @method() 2019-07-15T19:37:29 def __add__(a: object, b: Rational): 2019-07-15T19:37:29 """Add an object and a rational number. 2019-07-15T19:37:29 `a` is converted to a `Rational` and then both are added.""" 2019-07-15T19:37:29 return Rational(a) + b 2019-07-15T19:37:29 @method(Rational, object) 2019-07-15T19:37:29 def __add__(a: Rational, b: object): 2019-07-15T19:37:29 """Add a rational number and an object. 2019-07-15T19:37:29 `b` is converted to a `Rational` and then both are added.""" 2019-07-15T19:37:29 return a + Rational(b) 2019-07-15T19:37:29 `gf.Object` also has a more Smalltalk means of overwriting 2019-07-15T19:37:29 `object.__str__` and `object.__repr__` using a file like object. 2019-07-15T19:37:29 Again the rational example is instructive about its usage. 2019-07-15T19:37:29 .. code:: python 2019-07-15T19:37:29 @method() 2019-07-15T19:37:29 def __out__(rational: Rational, writer: Writer): 2019-07-15T19:37:29 """Write a nice representation of the rational. 2019-07-15T19:37:29 Denominators that equal 1 are not printed.""" 2019-07-15T19:37:29 writer("%d", rational.numerator) 2019-07-15T19:37:29 if rational.denominator != 1: 2019-07-15T19:37:29 writer(" / %d", rational.denominator) 2019-07-15T19:37:29 @method() 2019-07-15T19:37:29 def __spy__(rational: Rational, writer: Writer): 2019-07-15T19:37:29 """Write a debug representation of the rational.""" 2019-07-15T19:37:29 writer("%s(", rational.__class__.__name__) 2019-07-15T19:37:29 if rational.numerator != 0: 2019-07-15T19:37:29 writer("%r", rational.numerator) 2019-07-15T19:37:29 if rational.denominator != 1: 2019-07-15T19:37:29 writer(", %r", rational.denominator) 2019-07-15T19:37:29 writer(")") 2019-07-15T19:37:29 .. _special instance methods of a python object: 2019-07-15T19:37:29 http://docs.python.org/2/reference/datamodel.html#special-method-names 2019-07-15T19:37:29 Installation 2019-07-15T19:37:29 ------------ 2019-07-15T19:37:29 As usual `gf3` can be installed with `pip`, like this: 2019-07-15T19:37:29 pip install gf3 2019-07-15T19:37:29 Documentation 2019-07-15T19:37:29 ------------- 2019-07-15T19:37:29 The whole documentation is available at in the following formats 2019-07-15T19:37:29 HTML 2019-07-15T19:37:29 http://gf3.klix.ch (Also servers as `gf`'s homepage) 2019-07-15T19:37:29 PDF 2019-07-15T19:37:29 http://gf3.klix.ch/gf3.pdf 2019-07-15T19:37:29 Changes 2019-07-15T19:37:29 ------- 2019-07-15T19:37:29 A short sketch of the changes done in each release. 2019-07-15T19:37:29 Release 0.2.3 2019-07-15T19:37:29 ~~~~~~~~~~~~~ 2019-07-15T19:37:29 The following was change in Release 0.2.3: 2019-07-15T19:37:29 * Fixed the long description. 2019-07-15T19:37:29 * Wrote some documentation about changing the implementation 2019-07-15T19:37:29 class of a generic function. 2019-07-15T19:37:29 Release 0.2.2 2019-07-15T19:37:29 ~~~~~~~~~~~~~ 2019-07-15T19:37:29 The following was change in Release 0.2.2: 2019-07-15T19:37:29 * Write more documentation. 2019-07-15T19:37:29 Especially documented the `merge` and the `isgeneric` 2019-07-15T19:37:29 functions. 2019-07-15T19:37:29 * Consistency between the long text and on PyPi and the documentation. 2019-07-15T19:37:29 Release 0.2.1 2019-07-15T19:37:29 ~~~~~~~~~~~~~ 2019-07-15T19:37:29 Needed to bump the version information, because the homepage 2019-07-15T19:37:29 in the package-information was wrong [#]_ and a new upload was needed. 2019-07-15T19:37:29 Release 0.2.0 2019-07-15T19:37:29 ~~~~~~~~~~~~~ 2019-07-15T19:37:29 The following was change in Release 0.2.0: 2019-07-15T19:37:29 * Ported the whole module to Python 3.6 and Python 3.7. 2019-07-15T19:37:29 * Exclusively uses `parameter annotations`_ to specify the types to dispatch on. 2019-07-15T19:37:29 * Added standard conforming default implementations for methods 2019-07-15T19:37:29 like `__add__`. All these methods now raise a proper 2019-07-15T19:37:29 `TypeError` instead of raising a `NotImplementedError`. 2019-07-15T19:37:29 * Added some means to write generic functions that dispatch types only. 2019-07-15T19:37:29 This is the generic function equivalent of a class-method. 2019-07-15T19:37:29 * Added some means to dispatch on single objects. 2019-07-15T19:37:29 This is the equivalent adding methods to class-instances [#]_. 2019-07-15T19:37:29 * The package name for PyPi is now ``gf3``. 2019-07-15T19:37:29 .. _parameter annotations: https://docs.python.org/3/reference/compound_stmts.html#grammar-token-parameter 2019-07-15T19:37:29 Release 0.1.4 2019-07-15T19:37:29 ~~~~~~~~~~~~~ 2019-07-15T19:37:29 The following was fixed in Release 0.1.4: 2019-07-15T19:37:29 * Fixed an issue with variadic methods. Sometimes definitions 2019-07-15T19:37:29 of variadic methods added after the method was already called 2019-07-15T19:37:29 where not added. 2019-07-15T19:37:29 * Specified and implemented a precedence rule for overlapping 2019-07-15T19:37:29 variadic methods of generic functions. 2019-07-15T19:37:29 * Improved generated documentation for variadic methods. 2019-07-15T19:37:29 * Fixed the markup of some notes in the documentation. 2019-07-15T19:37:29 Release 0.1.3 2019-07-15T19:37:29 ~~~~~~~~~~~~~ 2019-07-15T19:37:29 The following was changed in Release 0.1.3: 2019-07-15T19:37:29 * Added variadic methods, e.g. multi-methods with a 2019-07-15T19:37:29 variable number of arguments. 2019-07-15T19:37:29 * Improved the long description text a bit 2019-07-15T19:37:29 and fixed bug in its markup. 2019-07-15T19:37:29 * Fixed invalid references in the long description. 2019-07-15T19:37:29 Release 0.1.2 2019-07-15T19:37:29 ~~~~~~~~~~~~~ 2019-07-15T19:37:29 The following was changed in Release 0.1.2: 2019-07-15T19:37:29 * Added a generic functions for `gf.Object.__call__`. 2019-07-15T19:37:29 * Added a `gf.go.FinalizingMixin`. 2019-07-15T19:37:29 * `gf.generic` now also accepts a type. 2019-07-15T19:37:29 * Improved the exception information for ambiguous calls. 2019-07-15T19:37:29 * Fixed some documentation glitches. 2019-07-15T19:37:29 Release 0.1.1 2019-07-15T19:37:29 ~~~~~~~~~~~~~ 2019-07-15T19:37:29 This was the initial release. 2019-07-15T19:37:29 .. [#] Silly me discovered about the shutdown of pythonhosted.org 2019-07-15T19:37:29 after version 0.2.0 was uploaded. 2019-07-15T19:37:29 .. [#] Of course this is not possible with standard python classes 2019-07-15T19:37:29 and their instances. 2019-07-15T19:37:29 Acknowledgements 2019-07-15T19:37:29 ================ 2019-07-15T19:37:29 Guido van Rossum created the core of this package. I just renamed some things 2019-07-15T19:37:29 and added some^H^H^H^H oodles of convenience stuff. Thank you Guido! 2019-07-15T19:37:29 Copyright 2019-07-15T19:37:29 ========= 2019-07-15T19:37:29 © 2006-2013 Python Software Foundation. 2019-07-15T19:37:29 © 2013-2018 Gerald Klix. 2019-07-15T19:37:29 running bdist_wheel 2019-07-15T19:37:29 running build 2019-07-15T19:37:29 running build_py 2019-07-15T19:37:29 creating build 2019-07-15T19:37:29 creating build/lib 2019-07-15T19:37:29 creating build/lib/gf 2019-07-15T19:37:29 copying gf/go.py -> build/lib/gf 2019-07-15T19:37:29 copying gf/__init__.py -> build/lib/gf 2019-07-15T19:37:29 copying gf/base.py -> build/lib/gf 2019-07-15T19:37:29 installing to build/bdist.linux-armv7l/wheel 2019-07-15T19:37:29 running install 2019-07-15T19:37:29 running install_lib 2019-07-15T19:37:29 creating build/bdist.linux-armv7l 2019-07-15T19:37:29 creating build/bdist.linux-armv7l/wheel 2019-07-15T19:37:29 creating build/bdist.linux-armv7l/wheel/gf 2019-07-15T19:37:29 copying build/lib/gf/go.py -> build/bdist.linux-armv7l/wheel/gf 2019-07-15T19:37:29 copying build/lib/gf/__init__.py -> build/bdist.linux-armv7l/wheel/gf 2019-07-15T19:37:29 copying build/lib/gf/base.py -> build/bdist.linux-armv7l/wheel/gf 2019-07-15T19:37:29 running install_egg_info 2019-07-15T19:37:29 running egg_info 2019-07-15T19:37:29 writing gf3.egg-info/PKG-INFO 2019-07-15T19:37:29 writing dependency_links to gf3.egg-info/dependency_links.txt 2019-07-15T19:37:29 writing top-level names to gf3.egg-info/top_level.txt 2019-07-15T19:37:29 reading manifest file 'gf3.egg-info/SOURCES.txt' 2019-07-15T19:37:29 reading manifest template 'MANIFEST.in' 2019-07-15T19:37:29 writing manifest file 'gf3.egg-info/SOURCES.txt' 2019-07-15T19:37:29 Copying gf3.egg-info to build/bdist.linux-armv7l/wheel/gf3-0.2.3-py3.7.egg-info 2019-07-15T19:37:29 running install_scripts 2019-07-15T19:37:29 creating build/bdist.linux-armv7l/wheel/gf3-0.2.3.dist-info/WHEEL 2019-07-15T19:37:29 creating '/tmp/pip-wheel-8g1vgzi2/gf3-0.2.3-py3-none-any.whl' and adding 'build/bdist.linux-armv7l/wheel' to it 2019-07-15T19:37:29 adding 'gf/__init__.py' 2019-07-15T19:37:29 adding 'gf/base.py' 2019-07-15T19:37:29 adding 'gf/go.py' 2019-07-15T19:37:29 adding 'gf3-0.2.3.dist-info/METADATA' 2019-07-15T19:37:29 adding 'gf3-0.2.3.dist-info/WHEEL' 2019-07-15T19:37:29 adding 'gf3-0.2.3.dist-info/top_level.txt' 2019-07-15T19:37:29 adding 'gf3-0.2.3.dist-info/zip-safe' 2019-07-15T19:37:29 adding 'gf3-0.2.3.dist-info/RECORD' 2019-07-15T19:37:29 removing build/bdist.linux-armv7l/wheel 2019-07-15T19:37:29 Building wheel for gf3 (setup.py): finished with status 'done' 2019-07-15T19:37:29 Stored in directory: /tmp/tmpkiva2ehq 2019-07-15T19:37:29 Successfully built gf3 2019-07-15T19:37:29 Cleaning up... 2019-07-15T19:37:29 Removing source in /tmp/pip-wheel-rppf2jin/gf3 2019-07-15T19:37:29 Removed build tracker '/tmp/pip-req-tracker-cc9cb04a'