<commit_before>Release Notes
=============

Version 1.11.0
---------------

**Bugs Fixed**

* When using arithmetic operations through a proxy object, checks about
  the types of arguments were not being performed correctly, which could
  result in an exception being raised to indicate that a proxy object had
  not been initialised when in fact the argument wasn't even an instance
  of a proxy object.
  
  Because an incorrect cast in C level code was being performed and
  an attribute in memory checked on the basis of it being a type different
  to what it actually was, technically it may have resulted in a process
  crash if the size of the object was smaller than the type being casted
  to.

* The ``__complex__()`` special method wasn't implemented and using
  ``complex()`` on a proxy object would give wrong results or fail.

* When using the C extension, if an exception was raised when using inplace
  or, ie., ``|=``, the error condition wasn't being correctly propagated
  back which would result in an exception showing up as wrong location
  in subsequent code.

* Type of ``long`` was used instead of ``Py_hash_t`` for Python 3.3+. This
  caused compiler warnings on Windows, which depending on what locale was
  set to, would cause pip to fail when installing the package.

* If calling ``Class.instancemethod`` and passing ``self`` explicitly, the
  ability to access ``__name__`` and ``__module__`` on the final bound
  method were not preserved. This was due to a ``partial`` being used for
  this special case, and it doesn't preserve introspection.

Version 1.10.11
---------------

**Bugs Fixed**

* When wrapping a ``@classmethod`` in a class used as a base class, when
  the method was called via the derived class type, the base class type was
  being passed for the ``cls`` argument instead of the derived class type
  through which the call was made.

**New Features**

* The C extension can be disabled at runtime by setting the environment
  variable ``WRAPT_DISABLE_EXTENSIONS``. This may be necessary where there
  is currently a difference in behaviour between pure Python implementation
  and C extension and the C extension isn't having the desired result.

Version 1.10.10
---------------

**Features Changed**

* Added back missing description and categorisations when releasing to PyPi.

Version 1.10.9
--------------

**Bugs Fixed**

* Code for ``inspect.getargspec()`` when using Python 2.6 was missing
  import of ``sys`` module.<commit_msg>Add warning about dropping support for Python 2.6 and 3.3.<commit_after>Release Notes
=============

Version 1.11.0
---------------

**Bugs Fixed**

* When using arithmetic operations through a proxy object, checks about
  the types of arguments were not being performed correctly, which could
  result in an exception being raised to indicate that a proxy object had
  not been initialised when in fact the argument wasn't even an instance
  of a proxy object.
  
  Because an incorrect cast in C level code was being performed and
  an attribute in memory checked on the basis of it being a type different
  to what it actually was, technically it may have resulted in a process
  crash if the size of the object was smaller than the type being casted
  to.

* The ``__complex__()`` special method wasn't implemented and using
  ``complex()`` on a proxy object would give wrong results or fail.

* When using the C extension, if an exception was raised when using inplace
  or, ie., ``|=``, the error condition wasn't being correctly propagated
  back which would result in an exception showing up as wrong location
  in subsequent code.

* Type of ``long`` was used instead of ``Py_hash_t`` for Python 3.3+. This
  caused compiler warnings on Windows, which depending on what locale was
  set to, would cause pip to fail when installing the package.

* If calling ``Class.instancemethod`` and passing ``self`` explicitly, the
  ability to access ``__name__`` and ``__module__`` on the final bound
  method were not preserved. This was due to a ``partial`` being used for
  this special case, and it doesn't preserve introspection.

**Features Changed**

* Dropped support for Python 2.6 and 3.3.

Version 1.10.11
---------------

**Bugs Fixed**

* When wrapping a ``@classmethod`` in a class used as a base class, when
  the method was called via the derived class type, the base class type was
  being passed for the ``cls`` argument instead of the derived class type
  through which the call was made.

**New Features**

* The C extension can be disabled at runtime by setting the environment
  variable ``WRAPT_DISABLE_EXTENSIONS``. This may be necessary where there
  is currently a difference in behaviour between pure Python implementation
  and C extension and the C extension isn't having the desired result.

Version 1.10.10
---------------

**Features Changed**

* Added back missing description and categorisations when releasing to PyPi.

Version 1.10.9
--------------

**Bugs Fixed**

* Code for ``inspect.getargspec()`` when using Python 2.6 was missing
  import of ``sys`` module.
{'fraction_non_alphanumeric': 0.08788832088084939, 'fraction_numerical': 0.010224144710971293, 'mean_word_length': 3.649908592321755, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1627640', 'n_tokens_mistral': 1327, 'n_tokens_neox': 1265, 'n_words': 743}