Commit Graph

28 Commits

Author SHA1 Message Date
Ivan Levkivskyi 3892899288
bpo-31333: Re-implement ABCMeta in C (GH-5733)
This adds C versions of methods used by ABCMeta that
improve performance of various ABC operations.
2018-02-18 17:39:43 +00:00
yahya-abou-imran ae12f5d4c9 bpo-32473: Improve ABCMeta._dump_registry() readability (GH-5091) 2018-01-12 18:18:44 +09:00
Aaron Hall, MBA ff48739ed0 bpo-30463: Add an empty __slots__ to abc.ABC. 2017-06-06 22:34:57 +03:00
Nate bd583ef985 bpo-29581: Make ABCMeta.__new__ pass **kwargs to type.__new__ (#527)
Many metaclasses in the standard library don't play nice with
__init_subclass__. This bug makes ABCMeta in particular with
__init_subclass__, which is an 80/20 solution for me personally.
AFAICT, a general solution to this problem requires updating all
metaclasses in the standard library to make sure they pass **kwargs to
type.__new__, whereas this PR only fixes ABCMeta. For context, see
https://bugs.python.org/issue29581.

* added a test combining ABCMeta and __init_subclass__
* Added NEWS item
2017-03-15 11:39:22 -07:00
Serhiy Storchaka 521e5860a5 Issue #22032: __qualname__ instead of __name__ is now always used to format
fully qualified class names of Python implemented classes.
2014-07-22 15:00:37 +03:00
R David Murray 3edcc7832e #16832: s/integer/object/ in docs/docstring, and add whatsnew entry. 2013-12-24 16:13:32 -05:00
Łukasz Langa eadd8cf507 Fix #16832 - expose cache validity checking support in ABCMeta 2013-05-25 18:41:50 +02:00
Andrew Svetlov b67596d815 Issue #16049: add abc.ABC helper class.
Patch by Bruno Dupuis.
2012-12-13 19:09:33 +02:00
Benjamin Peterson bfebb7b54a improve abstract property support (closes #11610)
Thanks to Darren Dale for patch.
2011-12-15 15:34:02 -05:00
Éric Araujo 6c3787cb70 Allow usage of SomeABC.register as a class decorator. Patch by Edoardo Spadolini (#10868). 2011-02-24 18:03:10 +00:00
Benjamin Peterson 45c257f193 add support for abstract class and static methods #5867 2010-08-17 00:52:52 +00:00
Benjamin Peterson d632664a33 Merged revisions 77789 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r77789 | benjamin.peterson | 2010-01-26 20:16:42 -0600 (Tue, 26 Jan 2010) | 1 line

  raise a clear TypeError when trying to register a non-class
........
2010-01-27 02:25:58 +00:00
Walter Dörwald 6e359bdabc Merged revisions 72278 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r72278 | walter.doerwald | 2009-05-04 18:03:03 +0200 (Mo, 04 Mai 2009) | 2 lines

  Fix typos.
........
2009-05-04 16:10:10 +00:00
Nick Coghlan 33794a7bc7 Merged revisions 66144 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r66144 | nick.coghlan | 2008-09-02 20:14:47 +1000 (Tue, 02 Sep 2008) | 1 line

  Issue 3747: Fix caching in ABCMeta.__subclasscheck__ (R: Georg Brandl)
........
2008-09-02 10:43:28 +00:00
Christian Heimes 9e7f1d2e96 Merged revisions 61038,61042-61045,61047,61050,61053,61055-61056,61061-61062,61066,61068,61070,61083,61085,61092-61103 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r61098 | jeffrey.yasskin | 2008-02-28 05:45:36 +0100 (Thu, 28 Feb 2008) | 7 lines

  Move abc._Abstract into object by adding a new flag Py_TPFLAGS_IS_ABSTRACT,
  which forbids constructing types that have it set. The effect is to speed

    ./python.exe -m timeit -s 'import abc' -s 'class Foo(object): __metaclass__ = abc.ABCMeta' 'Foo()'

  up from 2.5us to 0.201us. This fixes issue 1762.
........
  r61099 | jeffrey.yasskin | 2008-02-28 06:53:18 +0100 (Thu, 28 Feb 2008) | 3 lines

  Speed test_socketserver up from 28.739s to 0.226s, simplify the logic, and make
  sure all tests run even if some fail.
........
  r61100 | jeffrey.yasskin | 2008-02-28 07:09:19 +0100 (Thu, 28 Feb 2008) | 21 lines

  Thread.start() used sleep(0.000001) to make sure it didn't return before the
  new thread had started. At least on my MacBook Pro, that wound up sleeping for
  a full 10ms (probably 1 jiffy). By using an Event instead, we can be absolutely
  certain that the thread has started, and return more quickly (217us).

  Before:
  $  ./python.exe -m timeit -s 'from threading import Thread'  't = Thread(); t.start(); t.join()'
  100 loops, best of 3: 10.3 msec per loop
  $  ./python.exe -m timeit -s 'from threading import Thread; t = Thread()'  't.isAlive()'
  1000000 loops, best of 3: 0.47 usec per loop

  After:
  $  ./python.exe -m timeit -s 'from threading import Thread'  't = Thread(); t.start(); t.join()'
  1000 loops, best of 3: 217 usec per loop
  $  ./python.exe -m timeit -s 'from threading import Thread; t = Thread()'  't.isAlive()'
  1000000 loops, best of 3: 0.86 usec per loop

  To be fair, the 10ms isn't CPU time, and other threads including the spawned
  one get to run during it. There are also some slightly more complicated ways to
  get back the .4us in isAlive() if we want.
........
  r61101 | raymond.hettinger | 2008-02-28 10:23:48 +0100 (Thu, 28 Feb 2008) | 1 line

  Add repeat keyword argument to itertools.product().
........
  r61102 | christian.heimes | 2008-02-28 12:18:49 +0100 (Thu, 28 Feb 2008) | 1 line

  The empty tuple is usually a singleton with a much higher refcnt than 1
........
2008-02-28 12:27:11 +00:00
Christian Heimes 68f5fbe944 Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60766,60769-60786 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r60752 | mark.dickinson | 2008-02-12 22:31:59 +0100 (Tue, 12 Feb 2008) | 5 lines

  Implementation of Fraction.limit_denominator.

  Remove Fraction.to_continued_fraction and
  Fraction.from_continued_fraction
........
  r60754 | mark.dickinson | 2008-02-12 22:40:53 +0100 (Tue, 12 Feb 2008) | 3 lines

  Revert change in r60712:  turn alternate constructors back into
  classmethods instead of staticmethods.
........
  r60755 | mark.dickinson | 2008-02-12 22:46:54 +0100 (Tue, 12 Feb 2008) | 4 lines

  Replace R=fractions.Fraction with F=fractions.Fraction in
  test_fractions.py.  This should have been part of the name
  change from Rational to Fraction.
........
  r60758 | georg.brandl | 2008-02-13 08:20:22 +0100 (Wed, 13 Feb 2008) | 3 lines

  #2063: correct order of utime and stime in os.times()
  result on Windows.
........
  r60762 | jeffrey.yasskin | 2008-02-13 18:58:04 +0100 (Wed, 13 Feb 2008) | 7 lines

  Working on issue #1762: Brought
    ./python.exe -m timeit -s 'from fractions import Fraction; f = Fraction(3, 2)' 'isinstance(3, Fraction); isinstance(f, Fraction)'
  from 12.3 usec/loop to 3.44 usec/loop and
    ./python.exe -m timeit -s 'from fractions import Fraction' 'Fraction(3, 2)'
  from 48.8 usec to 23.6 usec by avoiding genexps and sets in __instancecheck__
  and inlining the common case from __subclasscheck__.
........
  r60765 | brett.cannon | 2008-02-13 20:15:44 +0100 (Wed, 13 Feb 2008) | 5 lines

  Fix --enable-universalsdk and its comment line so that zsh's flag completion
  works.

  Thanks to Jeroen Ruigrok van der Werven for the fix.
........
  r60771 | kurt.kaiser | 2008-02-14 01:08:55 +0100 (Thu, 14 Feb 2008) | 2 lines

  Bring NEWS.txt up to date from check-in msgs.
........
  r60772 | raymond.hettinger | 2008-02-14 02:08:02 +0100 (Thu, 14 Feb 2008) | 3 lines

  Update notes on Decimal.
........
  r60773 | raymond.hettinger | 2008-02-14 03:41:22 +0100 (Thu, 14 Feb 2008) | 1 line

  Fix decimal repr which should have used single quotes like other reprs.
........
  r60785 | jeffrey.yasskin | 2008-02-14 07:12:24 +0100 (Thu, 14 Feb 2008) | 11 lines

  Performance optimizations on Fraction's constructor.

    ./python.exe -m timeit -s 'from fractions import Fraction' 'Fraction(3)`
  31.7 usec/loop -> 9.2 usec/loop

    ./python.exe -m timeit -s 'from fractions import Fraction' 'Fraction(3, 2)'`
  27.7 usec/loop -> 9.32 usec/loop

    ./python.exe -m timeit -s 'from fractions import Fraction; f = Fraction(3, 2)' 'Fraction(f)'
  31.9 usec/loop -> 14.3 usec/loop
........
  r60786 | jeffrey.yasskin | 2008-02-14 08:49:25 +0100 (Thu, 14 Feb 2008) | 5 lines

  Change simple instances (in Fraction) of self.numerator and self.denominator to
  self._numerator and self._denominator. This speeds abs() up from 12.2us to
  10.8us and trunc() from 2.07us to 1.11us. This doesn't change _add and friends
  because they're more complicated.
........
2008-02-14 08:27:37 +00:00
Raymond Hettinger 93fa608626 Moved WeakSet into a bootstap module use by abc.py.
This makes it possible to use ABCs in weakref.py
(which will be done in a later checkin).
2008-02-05 00:20:01 +00:00
Christian Heimes 043d6f67c7 Copied doc for reload() from trunk's function.rst to imp.rst 2008-01-07 17:19:16 +00:00
Christian Heimes 45031dfd1c Backmerge -r59233:59232
Guido said:
Please roll this back.  The error message you added is inappropriate
when the parameter to a legitimate register() call is omitted, e.g.

collections.Sequence.register()
2007-11-30 15:13:13 +00:00
Christian Heimes 2e510fb920 Fix for bug #1109
Warning required when calling register() on an ABCMeta subclass.
2007-11-30 14:32:41 +00:00
Georg Brandl 3b8cb17695 #1061 (mainly by Thomas Wouters): use weak sets for abc caches. 2007-10-23 06:26:46 +00:00
Guido van Rossum 894d35ea61 Thomas Wouters pointed out that _Abstract.__new__ should use super().__new__()
instead of going straight to object.__new__().
2007-09-11 20:42:30 +00:00
Guido van Rossum c1e315d2b0 Rename __whatever variables defined by ABCMeta to _abc_whatever, so as
to simplify legitimate use of these.
2007-08-20 19:29:24 +00:00
Guido van Rossum 787794f8e2 Fix _dump_registry() to use the correct prefix for the private
methods.  Reset the negative cache *before* resetting the invalidation
counter, hoping this may plug a race condition (but then again, this
whole module isn't coded to be thread-safe).
2007-08-18 00:08:26 +00:00
Guido van Rossum 70d2b890de Tests for @abstractproperty by Jeffrey Yasskin.
(The previous changes to abc.py were also by him).
Put back a comment about using super() for properties
(I didn't realize this worked).
2007-08-01 17:52:23 +00:00
Guido van Rossum b31339fa02 Add @abstractproperty. 2007-08-01 17:32:28 +00:00
Guido van Rossum bb5f590323 Modernize the super() call in ABCMeta.__new__() -- I had messed with
it when I thought something was broken, and forgotten to restore it
before checking in (maybe I did a svn revert which had the wrong effect?).
2007-06-14 03:27:55 +00:00
Guido van Rossum 8518bdc382 Somehow this needed adding. 2007-06-14 00:03:37 +00:00