Skip to content

Initial Update#1

Open
pyup-bot wants to merge 3 commits intomasterfrom
pyup-initial-update
Open

Initial Update#1
pyup-bot wants to merge 3 commits intomasterfrom
pyup-initial-update

Conversation

@pyup-bot
Copy link
Copy Markdown

This PR sets up pyup.io on this repo and updates all dependencies at once, in a single branch.

Subsequent pull requests will update one dependency at a time, each in their own branch. If you want to start with that right away, simply close this PR.

Update redis from 2.10.6 to 2.10.6.

Changelog

2.10.6

* Various performance improvements. Thanks cjsimpson
 * Fixed a bug with SRANDMEMBER where
 * Added HSTRLEN command. Thanks Alexander Putilin
 * Added the TOUCH command. Thanks Anis Jonischkeit
 * Remove unnecessary calls to the server when registering Lua scripts.
   Thanks Ben Greenberg
 * SET's EX and PX arguments now allow values of zero. Thanks huangqiyin
 * Added PUBSUB {CHANNELS, NUMPAT, NUMSUB} commands. Thanks Angus Pearson
 * PubSub connections that that encounter `InterruptedError`s now
   retry automatically. Thanks Carlton Gibson and Seth M. Larson
 * LPUSH and RPUSH commands run on PyPy now correctly returns the number
   of items of the list. Thanks Jeong YunWon
 * Added support to automatically retry socket EINTR errors. Thanks
   Thomas Steinacher
 * PubSubWorker threads started with `run_in_thread` are now daemonized
   so the thread shuts down when the running process goes away. Thanks
   Keith Ainsworth
 * Added support for GEO commands. Thanks Pau Freixes, Alex DeBrie and
   Abraham Toriz
 * Made client construction from URLs smarter. Thanks Tim Savage
 * Added support for CLUSTER * commands. Thanks Andy Huang
 * The RESTORE command now accepts an optional `replace` boolean.
   Thanks Yoshinari Takaoka
 * Attempt to connect to a new Sentinel if a TimeoutError occurs. Thanks
   Bo Lopker
 * Fixed a bug in the client's `__getitem__` where a KeyError would be
   raised if the value returned by the server is an empty string.
   Thanks Javier Candeira.
 * Socket timeouts when connecting to a server are now properly raised
   as TimeoutErrors.

2.10.5

* Allow URL encoded parameters in Redis URLs. Characters like a "/" can
   now be URL encoded and redis-py will correctly decode them. Thanks
   Paul Keene.
 * Added support for the WAIT command. Thanks https://github.com/eshizhan
 * Better shutdown support for the PubSub Worker Thread. It now properly
   cleans up the connection, unsubscribes from any channels and patterns
   previously subscribed to and consumes any waiting messages on the socket.
 * Added the ability to sleep for a brief period in the event of a
   WatchError occuring. Thanks Joshua Harlow.
 * Fixed a bug with pipeline error reporting when dealing with characters
   in error messages that could not be encoded to the connection's
   character set. Thanks Hendrik Muhs.
 * Fixed a bug in Sentinel connections that would inadvertantly connect
   to the master when the connection pool resets. Thanks
   https://github.com/df3n5
 * Better timeout support in Pubsub get_message. Thanks Andy Isaacson.
 * Fixed a bug with the HiredisParser that would cause the parser to
   get stuck in an endless loop if a specific number of bytes were
   delivered from the socket. This fix also increases performance of
   parsing large responses from the Redis server.
 * Added support for ZREVRANGEBYLEX.
 * ConnectionErrors are now raised if Redis refuses a connection due to
   the maxclients limit being exceeded. Thanks Roman Karpovich.
 * max_connections can now be set when instantiating client instances.
   Thanks Ohad Perry.

2.10.4

(skipped due to a PyPI snafu)

2.10.3

* Fixed a bug with the bytearray support introduced in 2.10.2. Thanks
   Josh Owen.

2.10.2

* Added support for Hiredis's new bytearray support. Thanks
   https://github.com/tzickel
 * POSSIBLE BACKWARDS INCOMPATBLE CHANGE: Fixed a possible race condition
   when multiple threads share the same Lock instance with a timeout. Lock
   tokens are now stored in thread local storage by default. If you have
   code that acquires a lock in one thread and passes that lock instance to
   another thread to release it, you need to disable thread local storage.
   Refer to the doc strings on the Lock class about the thread_local
   argument information.
 * Fixed a regression in from_url where "charset" and "errors" weren't
   valid options. "encoding" and "encoding_errors" are still accepted
   and preferred.
 * The "charset" and "errors" options have been deprecated. Passing
   either to StrictRedis.__init__ or from_url will still work but will
   also emit a DeprecationWarning. Instead use the "encoding" and
   "encoding_errors" options.
 * Fixed a compatability bug with Python 3 when the server closes a
   connection.
 * Added BITPOS command. Thanks https://github.com/jettify.
 * Fixed a bug when attempting to send large values to Redis in a Pipeline.

2.10.1

* Fixed a bug where Sentinel connections to a server that's no longer a
   master and receives a READONLY error will disconnect and reconnect to
   the master.

2.10.0

* Discontinuted support for Python 2.5. Upgrade. You'll be happier.
 * The HiRedis parser will now properly raise ConnectionErrors.
 * Completely refactored PubSub support. Fixes all known PubSub bugs and
   adds a bunch of new features. Docs can be found in the README under the
   new "Publish / Subscribe" section.
 * Added the new HyperLogLog commanads (PFADD, PFCOUNT, PFMERGE). Thanks
   Pepijn de Vos and Vincent Ohprecio.
 * Updated TTL and PTTL commands with Redis 2.8+ semantics. Thanks Markus
   Kaiserswerth.
 * *SCAN commands now return a long (int on Python3) cursor value rather
   than the string representation. This might be slightly backwards
   incompatible in code using *SCAN commands loops such as
   "while cursor != '0':".
 * Added extra *SCAN commands that return iterators instead of the normal
   [cursor, data] type. Use scan_iter, hscan_iter, sscan_iter, and
   zscan_iter for iterators. Thanks Mathieu Longtin.
 * Added support for SLOWLOG commands. Thanks Rick van Hattem.
 * Added lexicographical commands ZRANGEBYLEX, ZREMRANGEBYLEX, and ZLEXCOUNT
   for sorted sets.
 * Connection objects now support an optional argument, socket_read_size,
   indicating how much data to read during each socket.recv() call. After
   benchmarking, increased the default size to 64k, which dramatically
   improves performance when fetching large values, such as many results
   in a pipeline or a large (>1MB) string value.
 * Improved the pack_command and send_packed_command functions to increase
   performance when sending large (>1MB) values.
 * Sentinel Connections to master servers now detect when a READONLY error
   is encountered and disconnect themselves and all other active connections
   to the same master so that the new master can be discovered.
 * Fixed Sentinel state parsing on Python 3.
 * Added support for SENTINEL MONITOR, SENTINEL REMOVE, and SENTINEL SET
   commands. Thanks Greg Murphy.
 * INFO ouput that doesn't follow the "key:value" format will now be
   appended to a key named "__raw__" in the INFO dictionary. Thanks Pedro
   Larroy.
 * The "vagrant" directory contains a complete vagrant environment for
   redis-py developers. The environment runs a Redis master, a Redis slave,
   and 3 Sentinels. Future iterations of the test sutie will incorporate
   more integration style tests, ensuring things like failover happen
   correctly.
 * It's now possible to create connection pool instances from a URL.
   StrictRedis.from_url() now uses this feature to create a connection pool
   instance and use that when creating a new client instance. Thanks
   https://github.com/chillipino
 * When creating client instances or connection pool instances from an URL,
   it's now possible to pass additional options to the connection pool with
   querystring arguments.
 * Fixed a bug where some encodings (like utf-16) were unusable on Python 3
   as command names and literals would get encoded.
 * Added an SSLConnection class that allows for secure connections through
   stunnel or other means. Construct and SSL connection with the sll=True
   option on client classes, using the rediss:// scheme from an URL, or
   by passing the SSLConnection class to a connection pool's
   connection_class argument. Thanks https://github.com/oranagra.
 * Added a socket_connect_timeout option to control how long to wait while
   establishing a TCP connection before timing out. This lets the client
   fail fast when attempting to connect to a downed server while keeping
   a more lenient timeout for all other socket operations.
 * Added TCP Keep-alive support by passing use the socket_keepalive=True
   option. Finer grain control can be achieved using the
   socket_keepalive_options option which expects a dictionary with any of
   the keys (socket.TCP_KEEPIDLE, socket.TCP_KEEPCNT, socket.TCP_KEEPINTVL)
   and integers for values. Thanks Yossi Gottlieb.
 * Added a `retry_on_timeout` option that controls how socket.timeout errors
   are handled. By default it is set to False and will cause the client to
   raise a TimeoutError anytime a socket.timeout is encountered. If
   `retry_on_timeout` is set to True, the client will retry a command that
   timed out once like other `socket.error`s.
 * Completely refactored the Lock system. There is now a LuaLock class
   that's used when the Redis server is capable of running Lua scripts along
   with a fallback class for Redis servers < 2.6. The new locks fix several
   subtle race consider that the old lock could face. In additional, a
   new method, "extend" is available on lock instances that all a lock
   owner to extend the amount of time they have the lock for. Thanks to
   Eli Finkelshteyn and https://github.com/chillipino for contributions.

2.9.1

* IPv6 support. Thanks https://github.com/amashinchi

2.9.0

* Performance improvement for packing commands when using the PythonParser.
   Thanks Guillaume Viot.
 * Executing an empty pipeline transaction no longer sends MULTI/EXEC to
   the server. Thanks EliFinkelshteyn.
 * Errors when authenticating (incorrect password) and selecting a database
   now close the socket.
 * Full Sentinel support thanks to Vitja Makarov. Thanks!
 * Better repr support for client and connection pool instances. Thanks
   Mark Roberts.
 * Error messages that the server sends to the client are now included
   in the client error message. Thanks Sangjin Lim.
 * Added the SCAN, SSCAN, HSCAN, and ZSCAN commands. Thanks Jingchao Hu.
 * ResponseErrors generated by pipeline execution provide addition context
   including the position of the command in the pipeline and the actual
   command text generated the error.
 * ConnectionPools now play nicer in threaded environments that fork. Thanks
   Christian Joergensen.

2.8.0

* redis-py should play better with gevent when a gevent Timeout is raised.
   Thanks leifkb.
 * Added SENTINEL command. Thanks Anna Janackova.
 * Fixed a bug where pipelines could potentially corrupt a connection
   if the MULTI command generated a ResponseError. Thanks EliFinkelshteyn
   for the report.
 * Connections now call socket.shutdown() prior to socket.close() to
   ensure communication ends immediately per the note at
   http://docs.python.org/2/library/socket.htmlsocket.socket.close
   Thanks to David Martin for pointing this out.
 * Lock checks are now based on floats rather than ints. Thanks
   Vitja Makarov.

2.7.6

* Added CONFIG RESETSTAT command. Thanks Yossi Gottlieb.
 * Fixed a bug introduced in 2.7.3 that caused issues with script objects
   and pipelines. Thanks Carpentier Pierre-Francois.
 * Converted redis-py's test suite to use the awesome py.test library.
 * Fixed a bug introduced in 2.7.5 that prevented a ConnectionError from
   being raised when the Redis server is LOADING data.
 * Added a BusyLoadingError exception that's raised when the Redis server
   is starting up and not accepting commands yet. BusyLoadingError
   subclasses ConnectionError, which this state previously returned.
   Thanks Yossi Gottlieb.

2.7.5

* DEL, HDEL and ZREM commands now return the numbers of keys deleted
   instead of just True/False.
 * from_url now supports URIs with a port number. Thanks Aaron Westendorf.

2.7.4

* Added missing INCRBY method. Thanks Krzysztof Dorosz.
 * SET now accepts the EX, PX, NX and XX options from Redis 2.6.12. These
   options will generate errors if these options are used when connected
   to a Redis server < 2.6.12. Thanks George Yoshida.

2.7.3

* Fixed a bug with BRPOPLPUSH and lists with empty strings.
 * All empty except: clauses have been replaced to only catch Exception
   subclasses. This prevents a KeyboardInterrupt from triggering exception
   handlers. Thanks Lucian Branescu Mihaila.
 * All exceptions that are the result of redis server errors now share a
   command Exception subclass, ServerError. Thanks Matt Robenolt.
 * Prevent DISCARD from being called if MULTI wasn't also called. Thanks
   Pete Aykroyd.
 * SREM now returns an integer indicating the number of items removed from
   the set. Thanks http://github.com/ronniekk.
 * Fixed a bug with BGSAVE and BGREWRITEAOF response callbacks with Python3.
   Thanks Nathan Wan.
 * Added CLIENT GETNAME and CLIENT SETNAME commands.
   Thanks http://github.com/bitterb.
 * It's now possible to use len() on a pipeline instance to determine the
   number of commands that will be executed. Thanks Jon Parise.
 * Fixed a bug in INFO's parse routine with floating point numbers. Thanks
   Ali Onur Uyar.
 * Fixed a bug with BITCOUNT to allow `start` and `end` to both be zero.
   Thanks Tim Bart.
 * The transaction() method now accepts a boolean keyword argument,
   value_from_callable. By default, or if False is passes, the transaction()
   method will return the value of the pipelines execution. Otherwise, it
   will return whatever func() returns.
 * Python3 compatibility fix ensuring we're not already bytes(). Thanks
   Salimane Adjao Moustapha.
 * Added PSETEX. Thanks YAMAMOTO Takashi.
 * Added a BlockingConnectionPool to limit the number of connections that
   can be created. Thanks James Arthur.
 * SORT now accepts a `groups` option that if specified, will return
   tuples of n-length, where n is the number of keys specified in the GET
   argument. This allows for convenient row-based iteration. Thanks
   Ionuț Arțăriși.

2.7.2

* Parse errors are now *always* raised on multi/exec pipelines, regardless
   of the `raise_on_error` flag. See
   https://groups.google.com/forum/?hl=en&fromgroups=!topic/redis-db/VUiEFT8U8U0
   for more info.

2.7.1

* Packaged tests with source code

2.7.0

* Added BITOP and BITCOUNT commands. Thanks Mark Tozzi.
 * Added the TIME command. Thanks Jason Knight.
 * Added support for LUA scripting. Thanks to Angus Peart, Drew Smathers,
   Issac Kelly, Louis-Philippe Perron, Sean Bleier, Jeffrey Kaditz, and
   Dvir Volk for various patches and contributions to this feature.
 * Changed the default error handling in pipelines. By default, the first
   error in a pipeline will now be raised. A new parameter to the
   pipeline's execute, `raise_on_error`, can be set to False to keep the
   old behavior of embeedding the exception instances in the result.
 * Fixed a bug with pipelines where parse errors won't corrupt the
   socket.
 * Added the optional `number` argument to SRANDMEMBER for use with
   Redis 2.6+ servers.
 * Added PEXPIRE/PEXPIREAT/PTTL commands. Thanks Luper Rouch.
 * Added INCRBYFLOAT/HINCRBYFLOAT commands. Thanks Nikita Uvarov.
 * High precision floating point values won't lose their precision when
   being sent to the Redis server. Thanks Jason Oster and Oleg Pudeyev.
 * Added CLIENT LIST/CLIENT KILL commands

2.6.2

* `from_url` is now available as a classmethod on client classes. Thanks
   Jon Parise for the patch.
 * Fixed several encoding errors resulting from the Python 3.x support.

2.6.1

* Python 3.x support! Big thanks to Alex Grönholm.
 * Fixed a bug in the PythonParser's read_response that could hide an error
   from the client (251).

2.6.0

* Changed (p)subscribe and (p)unsubscribe to no longer return messages
   indicating the channel was subscribed/unsubscribed to. These messages
   are available in the listen() loop instead. This is to prevent the
   following scenario:
     * Client A is subscribed to "foo"
     * Client B publishes message to "foo"
     * Client A subscribes to channel "bar" at the same time.
   Prior to this change, the subscribe() call would return the published
   messages on "foo" rather than the subscription confirmation to "bar".
 * Added support for GETRANGE, thanks Jean-Philippe Caruana
 * A new setting "decode_responses" specifies whether return values from
   Redis commands get decoded automatically using the client's charset
   value. Thanks to Frankie Dintino for the patch.

2.4.13

* redis.from_url() can take an URL representing a Redis connection string
   and return a client object. Thanks Kenneth Reitz for the patch.

2.4.12

* ConnectionPool is now fork-safe. Thanks Josiah Carson for the patch.

2.4.11

* AuthenticationError will now be correctly raised if an invalid password
   is supplied.
 * If Hiredis is unavailable, the HiredisParser will raise a RedisError
   if selected manually.
 * Made the INFO command more tolerant of Redis changes formatting. Fix
   for 217.

2.4.10

* Buffer reads from socket in the PythonParser. Fix for a Windows-specific
   bug (205).
 * Added the OBJECT and DEBUG OBJECT commands.
 * Added __del__ methods for classes that hold on to resources that need to
   be cleaned up. This should prevent resource leakage when these objects
   leave scope due to misuse or unhandled exceptions. Thanks David Wolever
   for the suggestion.
 * Added the ECHO command for completeness.
 * Fixed a bug where attempting to subscribe to a PubSub channel of a Redis
   server that's down would blow out the stack. Fixes 179 and 195. Thanks
   Ovidiu Predescu for the test case.
 * StrictRedis's TTL command now returns a -1 when querying a key with no
   expiration. The Redis class continues to return None.
 * ZADD and SADD now return integer values indicating the number of items
   added. Thanks Homer Strong.
 * Renamed the base client class to StrictRedis, replacing ZADD and LREM in
   favor of their official argument order. The Redis class is now a subclass
   of StrictRedis, implementing the legacy redis-py implementations of ZADD
   and LREM. Docs have been updated to suggesting the use of StrictRedis.
 * SETEX in StrictRedis is now compliant with official Redis SETEX command.
   the name, value, time implementation moved to "Redis" for backwards
   compatability.

2.4.9

* Removed socket retry logic in Connection. This is the responsbility of
   the caller to determine if the command is safe and can be retried. Thanks
   David Wolver.
 * Added some extra guards around various types of exceptions being raised
   when sending or parsing data. Thanks David Wolver and Denis Bilenko.

2.4.8

* Imported with_statement from __future__ for Python 2.5 compatability.

2.4.7

* Fixed a bug where some connections were not getting released back to the
   connection pool after pipeline execution.
 * Pipelines can now be used as context managers. This is the preferred way
   of use to ensure that connections get cleaned up properly. Thanks
   David Wolever.
 * Added a convenience method called transaction() on the base Redis class.
   This method eliminates much of the boilerplate used when using pipelines
   to watch Redis keys. See the documentation for details on usage.

2.4.6

* Variadic arguments for SADD, SREM, ZREN, HDEL, LPUSH, and RPUSH. Thanks
   Raphaël Vinot.
 * (CRITICAL) Fixed an error in the Hiredis parser that occasionally caused
   the socket connection to become corrupted and unusable. This became
   noticeable once connection pools started to be used.
 * ZRANGE, ZREVRANGE, ZRANGEBYSCORE, and ZREVRANGEBYSCORE now take an
   additional optional argument, score_cast_func, which is a callable used
   to cast the score value in the return type. The default is float.
 * Removed the PUBLISH method from the PubSub class. Connections that are
   [P]SUBSCRIBEd cannot issue PUBLISH commands, so it doesn't make sense
   to have it here.
 * Pipelines now contain WATCH and UNWATCH. Calling WATCH or UNWATCH from
   the base client class will result in a deprecation warning. After
   WATCHing one or more keys, the pipeline will be placed in immediate
   execution mode until UNWATCH or MULTI are called. Refer to the new
   pipeline docs in the README for more information. Thanks to David Wolever
   and Randall Leeds for greatly helping with this.

2.4.5

* The PythonParser now works better when reading zero length strings.

2.4.4

* Fixed a typo introduced in 2.4.3

2.4.3

* Fixed a bug in the UnixDomainSocketConnection caused when trying to
   form an error message after a socket error.

2.4.2

* Fixed a bug in pipeline that caused an exception while trying to
   reconnect after a connection timeout.

2.4.1

* Fixed a bug in the PythonParser if disconnect is called before connect.

2.4.0

* WARNING: 2.4 contains several backwards incompatible changes.
 * Completely refactored Connection objects. Moved much of the Redis
   protocol packing for requests here, and eliminated the nasty dependencies
   it had on the client to do AUTH and SELECT commands on connect.
 * Connection objects now have a parser attribute. Parsers are responsible
   for reading data Redis sends. Two parsers ship with redis-py: a
   PythonParser and the HiRedis parser. redis-py will automatically use the
   HiRedis parser if you have the Python hiredis module installed, otherwise
   it will fall back to the PythonParser. You can force or the other, or even
   an external one by passing the `parser_class` argument to ConnectionPool.
 * Added a UnixDomainSocketConnection for users wanting to talk to the Redis
   instance running on a local machine only. You can use this connection
   by passing it to the `connection_class` argument of the ConnectionPool.
 * Connections no longer derive from threading.local. See threading.local
   note below.
 * ConnectionPool has been comletely refactored. The ConnectionPool now
   maintains a list of connections. The redis-py client only hangs on to
   a ConnectionPool instance, calling get_connection() anytime it needs to
   send a command. When get_connection() is called, the command name and
   any keys involved in the command are passed as arguments. Subclasses of
   ConnectionPool could use this information to identify the shard the keys
   belong to and return a connection to it. ConnectionPool also implements
   disconnect() to force all connections in the pool to disconnect from
   the Redis server.
 * redis-py no longer support the SELECT command. You can still connect to
   a specific database by specifing it when instantiating a client instance
   or by creating a connection pool. If you need to talk to multiplate
   databases within your application, you should use a separate client
   instance for each database you want to talk to.
 * Completely refactored Publish/Subscribe support. The subscribe and listen
   commands are no longer available on the redis-py Client class. Instead,
   the `pubsub` method returns an instance of the PubSub class which contains
   all publish/subscribe support. Note, you can still PUBLISH from the
   redis-py client class if you desire.
 * Removed support for all previously deprecated commands or options.
 * redis-py no longer uses threading.local in any way. Since the Client
   class no longer holds on to a connection, it's no longer needed. You can
   now pass client instances between threads, and commands run on those
   threads will retrieve an available connection from the pool, use it and
   release it. It should now be trivial to use redis-py with eventlet or
   greenlet.
 * ZADD now accepts pairs of value=score keyword arguments. This should help
   resolve the long standing 72. The older value and score arguments have
   been deprecated in favor of the keyword argument style.
 * Client instances now get their own copy of RESPONSE_CALLBACKS. The new
   set_response_callback method adds a user defined callback to the instance.
 * Support Jython, fixing 97. Thanks to Adam Vandenberg for the patch.
 * Using __getitem__ now properly raises a KeyError when the key is not
   found. Thanks Ionuț Arțăriși for the patch.
 * Newer Redis versions return a LOADING message for some commands while
   the database is loading from disk during server start. This could cause
   problems with SELECT. We now force a socket disconnection prior to
   raising a ResponseError so subsuquent connections have to reconnect and
   re-select the appropriate database. Thanks to Benjamin Anderson for
   finding this and fixing.

2.2.4

* WARNING: Potential backwards incompatible change - Changed order of
   parameters of ZREVRANGEBYSCORE to match those of the actual Redis command.
   This is only backwards-incompatible if you were passing max and min via
   keyword args. If passing by normal args, nothing in user code should have
   to change. Thanks Stéphane Angel for the fix.
 * Fixed INFO to properly parse the Redis data correctly for both 2.2.x and
   2.3+. Thanks Stéphane Angel for the fix.
 * Lock objects now store their timeout value as a float. This allows floats
   to be used as timeout values. No changes to existing code required.
 * WATCH now supports multiple keys. Thanks Rich Schumacher.
 * Broke out some code that was Python 2.4 incompatible. redis-py should
   now be useable on 2.4, but this hasn't actually been tested. Thanks
   Dan Colish for the patch.
 * Optimized some code using izip and islice. Should have a pretty good
   speed up on larger data sets. Thanks Dan Colish.
 * Better error handling when submitting an empty mapping to HMSET. Thanks
   Dan Colish.
 * Subscription status is now reset after every (re)connection.

2.2.3

* Added support for Hiredis. To use, simply "pip install hiredis" or
   "easy_install hiredis". Thanks for Pieter Noordhuis for the hiredis-py
   bindings and the patch to redis-py.
 * The connection class is chosen based on whether hiredis is installed
   or not. To force the use of the PythonConnection, simply create
   your own ConnectionPool instance with the connection_class argument
   assigned to to PythonConnection class.
 * Added missing command ZREVRANGEBYSCORE. Thanks Jay Baird for the patch.
 * The INFO command should be parsed correctly on 2.2.x server versions
   and is backwards compatible with older versions. Thanks Brett Hoerner.

2.2.2

* Fixed a bug in ZREVRANK where retriving the rank of a value not in
   the zset would raise an error.
 * Fixed a bug in Connection.send where the errno import was getting
   overwritten by a local variable.
 * Fixed a bug in SLAVEOF when promoting an existing slave to a master.
 * Reverted change of download URL back to redis-VERSION.tar.gz. 2.2.1's
   change of this actually broke Pypi for Pip installs. Sorry!

2.2.1

* Changed archive name to redis-py-VERSION.tar.gz to not conflict
   with the Redis server archive.

2.2.0

* Implemented SLAVEOF
 * Implemented CONFIG as config_get and config_set
 * Implemented GETBIT/SETBIT
 * Implemented BRPOPLPUSH
 * Implemented STRLEN
 * Implemented PERSIST
 * Implemented SETRANGE
Links

Update python-telegram-bot from 10.1.0 to 10.1.0.

Changelog

10.1.0

Fixes changing previous behaviour:

- Add urllib3 fix for socks5h support (`1085`_)
- Fix send_sticker() timeout=20 (`1088`_)

Fixes:

- Add a caption_entity filter for filtering caption entities (`1068`_)
- Inputfile encode filenames (`1086`_)
- InputFile: Fix proper naming of file when reading from subprocess.PIPE (`1079`_)
- Remove pytest-catchlog from requirements (`1099`_)
- Documentation fixes (`1061`_, `1078`_, `1081`_, `1096`_)

.. _`1061`: https://github.com/python-telegram-bot/python-telegram-bot/pull/1061
.. _`1068`: https://github.com/python-telegram-bot/python-telegram-bot/pull/1068
.. _`1078`: https://github.com/python-telegram-bot/python-telegram-bot/pull/1078
.. _`1079`: https://github.com/python-telegram-bot/python-telegram-bot/pull/1079
.. _`1081`: https://github.com/python-telegram-bot/python-telegram-bot/pull/1081
.. _`1085`: https://github.com/python-telegram-bot/python-telegram-bot/pull/1085
.. _`1086`: https://github.com/python-telegram-bot/python-telegram-bot/pull/1086
.. _`1088`: https://github.com/python-telegram-bot/python-telegram-bot/pull/1088
.. _`1096`: https://github.com/python-telegram-bot/python-telegram-bot/pull/1096
.. _`1099`: https://github.com/python-telegram-bot/python-telegram-bot/pull/1099

**2018-04-17**

10.0.2

Important fix:

- Handle utf8 decoding errors (`1076`_)

New features:

- Added Filter.regex (`1028`_)
- Filters for Category and file types (`1046`_)
- Added video note filter (`1067`_)

Fixes:

- Fix in telegram.Message (`1042`_)
- Make chat_id a positional argument inside shortcut methods of Chat and User classes (`1050`_)
- Make Bot.full_name return a unicode object. (`1063`_)
- CommandHandler faster check (`1074`_)
- Correct documentation of Dispatcher.add_handler (`1071`_)
- Various small fixes to documentation.

.. _`1028`: https://github.com/python-telegram-bot/python-telegram-bot/pull/1028
.. _`1042`: https://github.com/python-telegram-bot/python-telegram-bot/pull/1042
.. _`1046`: https://github.com/python-telegram-bot/python-telegram-bot/pull/1046
.. _`1050`: https://github.com/python-telegram-bot/python-telegram-bot/pull/1050
.. _`1067`: https://github.com/python-telegram-bot/python-telegram-bot/pull/1067
.. _`1063`: https://github.com/python-telegram-bot/python-telegram-bot/pull/1063
.. _`1074`: https://github.com/python-telegram-bot/python-telegram-bot/pull/1074
.. _`1076`: https://github.com/python-telegram-bot/python-telegram-bot/pull/1076
.. _`1071`: https://github.com/python-telegram-bot/python-telegram-bot/pull/1071

**2018-03-05**

10.0.1

Fixes:

- Fix conversationhandler timeout (PR `1032`_)
- Add missing docs utils (PR `912`_)

.. _`1032`: https://github.com/python-telegram-bot/python-telegram-bot/pull/826
.. _`912`: https://github.com/python-telegram-bot/python-telegram-bot/pull/826

**2018-03-02**

10.0.0

Non backward compatabile changes and changed defaults

- JobQueue: Remove deprecated prevent_autostart & put() (PR `1012`_)
- Bot, Updater: Remove deprecated network_delay (PR `1012`_)
- Remove deprecated Message.new_chat_member (PR `1012`_)
- Retry bootstrap phase indefinitely (by default) on network errors (PR `1018`_)

New Features

- Support v3.6 API (PR `1006`_)
- User.full_name convinience property (PR `949`_)
- Add `send_phone_number_to_provider` and `send_email_to_provider` arguments to send_invoice (PR `986`_)
- Bot: Add shortcut methods reply_{markdown,html} (PR `827`_)
- Bot: Add shortcut method reply_media_group (PR `994`_)
- Added utils.helpers.effective_message_type (PR `826`_)
- Bot.get_file now allows passing a file in addition to file_id (PR `963`_)
- Add .get_file() to Audio, Document, PhotoSize, Sticker, Video, VideoNote and Voice (PR `963`_)
- Add .send_*() methods to User and Chat (PR `963`_)
- Get jobs by name (PR `1011`_)
- Add Message caption html/markdown methods (PR `1013`_)
- File.download_as_bytearray - new method to get a d/led file as bytearray (PR `1019`_)
- File.download(): Now returns a meaningful return value (PR `1019`_)
- Added conversation timeout in ConversationHandler (PR `895`_)

Changes

- Store bot in PreCheckoutQuery (PR `953`_)
- Updater: Issue INFO log upon received signal (PR `951`_)
- JobQueue: Thread safety fixes (PR `977`_)
- WebhookHandler: Fix exception thrown during error handling (PR `985`_)
- Explicitly check update.effective_chat in ConversationHandler.check_update (PR `959`_)
- Updater: Better handling of timeouts during get_updates (PR `1007`_)
- Remove unnecessary to_dict() (PR `834`_)
- CommandHandler - ignore strings in entities and "/" followed by whitespace (PR `1020`_)
- Documentation & style fixes (PR `942`_, PR `956`_, PR `962`_, PR `980`_, PR `983`_)

.. _`826`: https://github.com/python-telegram-bot/python-telegram-bot/pull/826
.. _`827`: https://github.com/python-telegram-bot/python-telegram-bot/pull/827
.. _`834`: https://github.com/python-telegram-bot/python-telegram-bot/pull/834
.. _`895`: https://github.com/python-telegram-bot/python-telegram-bot/pull/895
.. _`942`: https://github.com/python-telegram-bot/python-telegram-bot/pull/942
.. _`949`: https://github.com/python-telegram-bot/python-telegram-bot/pull/949
.. _`951`: https://github.com/python-telegram-bot/python-telegram-bot/pull/951
.. _`956`: https://github.com/python-telegram-bot/python-telegram-bot/pull/956
.. _`953`: https://github.com/python-telegram-bot/python-telegram-bot/pull/953
.. _`962`: https://github.com/python-telegram-bot/python-telegram-bot/pull/962
.. _`959`: https://github.com/python-telegram-bot/python-telegram-bot/pull/959
.. _`963`: https://github.com/python-telegram-bot/python-telegram-bot/pull/963
.. _`977`: https://github.com/python-telegram-bot/python-telegram-bot/pull/977
.. _`980`: https://github.com/python-telegram-bot/python-telegram-bot/pull/980
.. _`983`: https://github.com/python-telegram-bot/python-telegram-bot/pull/983
.. _`985`: https://github.com/python-telegram-bot/python-telegram-bot/pull/985
.. _`986`: https://github.com/python-telegram-bot/python-telegram-bot/pull/986
.. _`994`: https://github.com/python-telegram-bot/python-telegram-bot/pull/994
.. _`1006`: https://github.com/python-telegram-bot/python-telegram-bot/pull/1006
.. _`1007`: https://github.com/python-telegram-bot/python-telegram-bot/pull/1007
.. _`1011`: https://github.com/python-telegram-bot/python-telegram-bot/pull/1011
.. _`1012`: https://github.com/python-telegram-bot/python-telegram-bot/pull/1012
.. _`1013`: https://github.com/python-telegram-bot/python-telegram-bot/pull/1013
.. _`1018`: https://github.com/python-telegram-bot/python-telegram-bot/pull/1018
.. _`1019`: https://github.com/python-telegram-bot/python-telegram-bot/pull/1019
.. _`1020`: https://github.com/python-telegram-bot/python-telegram-bot/pull/1020

**2017-12-08**

9.0.0

Breaking changes (possibly)

- Drop support for python 3.3 (PR `930`_)


New Features

- Support Bot API 3.5 (PR `920`_)


Changes

- Fix race condition in dispatcher start/stop (`887`_)
- Log error trace if there is no error handler registered (`694`_)
- Update examples with consistent string formatting (`870`_)
- Various changes and improvements to the docs.

.. _`920`: https://github.com/python-telegram-bot/python-telegram-bot/pull/920
.. _`930`: https://github.com/python-telegram-bot/python-telegram-bot/pull/930
.. _`887`: https://github.com/python-telegram-bot/python-telegram-bot/pull/887
.. _`694`: https://github.com/python-telegram-bot/python-telegram-bot/pull/694
.. _`870`: https://github.com/python-telegram-bot/python-telegram-bot/pull/870

**2017-10-15**

8.1.1

- Fix Commandhandler crashing on single character messages (PR `873`_).

.. _`873`: https://github.com/python-telegram-bot/python-telegram-bot/pull/871

**2017-10-14**

8.1.0

New features
- Support Bot API 3.4 (PR `865`_).

Changes
- MessageHandler & RegexHandler now consider channel_updates.
- Fix command not recognized if it is directly followed by a newline (PR `869`_).
- Removed Bot._message_wrapper (PR `822`_).
- Unitests are now also running on AppVeyor (Windows VM).
- Various unitest improvements.
- Documentation fixes.

.. _`822`: https://github.com/python-telegram-bot/python-telegram-bot/pull/822
.. _`865`: https://github.com/python-telegram-bot/python-telegram-bot/pull/865
.. _`869`: https://github.com/python-telegram-bot/python-telegram-bot/pull/869

**2017-09-01**

8.0.0

New features

- Fully support Bot Api 3.3 (PR `806`_).
- DispatcherHandlerStop (`see docs`_).
- Regression fix for text_html & text_markdown (PR `777`_).
- Added effective_attachment to message (PR `766`_).

Non backward compatible changes

- Removed Botan support from the library  (PR `776`_).
- Fully support Bot Api 3.3 (PR `806`_).
- Remove de_json() (PR `789`_).

Changes

- Sane defaults for tcp socket options on linux (PR `754`_).
- Add RESTRICTED as constant to ChatMember (PR `761`_).
- Add rich comparison to CallbackQuery (PR `764`_).
- Fix get_game_high_scores (PR `771`_).
- Warn on small con_pool_size during custom initalization of Updater (PR `793`_).
- Catch exceptions in error handlerfor errors that happen during polling (PR `810`_).
- For testing we switched to pytest (PR `788`_).
- Lots of small improvements to our tests and documentation.


.. _`see docs`: http://python-telegram-bot.readthedocs.io/en/stable/telegram.ext.dispatcher.htmltelegram.ext.Dispatcher.add_handler
.. _`777`: https://github.com/python-telegram-bot/python-telegram-bot/pull/777
.. _`806`: https://github.com/python-telegram-bot/python-telegram-bot/pull/806
.. _`766`: https://github.com/python-telegram-bot/python-telegram-bot/pull/766
.. _`776`: https://github.com/python-telegram-bot/python-telegram-bot/pull/776
.. _`789`: https://github.com/python-telegram-bot/python-telegram-bot/pull/789
.. _`754`: https://github.com/python-telegram-bot/python-telegram-bot/pull/754
.. _`761`: https://github.com/python-telegram-bot/python-telegram-bot/pull/761
.. _`764`: https://github.com/python-telegram-bot/python-telegram-bot/pull/764
.. _`771`: https://github.com/python-telegram-bot/python-telegram-bot/pull/771
.. _`788`: https://github.com/python-telegram-bot/python-telegram-bot/pull/788
.. _`793`: https://github.com/python-telegram-bot/python-telegram-bot/pull/793
.. _`810`: https://github.com/python-telegram-bot/python-telegram-bot/pull/810

**2017-07-28**

7.0.1

- Fix TypeError exception in RegexHandler (PR 751).
- Small documentation fix (PR 749).

**2017-07-25**

7.0.0

- Fully support Bot API 3.2.
- New filters for handling messages from specific chat/user id (PR 677).
- Add the possibility to add objects as arguments to send_* methods (PR 742).
- Fixed download of URLs with UTF-8 chars in path (PR 688).
- Fixed URL parsing for ``Message`` text properties (PR 689).
- Fixed args dispatching in ``MessageQueue``'s decorator (PR 705).
- Fixed regression preventing IPv6 only hosts from connnecting to Telegram servers (Issue 720).
- ConvesationHandler - check if a user exist before using it (PR 699).
- Removed deprecated ``telegram.Emoji``.
- Removed deprecated ``Botan`` import from ``utils`` (``Botan`` is still available through ``contrib``).
- Removed deprecated ``ReplyKeyboardHide``.
- Removed deprecated ``edit_message`` argument of ``bot.set_game_score``.
- Internal restructure of files.
- Improved documentation.
- Improved unitests.

**2017-06-18**

6.1.0

- Fully support Bot API 3.0
- Add more fine-grained filters for status updates
- Bug fixes and other improvements

**2017-05-29**

6.0.3

- Faulty PyPI release

**2017-05-29**

6.0.2

- Avoid confusion with user's ``urllib3`` by renaming vendored ``urllib3`` to ``ptb_urllib3``

**2017-05-19**

6.0.1

- Add support for ``User.language_code``
- Fix ``Message.text_html`` and ``Message.text_markdown`` for messages with emoji

**2017-05-19**

6.0.0

- Add support for Bot API 2.3.1
- Add support for ``deleteMessage`` API method
- New, simpler API for ``JobQueue`` - https://github.com/python-telegram-bot/python-telegram-bot/pull/484
- Download files into file-like objects - https://github.com/python-telegram-bot/python-telegram-bot/pull/459
- Use vendor ``urllib3`` to address issues with timeouts
- The default timeout for messages is now 5 seconds. For sending media, the default timeout is now 20 seconds.
- String attributes that are not set are now ``None`` by default, instead of empty strings
- Add ``text_markdown`` and ``text_html`` properties to ``Message`` - https://github.com/python-telegram-bot/python-telegram-bot/pull/507
- Add support for Socks5 proxy - https://github.com/python-telegram-bot/python-telegram-bot/pull/518
- Add support for filters in ``CommandHandler`` - https://github.com/python-telegram-bot/python-telegram-bot/pull/536
- Add the ability to invert (not) filters - https://github.com/python-telegram-bot/python-telegram-bot/pull/552
- Add ``Filters.group`` and ``Filters.private``
- Compatibility with GAE via ``urllib3.contrib`` package - https://github.com/python-telegram-bot/python-telegram-bot/pull/583
- Add equality rich comparision operators to telegram objects - https://github.com/python-telegram-bot/python-telegram-bot/pull/604
- Several bugfixes and other improvements
- Remove some deprecated code

**2017-04-17**

5.3.1

- Hotfix release due to bug introduced by urllib3 version 1.21

**2016-12-11**

5.3

- Implement API changes of November 21st (Bot API 2.3)
- ``JobQueue`` now supports ``datetime.timedelta`` in addition to seconds
- ``JobQueue`` now supports running jobs only on certain days
- New ``Filters.reply`` filter
- Bugfix for ``Message.edit_reply_markup``
- Other bugfixes

**2016-10-25**

5.2

- Implement API changes of October 3rd (games update)
- Add ``Message.edit_*`` methods
- Filters for the ``MessageHandler`` can now be combined using bitwise operators (``& and |``)
- Add a way to save user- and chat-related data temporarily
- Other bugfixes and improvements

**2016-09-24**

5.1

- Drop Python 2.6 support
- Deprecate ``telegram.Emoji``

- Use ``ujson`` if available
- Add instance methods to ``Message``, ``Chat``, ``User``, ``InlineQuery`` and ``CallbackQuery``
- RegEx filtering for ``CallbackQueryHandler`` and ``InlineQueryHandler``
- New ``MessageHandler`` filters: ``forwarded`` and ``entity``
- Add ``Message.get_entity`` to correctly handle UTF-16 codepoints and ``MessageEntity`` offsets
- Fix bug in ``ConversationHandler`` when first handler ends the conversation
- Allow multiple ``Dispatcher`` instances
- Add ``ChatMigrated`` Exception
- Properly split and handle arguments in ``CommandHandler``

**2016-07-15**

5.0

- Rework ``JobQueue``
- Introduce ``ConversationHandler``
- Introduce ``telegram.constants`` - https://github.com/python-telegram-bot/python-telegram-bot/pull/342

**2016-07-12**

4.3.4

- Fix proxy support with ``urllib3`` when proxy requires auth

**2016-07-08**

4.3.3

- Fix proxy support with ``urllib3``

**2016-07-04**

4.3.2

- Fix: Use ``timeout`` parameter in all API methods

**2016-06-29**

4.3.1

- Update wrong requirement: ``urllib3>=1.10``

**2016-06-28**

4.3

- Use ``urllib3.PoolManager`` for connection re-use
- Rewrite ``run_async`` decorator to re-use threads
- New requirements: ``urllib3`` and ``certifi``

**2016-06-10**

4.2.1

- Fix ``CallbackQuery.to_dict()`` bug (thanks to jlmadurga)
- Fix ``editMessageText`` exception when receiving a ``CallbackQuery``

**2016-05-28**

4.2

- Implement Bot API 2.1
- Move ``botan`` module to ``telegram.contrib``
- New exception type: ``BadRequest``

**2016-05-22**

4.1.2

- Fix ``MessageEntity`` decoding with Bot API 2.1 changes

**2016-05-16**

4.1.1

- Fix deprecation warning in ``Dispatcher``

**2016-05-15**

4.1

- Implement API changes from May 6, 2016
- Fix bug when ``start_polling`` with ``clean=True``
- Methods now have snake_case equivalent, for example ``telegram.Bot.send_message`` is the same as ``telegram.Bot.sendMessage``

**2016-05-01**

4.0.3

- Add missing attribute ``location`` to ``InlineQuery``

**2016-04-29**

4.0.2

- Bugfixes
- ``KeyboardReplyMarkup`` now accepts ``str`` again

**2016-04-27**

4.0.1

- Implement Bot API 2.0
- Almost complete recode of ``Dispatcher``
- Please read the `Transition Guide to 4.0 <https://github.com/python-telegram-bot/python-telegram-bot/wiki/Transition-guide-to-Version-4.0>`_
- **Changes from 4.0rc1**
 - The syntax of filters for ``MessageHandler`` (upper/lower cases)
 - Handler groups are now identified by ``int`` only, and ordered
- **Note:** v4.0 has been skipped due to a PyPI accident

**2016-04-22**

4.0rc1

- Implement Bot API 2.0
- Almost complete recode of ``Dispatcher``
- Please read the `Transistion Guide to 4.0 <https://github.com/python-telegram-bot/python-telegram-bot/wiki/Transistion-guide-to-Version-4.0>`_

**2016-03-22**

3.4

- Move ``Updater``, ``Dispatcher`` and ``JobQueue`` to new ``telegram.ext`` submodule (thanks to rahiel)
- Add ``disable_notification`` parameter (thanks to aidarbiktimirov)
- Fix bug where commands sent by Telegram Web would not be recognized (thanks to shelomentsevd)
- Add option to skip old updates on bot startup
- Send files from ``BufferedReader``

**2016-02-28**

3.3

- Inline bots
- Send any file by URL
- Specialized exceptions: ``Unauthorized``, ``InvalidToken``, ``NetworkError`` and ``TimedOut``
- Integration for botan.io (thanks to ollmer)
- HTML Parsemode (thanks to jlmadurga)
- Bugfixes and under-the-hood improvements

**Very special thanks to Noam Meltzer (tsnoam) for all of his work!**

**2016-01-09**

3.3b1

- Implement inline bots (beta)

**2016-01-05**

3.2.0

- Introducing ``JobQueue`` (original author: franciscod)
- Streamlining all exceptions to ``TelegramError`` (Special thanks to tsnoam)
- Proper locking of ``Updater`` and ``Dispatcher`` ``start`` and ``stop`` methods
- Small bugfixes

**2015-12-29**

3.1.2

- Fix custom path for file downloads
- Don't stop the dispatcher thread on uncaught errors in handlers

**2015-12-21**

3.1.1

- Fix a bug where asynchronous handlers could not have additional arguments
- Add ``groups`` and ``groupdict`` as additional arguments for regex-based handlers

**2015-12-16**

3.1.0

- The ``chat``-field in ``Message`` is now of type ``Chat``. (API update Oct 8 2015)
- ``Message`` now contains the optional fields ``supergroup_chat_created``, ``migrate_to_chat_id``, ``migrate_from_chat_id`` and ``channel_chat_created``. (API update Nov 2015)

**2015-12-08**

3.0.0

- Introducing the ``Updater`` and ``Dispatcher`` classes

**2015-11-11**

2.9.2

- Error handling on request timeouts has been improved

**2015-11-10**

2.9.1

- Add parameter ``network_delay`` to Bot.getUpdates for slow connections

**2015-11-10**

2.9

- Emoji class now uses ``bytes_to_native_str`` from ``future`` 3rd party lib
- Make ``user_from`` optional to work with channels
- Raise exception if Telegram times out on long-polling

*Special thanks to jh0ker for all hard work*


**2015-10-08**

2.8.7

- Type as optional for ``GroupChat`` class


**2015-10-08**

2.8.6

- Adds type to ``User`` and ``GroupChat`` classes (pre-release Telegram feature)


**2015-09-24**

2.8.5

- Handles HTTP Bad Gateway (503) errors on request
- Fixes regression on ``Audio`` and ``Document`` for unicode fields


**2015-09-20**

2.8.4

- ``getFile`` and ``File.download`` is now fully supported


**2015-09-10**

2.8.3

- Moved ``Bot._requestURL`` to its own class (``telegram.utils.request``)
- Much better, such wow, Telegram Objects tests
- Add consistency for ``str`` properties on Telegram Objects
- Better design to test if ``chat_id`` is invalid
- Add ability to set custom filename on ``Bot.sendDocument(..,filename='')``
- Fix Sticker as ``InputFile``
- Send JSON requests over urlencoded post data
- Markdown support for ``Bot.sendMessage(..., parse_mode=ParseMode.MARKDOWN)``
- Refactor of ``TelegramError`` class (no more handling ``IOError`` or ``URLError``)


**2015-09-05**

2.8.2

- Fix regression on Telegram ReplyMarkup
- Add certificate to ``is_inputfile`` method


**2015-09-05**

2.8.1

- Fix regression on Telegram objects with thumb properties


**2015-09-04**

2.8

- TelegramError when ``chat_id`` is empty for send* methods
- ``setWebhook`` now supports sending self-signed certificate
- Huge redesign of existing Telegram classes
- Added support for PyPy
- Added docstring for existing classes


**2015-08-19**

2.7.1

- Fixed JSON serialization for ``message``


**2015-08-17**

2.7

- Added support for ``Voice`` object and ``sendVoice`` method
- Due backward compatibility performer or/and title will be required for ``sendAudio``
- Fixed JSON serialization when forwarded message


**2015-08-15**

2.6.1

- Fixed parsing image header issue on < Python 2.7.3


**2015-08-14**

2.6.0

- Depreciation of ``require_authentication`` and ``clearCredentials`` methods
- Giving ``AUTHORS`` the proper credits for their contribution for this project
- ``Message.date`` and ``Message.forward_date`` are now ``datetime`` objects


**2015-08-12**

2.5.3

- ``telegram.Bot`` now supports to be unpickled


**2015-08-11**

2.5.2

- New changes from Telegram Bot API have been applied
- ``telegram.Bot`` now supports to be pickled
- Return empty ``str`` instead ``None`` when ``message.text`` is empty


**2015-08-10**

2.5.1

- Moved from GPLv2 to LGPLv3


**2015-08-09**

2.5

- Fixes logging calls in API


**2015-08-08**

2.4

- Fixes ``Emoji`` class for Python 3
- ``PEP8`` improvements


**2015-08-08**

2.3

- Fixes ``ForceReply`` class
- Remove ``logging.basicConfig`` from library


**2015-07-25**

2.2

- Allows ``debug=True`` when initializing ``telegram.Bot``


**2015-07-20**

2.1

- Fix ``to_dict`` for ``Document`` and ``Video``


**2015-07-19**

2.0

- Fixes bugs
- Improves ``__str__`` over ``to_json()``
- Creates abstract class ``TelegramObject``


**2015-07-15**

1.9

- Python 3 officially supported
- ``PEP8`` improvements


**2015-07-12**

1.8

- Fixes crash when replying an unicode text message (special thanks to JRoot3D)


**2015-07-11**

1.7

- Fixes crash when ``username`` is not defined on ``chat`` (special thanks to JRoot3D)


**2015-07-10**

1.6

- Improvements for GAE support


**2015-07-10**

1.5

- Fixes randomly unicode issues when using ``InputFile``


**2015-07-10**

1.4

- ``requests`` lib is no longer required
- Google App Engine (GAE) is supported


**2015-07-10**

1.3

- Added support to ``setWebhook`` (special thanks to macrojames)


**2015-07-09**

1.2

- ``CustomKeyboard`` classes now available
- Emojis available
- ``PEP8`` improvements


**2015-07-08**

1.1

- PyPi package now available


**2015-07-08**

1.0

- Initial checkin of python-telegram-bot
Links

Update requests from 2.16.5 to 2.19.1.

Changelog

2.19.1

+++++++++++++++++++

**Bugfixes**

- Fixed issue where status_codes.py's ``init`` function failed trying to append to
a ``__doc__`` value of ``None``.

2.19.0

+++++++++++++++++++

**Improvements**

- Warn user about possible slowdown when using cryptography version < 1.3.4
- Check for invalid host in proxy URL, before forwarding request to adapter.
- Fragments are now properly maintained across redirects. (RFC7231 7.1.2)
- Removed use of cgi module to expedite library load time.
- Added support for SHA-256 and SHA-512 digest auth algorithms.
- Minor performance improvement to ``Request.content``.
- Migrate to using collections.abc for 3.7 compatibility.

**Bugfixes**

- Parsing empty ``Link`` headers with ``parse_header_links()`` no longer return one bogus entry.
- Fixed issue where loading the default certificate bundle from a zip archive
would raise an ``IOError``.
- Fixed issue with unexpected ``ImportError`` on windows system which do not support ``winreg`` module.
- DNS resolution in proxy bypass no longer includes the username and password in
the request. This also fixes the issue of DNS queries failing on macOS.
- Properly normalize adapter prefixes for url comparison.
- Passing ``None`` as a file pointer to the ``files`` param no longer raises an exception.
- Calling ``copy`` on a ``RequestsCookieJar`` will now preserve the cookie policy correctly.

**Dependencies**

- We now support idna v2.7.
- We now support urllib3 v1.23.

2.18.4

+++++++++++++++++++

**Improvements**

- Error messages for invalid headers now include the header name for easier debugging

**Dependencies**

- We now support idna v2.6.

2.18.3

+++++++++++++++++++

**Improvements**

- Running ``$ python -m requests.help`` now includes the installed version of idna.

**Bugfixes**

- Fixed issue where Requests would raise ``ConnectionError`` instead of
``SSLError`` when encountering SSL problems when using urllib3 v1.22.

2.18.2

+++++++++++++++++++

**Bugfixes**

- ``requests.help`` no longer fails on Python 2.6 due to the absence of
``ssl.OPENSSL_VERSION_NUMBER``.

**Dependencies**

- We now support urllib3 v1.22.

2.18.1

+++++++++++++++++++

**Bugfixes**

- Fix an error in the packaging whereby the ``*.whl`` contained incorrect data
that regressed the fix in v2.17.3.

2.18.0

+++++++++++++++++++

**Improvements**

- ``Response`` is now a context manager, so can be used directly in a ``with`` statement
without first having to be wrapped by ``contextlib.closing()``.

**Bugfixes**

- Resolve installation failure if multiprocessing is not available
- Resolve tests crash if multiprocessing is not able to determine the number of CPU cores
- Resolve error swallowing in utils set_environ generator

2.17.3

+++++++++++++++++++

**Improvements**

- Improved ``packages`` namespace identity support, for monkeypatching libraries.

2.17.2

+++++++++++++++++++

**Improvements**

- Improved ``packages`` namespace identity support, for monkeypatching libraries.

2.17.1

+++++++++++++++++++

**Improvements**

- Improved ``packages`` namespace identity support, for monkeypatching libraries.

2.17.0

+++++++++++++++++++

**Improvements**

- Removal of the 301 redirect cache. This improves thread-safety.
Links

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant