Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Initial Update #49

Closed
wants to merge 10 commits into from
Closed

Initial Update #49

wants to merge 10 commits into from

Conversation

pyup-bot
Copy link
Contributor

This is my first visit to this fine repo so I have bundled all updates in a single pull request to make things easier for you to merge.

Close this pull request and delete the branch if you want me to start with single pull requests right away

Here's the executive summary:

Updates

Here's a list of all the updates bundled in this pull request. I've added some links to make it easier for you to find all the information you need.

gevent 1.0.2 » 1.2.2 PyPI | Changelog | Homepage
gunicorn 19.3.0 » 19.7.1 PyPI | Changelog | Homepage
boto 2.38.0 » 2.48.0 PyPI | Changelog | Repo
django-storages-redux 1.3.0 » 1.3.3 PyPI | Changelog | Repo
Collectfast 0.2.3 » 0.5.2 PyPI | Changelog | Repo
django-mailgun 0.8.0 » 0.9.1 PyPI | Repo
django-redis-cache 1.6.3 » 1.7.1 PyPI | Repo
newrelic 2.56.0.42 » 2.90.0.75 PyPI | Changelog | Homepage | Bugtracker
reportlab 3.2.0 » 3.4.0 PyPI | Homepage
factory_boy 2.5.2 » 2.9.2 PyPI | Changelog | Repo

Changelogs

gevent 1.0.2 -> 1.2.2

1.2.2

==================

  • Testing on Python 3.5 now uses Python 3.5.3 due to SSL changes. See
    :issue:943.
  • Linux CI has been updated from Ubuntu 12.04 to Ubuntu 14.04 since
    the former has reached EOL.
  • Linux CI now tests on PyPy2 5.7.1, updated from PyPy2 5.6.0.
  • Linux CI now tests on PyPy3 3.5-5.7.1-beta, updated from PyPy3
    3.3-5.5-alpha.
  • Python 2 sockets are compatible with the SOCK_CLOEXEC flag found
    on Linux. They no longer pass the socket type or protocol to
    getaddrinfo when connect is called. Reported in :issue:944
    by Bernie Hackett.
  • Replace optparse module with argparse. See :issue:947.
  • Update to version 1.3.1 of tblib to fix :issue:954,
    reported by ml31415.
  • Fix the name of the type parameter to
    :func:gevent.socket.getaddrinfo to be correct on Python 3. This
    would cause callers using keyword arguments to raise a :exc:TypeError.
    Reported in :issue:960 by js6626069. Likewise, correct the
    argument names for fromfd and socketpair on Python 2,
    although they cannot be called with keyword arguments under CPython.

.. note:: The gethost* functions take different argument names
under CPython and PyPy. gevent follows the CPython
convention, although these functions cannot be called with
keyword arguments on CPython.

  • The previously-singleton exception objects FileObjectClosed and
    cancel_wait_ex were converted to classes. On Python 3, an
    exception object is stateful, including references to its context
    and possibly traceback, which could lead to objects remaining alive
    longer than intended.
  • Make sure that python -m gevent.monkey <script> runs code in the
    global scope, not the scope of the main function. Fixed in
    :pr:975 by Shawn Bohrer.

1.2.1

==================

  • CI services now test on 3.6.0.
  • Windows: Provide socket.socketpair for all Python 3 versions.
    This was added to Python 3.5, but tests were only added in 3.6.
    (For versions older than 3.4 this is a gevent extension.) Previously
    this was not supported on any Python 3 version.
  • Windows: List subprocess.STARTUPINFO in subprocess.__all__
    for 3.6 compatibility.
  • The _DummyThread objects created by calling
    :func:threading.current_thread from inside a raw
    :class:greenlet.greenlet in a system with monkey-patched
    threading now clean up after themselves when the
    greenlet dies (:class:gevent.Greenlet-based _DummyThreads have
    always cleaned up). This requires the use of a :class:weakref.ref
    (and may not be timely on PyPy).
    Reported in :issue:918 by frozenoctobeer.
  • Build OS X wheels with -D_DARWIN_FEATURE_CLOCK_GETTIME=0 for
    compatibility with OS X releases before 10.12 Sierra. Reported by
    Ned Batchelder in :issue:916.

1.2.0

==================

  • The c-ares DNS resolver ignores bad flags to getnameinfo, like the
    system resolver does. Discovered when cleaning up the DNS resolver
    tests to produce more reliable results. See :issue:774.

1.2a2

===================

  • Update libev to version 4.23.
  • Allow the MAKE environment variable to specify the make command
    on non-Windows systems for ease of development on BSD systems where
    make is BSD make and gmake is GNU make (gevent requires GNU
    make). See :issue:888.
  • Let :class:gevent.server.StreamServer accept an SSLContext on
    Python versions that support it. Added in :pr:904 by Arcadiy Ivanov.

1.2a1

====================

Incompatible Changes

  • Support for Python 2.6 has been removed. See :pr:766.
  • Remove module gevent.coros which was replaced by gevent.lock
    and has been deprecated since 1.0b2.
  • The internal implementation modules gevent.corecext and
    gevent.corecffi have been moved. Please import from
    gevent.core instead; this has always been the only documented place to
    import from.

Libraries and Installation

  • Update libev to version 4.22 (was 4.20).
  • Update tblib to 1.3.0.
  • Update Cython to 0.25 (was 0.23.5).
  • Update c-ares to version 1.12.0 (was 1.10.0) (release notes <https://c-ares.haxx.se/changelog.html>_).
  • For the benefit of downstream package maintainers, gevent is now
    tested with c-ares and libev linked dynamically and not embedded
    (i.e., using the system libraries). However, only the versions
    shipped with gevent are tested and known to work.
  • The repository directory layout has been changed to make it easier
    to include third-party dependencies. Likewise, the setup.py script
    has been split to make it easier to build third-party dependencies.
  • PyPy/CFFI: The corecffi native extension is now only built at
    installation time. Previously, if it wasn't available, a build was
    attempted at every import. This could lead to scattered "gevent"
    directories and undependable results.
  • setuptools is now required at build time on all platforms.
    Previously it was only required for Windows and PyPy.
  • POSIX: Don't hardcode /bin/sh into the configuration command
    line, instead relying on sh being on the PATH, as
    recommended by the standard <http://pubs.opengroup.org/onlinepubs/9699919799/utilities/sh.html>_.
    Fixed in :pr:809 by Fredrix Fornwall.

Security

  • :mod:gevent.pywsgi now checks that the values passed to
    start_response do not contain a carriage return or newline in
    order to prevent HTTP response splitting (header injection), raising
    a :exc:ValueError if they do. See :issue:775.
  • Incoming headers containing an underscore are no longer placed in
    the WSGI environ. See :issue:819.
  • Errors logged by :class:~gevent.pywsgi.WSGIHandler no
    longer print the entire WSGI environment by default. This avoids
    possible information disclosure vulnerabilities. Applications can
    also opt-in to a higher security level for the WSGI environment if they
    choose and their frameworks support it. Originally reported
    in :pr:779 by sean-peters-au and changed in :pr:781.

Platforms

  • As mentioned above, Python 2.6 is no longer supported.
  • Python 3.6 is now tested on POSIX platforms. This includes a few
    notable changes:
  • SSLContext.wrap_socket accepts the session parameter, though
    this parameter isn't useful prior to 3.6.
  • SSLSocket.recv(0) or read(0) returns an empty byte string. This is
    a fix for Python bug 23804 <http://bugs.python.org/issue23804>_
    which has also been merged into Python 2.7 and Python 3.5.
  • PyPy3 5.5.0 alpha (supporting Python 3.3.5) is now tested and passes the
    test suite. Thanks to btegs for :issue:866, and Fabio Utzig for :pr:826.
    Note that PyPy3 is not optimized for performance either by the PyPy
    developers or under gevent, so it may be significantly slower than PyPy2.

Stdlib Compatibility

  • The modules :mod:gevent.os, :mod:gevent.signal and
    :mod:gevent.select export all the attributes from their
    corresponding standard library counterpart.
  • Python 2: reload(site) no longer fails with a TypeError if
    gevent has been imported. Reported in :issue:805 by Jake Hilton.
  • Python 2: sendall on a non-blocking socket could spuriously fail
    with a timeout.

select/poll

  • If :func:gevent.select.select is given a negative timeout
    argument, raise an exception like the standard library does.
  • If :func:gevent.select.select is given closed or invalid
    file descriptors in any of its lists, raise the appropriate
    EBADF exception like the standard library does. Previously,
    libev would tend to return the descriptor as ready. In the worst
    case, this adds an extra system call, but may also reduce latency if
    descriptors are ready at the time of entry.
  • :class:selectors.SelectSelector is properly monkey-patched
    regardless of the order of imports. Reported in :issue:835 by
    Przemysław Węgrzyn.
  • :meth:gevent.select.poll.unregister raises an exception if fd is not
    registered, like the standard library.
  • :meth:gevent.select.poll.poll returns an event with
    POLLNVAL for registered fds that are invalid. Previously it
    would tend to report both read and write events.

File objects

  • FileObjectPosix exposes the read1 method when in read mode,
    and generally only exposes methods appropriate to the mode it is in.
  • FileObjectPosix supports a bufsize of 0 in binary write modes.
    Reported in :issue:840 by Mike Lang.
  • Python 3: :meth:gevent.socket.connect_ex was letting
    BlockingIOError (and possibly others) get raised instead of
    returning the errno due to the refactoring of the exception
    hierarchy in Python 3.3. Now the errno is returned. Reported in
    :issue:841 by Dana Powers.

Other Changes

  • :class:~.Group and :class:~.Pool now return whether
    :meth:~.Group.join returned with an empty group. Suggested by Filippo Sironi in
    :pr:503.
  • Unhandled exception reports that kill a greenlet now include a
    timestamp. See :issue:137.
  • :class:~.PriorityQueue now ensures that an initial items list is a
    valid heap. Fixed in :pr:793 by X.C.Dong.
  • :class:gevent.hub.signal (aka :func:gevent.signal) now verifies
    that its handler argument is callable, raising a :exc:TypeError
    if it isn't. Reported in :issue:818 by Peter Renström.
  • If sys.stderr has been monkey-patched (not recommended),
    exceptions that the hub reports aren't lost and can still be caught.
    Reported in :issue:825 by Jelle Smet.
  • The :func:gevent.os.waitpid function is cooperative in more
    circumstances. Reported in :issue:878 by Heungsub Lee.
  • The various FileObject implementations are more consistent with
    each other. Note: Writing to the io property of a FileObject should be
    considered deprecated.
  • Timeout exceptions (and other asynchronous exceptions) could cause
    the BackdoorServer to fail to properly manage the
    stdout/stderr/stdin values. Reported with a patch in :pr:874 by
    stefanmh.
  • The BackDoorServer now tracks spawned greenlets (connections) and
    kills them in its stop method.

Servers

- Default to AF_INET6 when binding to all addresses (e.g.,
 ""). This supports both IPv4 and IPv6 connections (except on
 Windows). Original change in :pr:`495` by Felix Kaiser.
- pywsgi/performance: Chunks of data the application returns are no longer copied
 before being sent to the socket when the transfer-encoding is
 chunked, potentially reducing overhead for large responses.

Threads

- Add :class:`gevent.threadpool.ThreadPoolExecutor` (a
 :class:`concurrent.futures.ThreadPoolExecutor` variant that always
 uses native threads even when the system has been monkey-patched)
 on platforms that have ``concurrent.futures``
 available (Python 3 and Python 2 with the ``futures`` backport
 installed). This is helpful for, e.g., grpc. Reported in
 :issue:`786` by Markus Padourek.
- Native threads created before monkey-patching threading can now be
 joined. Previously on Python < 3.4, doing so would raise a
 ``LoopExit`` error. Reported in :issue:`747` by Sergey Vasilyev.

SSL

- On Python 2.7.9 and above (more generally, when the SSL backport is
 present in Python 2), :func:`gevent.ssl.get_server_certificate`
 would raise a :exc:`ValueError` if the system wasn't monkey-patched.
 Reported in :issue:`801` by Gleb Dubovik.
- On Python 2.7.9 and Python 3, closing an SSL socket in one greenlet
 while it's being read from or written to in a different greenlet is
 less likely to raise a :exc:`TypeError` instead of a
 :exc:`ValueError`. Reported in :issue:`800` by Kevin Chen.

subprocess module

  • Setting SIGCHLD to SIG_IGN or SIG_DFL after :mod:gevent.subprocess
    had been used previously could not be reversed, causing
    Popen.wait and other calls to hang. Now, if SIGCHLD has been
    ignored, the next time :mod:gevent.subprocess is used this will be
    detected and corrected automatically. (This potentially leads to
    issues with :func:os.popen on Python 2, but the signal can always
    be reset again. Mixing the low-level process handling calls,
    low-level signal management and high-level use of
    :mod:gevent.subprocess is tricky.) Reported in :issue:857 by
    Chris Utz.
  • Popen.kill and send_signal no longer attempt to send signals
    to processes that are known to be exited.

Several backwards compatible updates to the subprocess module have
been backported from Python 3 to Python 2, making
:mod:gevent.subprocess smaller, easier to maintain and in some cases
safer.

  • Popen objects can be used as context managers even on Python 2. The
    high-level API functions (call, etc) use this for added safety.
  • The :mod:gevent.subprocess module now provides the
    :func:gevent.subprocess.run function in a cooperative way even
    when the system is not monkey patched, on all supported versions of
    Python. (It was added officially in Python 3.5.)
  • Popen objects save their args attribute even on Python 2.
  • :exc:gevent.subprocess.TimeoutExpired is defined even on Python 2,
    where it is a subclass of the :exc:gevent.timeout.Timeout
    exception; all instances where a Timeout exception would
    previously be thrown under Python 2 will now throw a
    TimeoutExpired exception.
  • :func:gevent.subprocess.call (and check_call) accepts the
    timeout keyword argument on Python 2. This is standard on Python
    3, but a gevent extension on Python 2.
  • :func:gevent.subprocess.check_output accepts the timeout and
    input arguments on Python 2. This is standard on Python 3, but a
    gevent extension on Python 2.

1.1.2

====================

  • Python 2: sendall on a non-blocking socket could spuriously fail
    with a timeout.
  • If sys.stderr has been monkey-patched (not recommended),
    exceptions that the hub reports aren't lost and can still be caught.
    Reported in :issue:825 by Jelle Smet.
  • :class:selectors.SelectSelector is properly monkey-patched
    regardless of the order of imports. Reported in :issue:835 by
    Przemysław Węgrzyn.
  • Python 2: reload(site) no longer fails with a TypeError if
    gevent has been imported. Reported in :issue:805 by Jake Hilton.

1.1.1

===================

  • Nested callbacks that set and clear an Event no longer cause
    wait to return prematurely. Reported in :issue:771 by Sergey
    Vasilyev.
  • Fix build on Solaris 10. Reported in :issue:777 by wiggin15.
  • The ref parameter to :func:gevent.os.fork_and_watch was being ignored.
  • Python 3: :class:gevent.queue.Channel is now correctly iterable, instead of
    raising a :exc:TypeError.
  • Python 3: Add support for :meth:socket.socket.sendmsg,
    :meth:socket.socket.recvmsg and :meth:socket.socket.recvmsg_into
    on platforms where they are defined. Initial :pr:773 by Jakub
    Klama.

1.1.0

===================

  • Python 3: A monkey-patched :class:threading.RLock now properly
    blocks (or deadlocks) in acquire if the default value for
    timeout of -1 is used (which differs from gevent's default of
    None). The acquire method also raises the same :exc:ValueError
    exceptions that the standard library does for invalid parameters.
    Reported in :issue:750 by Joy Zheng.
  • Fix a race condition in :class:~gevent.event.Event that made it
    return False when the event was set and cleared by the same
    greenlet before allowing a switch to already waiting greenlets. (Found
    by the 3.4 and 3.5 standard library test suites; the same as Python
    bug 13502_. Note that the Python 2 standard library still has this
    race condition.)
  • :class:~gevent.event.Event and :class:~.AsyncResult now wake
    waiting greenlets in the same (unspecified) order. Previously,
    AsyncResult tended to use a FIFO order, but this was never
    guaranteed. Both classes also use less per-instance memory.
  • Using a :class:~logging.Logger as a :mod:pywsgi error or request
    log stream no longer produces extra newlines. Reported in
    :issue:756 by ael-code.
  • Windows: Installing from an sdist (.tar.gz) on PyPI no longer
    requires having Cython installed first. (Note that the binary installation
    formats (wheels, exes, msis) are preferred on Windows.) Reported in
    :issue:757 by Ned Batchelder.
  • Issue a warning when :func:~gevent.monkey.patch_all is called with
    os set to False (not the default) but signal is still True
    (the default). This combination of parameters will cause signal
    handlers for SIGCHLD to not get called. In the future this might
    raise an error. Reported by Josh Zuech.
  • Issue a warning when :func:~gevent.monkey.patch_all is called more
    than once with different arguments. That causes the cumulative set of all True
    arguments to be patched, which may cause unexpected results.
  • Fix returning the original values of certain threading
    attributes from :func:gevent.monkey.get_original.

.. _bug 13502: http://bugs.python.org/issue13502

1.1rc5

=====================

  • SSL: Attempting to send empty data using the
    :meth:~socket.socket.sendall method of a gevent SSL socket that has
    a timeout now returns immediately (like the standard library does),
    instead of incorrectly raising :exc:ssl.SSLEOFError. (Note that
    sending empty data with the :meth:~socket.socket.send
    method does raise SSLEOFError in
    both gevent and the standard library.) Reported in :issue:719 by
    Mustafa Atik and Tymur Maryokhin, with a reproducible test case
    provided by Timo Savola.

1.1rc4

=====================

  • Python 2: Using the blocking API at import time when multiple
    greenlets are also importing should not lead to LoopExit.
    Reported in :issue:728 by Garrett Heel.
  • Python 2: Don't raise :exc:OverflowError when using the readline
    method of the WSGI input stream without a size hint or with a large
    size hint when the client is uploading a large amount of data. (This
    only impacted CPython 2; PyPy and Python 3 already handled this.)
    Reported in :issue:289 by ggjjlldd, with contributions by Nathan
    Hoad.
  • :class:~gevent.baseserver.BaseServer and its subclasses like
    :class:~gevent.pywsgi.WSGIServer avoid allocating a new closure for
    each request, reducing overhead.
  • Python 2: Under 2.7.9 and above (or when the PEP 466 SSL interfaces
    are available), perform the same hostname validation that the
    standard library does; previously this was skipped. Also,
    reading, writing, or handshaking a closed
    :class:~ssl.SSLSocket now raises the same :exc:ValueError
    the standard library does, instead of an :exc:AttributeError.
    Found by updating gevent's copy of the standard library test cases.
    Initially reported in :issue:735 by Dmitrij D. Czarkoff.
  • Python 3: Fix :meth:~ssl.SSLSocket.unwrap and SNI callbacks.
    Also raise the correct exceptions for unconnected SSL sockets and
    properly validate SSL hostnames. Found via updated standard library
    tests.
  • Python 3: Add missing support for :meth:socket.socket.sendfile. Found via updated
    standard library tests.
  • Python 3.4+: Add missing support for
    :meth:socket.socket.get_inheritable and
    :meth:~socket.socket.set_inheritable. Found via updated standard
    library tests.

1.1rc3

=====================

  • Python 2: Support the new PEP 466 :mod:ssl interfaces on any Python 2
    version that supplies them, not just on the versions it officially
    shipped with. Some Linux distributions, including RedHat/CentOS and
    Amazon have backported the changes to older versions. Reported in
    :issue:702.
  • PyPy: An interaction between Cython compiled code and the garbage
    collector caused PyPy to crash when a previously-allocated Semaphore
    was used in a __del__ method, something done in the popular
    libraries requests and urllib3. Due to this and other Cython
    related issues, the Semaphore class is no longer compiled by Cython
    on PyPy. This means that it is now traceable and not exactly as
    atomic as the Cython version, though the overall semantics should
    remain the same. Reported in :issue:704 by Shaun Crampton.
  • PyPy: Optimize the CFFI backend to use less memory (two pointers per
    watcher).
  • Python 3: The WSGI PATH_INFO entry is decoded from URL escapes
    using latin-1, not UTF-8. This improves compliance with PEP 3333 and
    compatibility with some frameworks like Django. Fixed in :pr:712
    by Ruben De Visscher.

1.1rc2

=====================

  • Exceptions raised by gevent's SSL sockets are more consistent with
    the standard library (e.g., gevent's Python 3 SSL sockets raise
    :exc:socket.timeout instead of :exc:ssl.SSLError, a change
    introduced in Python 3.2).
  • Python 2: gevent's socket's sendall method could completely ignore timeouts
    in some cases. The timeout now refers to the total time taken by
    sendall.
  • gevent's SSL socket's sendall method should no longer raise SSL3_WRITE_PENDING
    in rare cases when sending large buffers. Reported in :issue:317.
  • :func:gevent.signal.signal now allows resetting (SIG_DFL) and ignoring (SIG_IGN) the
    SIGCHLD signal at the process level (although this may allow race
    conditions with libev child watchers). Reported in :issue:696 by
    Adam Ning.
  • :func:gevent.spawn_raw now accepts keyword arguments, as
    previously (incorrectly) documented. Reported in :issue:680 by Ron
    Rothman.
  • PyPy: PyPy 2.6.1 or later is now required (4.0.1 or later is
    recommended).
  • The CFFI backend is now built and usable on CPython implementations
    (except on Windows) if cffi is installed before gevent is
    installed. To use the CFFI backend, set the environment variable
    GEVENT_CORE_CFFI_ONLY before starting Python. This can aid
    debugging in some cases and helps ensure parity across all
    combinations of supported platforms.
  • The CFFI backend now calls the callback of a watcher whose args attribute is
    set to None, just like the Cython backend does. It also only
    allows args to be a tuple or None, again matching the Cython backend.
  • PyPy/CFFI: Fix a potential crash when using stat watchers.
  • PyPy/CFFI: Encode unicode paths for stat watchers using
    :meth:sys.getfilesystemencoding like the Cython backend.
  • The internal implementation modules gevent._fileobject2,
    gevent._fileobject3, and gevent._util were removed. These
    haven't been used or tested since 1.1b1.

1.1rc1

=====================

  • Windows/Python 3: Finish porting the :mod:gevent.subprocess module, fixing a
    large number of failing tests. Examples of failures are in
    :issue:668 and :issue:669 reported by srossross.
  • Python 3: The SSLSocket class should return an empty bytes
    object on an EOF instead of a str. Fixed in :pr:674 by Dahoon
    Kim.
  • Python 2: Workaround a buffering bug in the stdlib io module
    that caused FileObjectPosix to be slower than necessary in some
    cases. Reported in :issue:675 by WGH-.
  • PyPy: Fix a crash. Reported in :issue:676 by Jay Oster.

.. caution:: There are some remaining, relatively rare, PyPy
crashes, but their ultimate cause is unknown (gevent,
CFFI, greenlet, the PyPy GC?). PyPy users can
contribute to :issue:677 to help track them down.

  • PyPy: Exceptions raised while handling an error raised by a loop
    callback function behave like the CPython implementation: the
    exception is printed, and the rest of the callbacks continue
    processing.
  • If a Hub object with active watchers was destroyed and then another
    one created for the same thread, which itself was then destroyed with
    destroy_loop=True, the process could crash. Documented in
    :issue:237 and fix based on :pr:238, both by Jan-Philip Gehrcke.
  • Python 3: Initializing gevent's hub for the first time
    simultaneously in multiple native background threads could fail with
    AttributeError and ImportError. Reported in :issue:687 by
    Gregory Petukhov.

1.1b6

====================

  • PyPy: Fix a memory leak for code that allocated and disposed of many
    :class:gevent.lock.Semaphore subclasses. If monkey-patched, this could
    also apply to :class:threading.Semaphore objects. Reported in
    :issue:660 by Jay Oster.
  • PyPy: Cython version 0.23.4 or later must be used to avoid a memory
    leak (details_). Thanks to Jay Oster.
  • Allow subclasses of :class:~.WSGIHandler to handle invalid HTTP client
    requests. Reported by not-bob.
  • :class:~.WSGIServer more robustly supports :class:~logging.Logger-like parameters for
    log and error_log (as introduced in 1.1b1, this could cause
    integration issues with gunicorn). Reported in :issue:663 by Jay
    Oster.
  • :class:~gevent.threading._DummyThread objects, created in a
    monkey-patched system when :func:threading.current_thread is
    called in a new greenlet (which often happens implicitly, such as
    when logging) are much lighter weight. For example, they no longer
    allocate and then delete a :class:~gevent.lock.Semaphore, which is
    especially important for PyPy.
  • Request logging by :mod:gevent.pywsgi formats the status code
    correctly on Python 3. Reported in :issue:664 by Kevin Chen.
  • Restore the ability to take a weak reference to instances of exactly
    :class:gevent.lock.Semaphore, which was unintentionally removed
    as part of making Semaphore atomic on PyPy on 1.1b1. Reported in
    :issue:666 by Ivan-Zhu.
  • Build Windows wheels for Python 3.5. Reported in :pr:665 by Hexchain Tong.

.. _details: https://mail.python.org/pipermail/cython-devel/2015-October/004571.html

1.1b5

====================

  • :mod:gevent.subprocess works under Python 3.5. In general, Python 3.5
    has preliminary support. Reported in :issue:653 by Squeaky.
  • :func:Popen.communicate <gevent.subprocess.Popen.communicate> honors a timeout
    argument even if there is no way to communicate with the child
    process (none of stdin, stdout and stderr were set to PIPE).
    Noticed as part of the Python 3.5 test suite for the new function
    subprocess.run but impacts all versions (timeout is an
    official argument under Python 3 and a gevent extension with
    slightly different semantics under Python 2).
  • Fix a possible ValueError from :meth:Queue.peek <gevent.queue.Queue.peek>.
    Reported in :issue:647 by Kevin Chen.
  • Restore backwards compatibility for using gevent.signal as a
    callable, which, depending on the order of imports, could be broken
    after the addition of the gevent.signal module. Reported in
    :issue:648 by Sylvain Zimmer.
  • gevent blocking operations performed at the top-level of a module
    after the system was monkey-patched under Python 2 could result in
    raising a :exc:~gevent.hub.LoopExit instead of completing the expected blocking
    operation. Note that performing gevent blocking operations in the
    top-level of a module is typically not recommended, but this
    situation can arise when monkey-patching existing scripts. Reported
    in :issue:651 and :issue:652 by Mike Kaplinskiy.
  • SIGCHLD and waitpid now work for the pids returned by the
    (monkey-patched) os.forkpty and pty.fork functions in the
    same way they do for the os.fork function. Reported in
    :issue:650 by Erich Heine.
  • :class:~gevent.pywsgi.WSGIServer and
    :class:~gevent.pywsgi.WSGIHandler do a better job detecting and
    reporting potential encoding errors for headers and the status line
    during :meth:~gevent.pywsgi.WSGIHandler.start_response as recommended by the WSGI specification_. In addition, under Python 2, unnecessary encodings
    and decodings (often a trip through the ASCII encoding) are avoided
    for conforming applications. This is an enhancement of an already
    documented and partially enforced constraint: beginning in 1.1a1,
    under Python 2, u'abc' would typically previously have been
    allowed, but u'\u1f4a3' would not; now, neither will be allowed,
    more closely matching the specification, improving debugability and
    performance and allowing for better error handling both by the
    application and by gevent (previously, certain encoding errors could
    result in gevent writing invalid/malformed HTTP responses). Reported
    by Greg Higgins and Carlos Sanchez.
  • Code coverage by tests is now reported on coveralls.io_.

.. _WSGI specification: https://www.python.org/dev/peps/pep-3333/the-start-response-callable
.. _coveralls.io: https://coveralls.io/github/gevent/gevent

1.1b4

===================

  • Detect and raise an error for several important types of
    programming errors even if Python interpreter optimizations are
    enabled with -O or PYTHONOPTIMIZE. Previously these would go
    undetected if optimizations were enabled, potentially leading to
    erratic, difficult to debug behaviour.
  • Fix an AttributeError from gevent.queue.Queue when peek
    was called on an empty Queue. Reported in :issue:643 by michaelvol.
  • Make SIGCHLD handlers specified to :func:gevent.signal.signal work with
    the child watchers that are used by default. Also make
    :func:gevent.os.waitpid work with a first argument of -1. (Also
    applies to the corresponding monkey-patched stdlib functions.)
    Noted by users of gunicorn.
  • Under Python 2, any timeout set on a socket would be ignored when
    using the results of socket.makefile. Reported in :issue:644
    by Karan Lyons.

1.1b3

====================

  • Fix an AttributeError from gevent.monkey.patch_builtins on
    Python 2 when the future_ library is also installed. Reported by
    Carlos Sanchez.
  • PyPy: Fix a DistutilsModuleError or ImportError if the CFFI
    module backing gevent.core needs to be compiled when the hub is
    initialized (due to a missing or invalid __pycache__ directory).
    Now, the module will be automtically compiled when gevent is
    imported (this may produce compiler output on stdout). Reported in
    :issue:619 by Thinh Nguyen and :issue:631 by Andy Freeland, with
    contributions by Jay Oster and Matt Dupre.
  • PyPy: Improve the performance of gevent.socket.socket:sendall
    with large inputs. bench_sendall.py_ now performs about as well on
    PyPy as it does on CPython, an improvement of 10x (from ~60MB/s to
    ~630MB/s). See this pypy bug_ for details.
  • Fix a possible TypeError when calling gevent.socket.wait.
    Reported in 635 by lanstin.
  • gevent.socket.socket:sendto properly respects the socket's
    blocking status (meaning it can raise EWOULDBLOCK now in cases it
    wouldn't have before). Reported in :pr:634 by Mike Kaplinskiy.
  • Common lookup errors using the :mod:threaded resolver <gevent.resolver_thread> are no longer always printed to stderr
    since they are usually out of the programmer's control and caught
    explicitly. (Programming errors like TypeError are still
    printed.) Reported in :issue:617 by Jay Oster and Carlos Sanchez.
  • PyPy: Fix a TypeError from gevent.idle(). Reported in
    :issue:639 by chilun2008.
  • The :func:~gevent.pool.Pool.imap_unordered methods of a pool-like
    object support a maxsize parameter to limit the number of
    results buffered waiting for the consumer. Reported in :issue:638
    by Sylvain Zimmer.
  • The class :class:gevent.queue.Queue now consistently orders multiple
    blocked waiting put and get callers in the order they
    arrived. Previously, due to an implementation quirk this was often
    roughly the case under CPython, but not under PyPy. Now they both
    behave the same.
  • The class :class:gevent.queue.Queue now supports the :func:len function.

.. _future: http://python-future.org
.. _bench_sendall.py: https://raw.githubusercontent.com/gevent/gevent/master/greentest/bench_sendall.py
.. _pypy bug: https://bitbucket.org/pypy/pypy/issues/2091/non-blocking-socketsend-slow-gevent

1.1b2

===================

  • Enable using the :mod:c-ares resolver <gevent.resolver_ares> under
    PyPy. Note that its performance characteristics are probably
    sub-optimal.
  • On some versions of PyPy on some platforms (notably 2.6.0 on 64-bit
    Linux), enabling gevent.monkey.patch_builtins could cause PyPy
    to crash. Reported in :issue:618 by Jay Oster.
  • :func:gevent.kill raises the correct exception in the target greenlet.
    Reported in :issue:623 by Jonathan Kamens.
  • Various fixes on Windows. Reported in :issue:625, :issue:627,
    and :issue:628 by jacekt and Yuanteng (Jeff) Pei. Fixed in :pr:624.
  • Add :meth:~gevent.fileobject.FileObjectPosix.readable and
    :meth:~gevent.fileobject.FileObjectPosix.writable methods to
    :class:~gevent.fileobject.FileObjectPosix; this fixes e.g., help() on Python 3 when
    monkey-patched.

1.1b1

====================

  • setup.py can be run from a directory containing spaces. Reported
    in :issue:319 by Ivan Smirnov.
  • setup.py can build with newer versions of clang on OS X. They
    enforce the distinction between CFLAGS and CPPFLAGS.
  • gevent.lock.Semaphore is atomic on PyPy, just like it is on
    CPython. This comes at a small performance cost on PyPy.
  • Fixed regression that failed to set the successful value to
    False when killing a greenlet before it ran with a non-default
    exception. Fixed in :pr:608 by Heungsub Lee.
  • libev's child watchers caused :func:os.waitpid to become unreliable
    due to the use of signals on POSIX platforms. This was especially
    noticeable when using :mod:gevent.subprocess in combination with
    multiprocessing. Now, the monkey-patched os module provides
    a :func:~gevent.os.waitpid function that seeks to ameliorate this. Reported in
    :issue:600 by champax and :issue:452 by Łukasz Kawczyński.
  • On platforms that implement :class:select.poll, provide a
    gevent-friendly :class:gevent.select.poll and corresponding
    monkey-patch. Implemented in :pr:604 by Eddi Linder.
  • Allow passing of events to the io callback under PyPy. Reported in
    :issue:531 by M. Nunberg and implemented in :pr:604.
  • :func:gevent.thread.allocate_lock (and so a monkey-patched standard
    library :func:~thread.allocate_lock) more closely matches the behaviour of the
    builtin: an unlocked lock cannot be released, and attempting to do
    so throws the correct exception (thread.error on Python 2,
    RuntimeError on Python 3). Previously, over-releasing a lock was
    silently ignored. Reported in :issue:308 by Jędrzej Nowak.
  • :class:gevent.fileobject.FileObjectThread uses the threadpool to close
    the underling file-like object. Reported in :issue:201 by
    vitaly-krugl.
  • Malicious or malformed HTTP chunked transfer encoding data sent to
    the :class:pywsgi handler <gevent.pywsgi.WSGIHandler> is handled more robustly, resulting in
    "HTTP 400 bad request" responses instead of a 500 error or, in the
    worst case, a server-side hang. Reported in :issue:229 by Björn
    Lindqvist.
  • Importing the standard library threading module before using
    gevent.monkey.patch_all() no longer causes Python 3.4 to fail to
    get the repr of the main thread, and other CPython platforms to
    return an unjoinable DummyThread. (Note that this is not
    recommended.) Reported in :issue:153.
  • Under Python 2, use the io package to implement
    :class:~gevent.fileobject.FileObjectPosix. This unifies the code with the Python 3
    implementation, and fixes problems with using seek(). See
    :issue:151.
  • Under Python 2, importing a module that uses gevent blocking
    functions at its top level from multiple greenlets no longer
    produces import errors (Python 3 handles this case natively).
    Reported in :issue:108 by shaun and initial fix based on code by
    Sylvain Zimmer.
  • :func:gevent.spawn, :func:spawn_raw and :func:spawn_later, as well as the
    :class:~gevent.Greenlet constructor, immediately produce useful TypeErrors
    if asked to run something that cannot be run. Previously, the
    spawned greenlet would die with an uncaught TypeError the first
    time it was switched to. Reported in :issue:119 by stephan.
  • Recursive use of :meth:ThreadPool.apply <gevent.threadpool.ThreadPool.apply> no longer raises a
    LoopExit error (using ThreadPool.spawn and then get on
    the result still could; you must be careful to use the correct hub).
    Reported in :issue:131 by 8mayday.
  • When the :mod:threading module is :func:monkey-patched <gevent.monkey.patch_thread>, the module-level lock in the
    :mod:logging module is made greenlet-aware, as are the instance
    locks of any configured handlers. This makes it safer to import
    modules that use the standard pattern of creating a module-level
    :class:~logging.Logger instance before monkey-patching.
    Configuring logging with a basic configuration and then
    monkey-patching is also safer (but not configurations that involve
    such things as the SocketHandler).
  • Fix monkey-patching of :class:threading.RLock under Python 3.
  • Under Python 3, monkey-patching at the top-level of a module that
    was imported by another module could result in a :exc:RuntimeError
    from :mod:importlib. Reported in :issue:615 by Daniel Mizyrycki.
    (The same thing could happen under Python 2 if a threading.RLock
    was held around the monkey-patching call; this is less likely but
    not impossible with import hooks.)
  • Fix configuring c-ares for a 32-bit Python when running on a 64-bit
    platform. Reported in :issue:381 and fixed in :pr:616 by Chris
    Lane. Additional fix in :pr:626 by Kevin Chen.
  • (Experimental) Let the :class:pywsgi.WSGIServer accept a
    :class:logging.Logger instance for its log and (new) error_log
    parameters. Take care that the system is fully monkey-patched very
    early in the process's lifetime if attempting this, and note that
    non-file handlers have not been tested. Fixes :issue:106.

1.1a2

===================

  • gevent.threadpool.ThreadPool.imap and imap_unordered now
    accept multiple iterables.
  • (Experimental) Exceptions raised from iterating using the
    ThreadPool or Group mapping/application functions should now
    have the original traceback.
  • :meth:gevent.threadpool.ThreadPool.apply now raises any exception
    raised by the called function, the same as
    :class:~gevent.pool.Group/:class:~gevent.pool.Pool and the
    builtin :func:apply function. This obsoletes the undocumented
    apply_e function. Original PR :issue:556 by Robert Estelle.
  • Monkey-patch the selectors module from patch_all and
    patch_select on Python 3.4. See :issue:591.
  • Additional query functions for the :mod:gevent.monkey module
    allow knowing what was patched. Discussed in :issue:135 and
    implemented in :pr:325 by Nathan Hoad.
  • In non-monkey-patched environments under Python 2.7.9 or above or
    Python 3, using a gevent SSL socket could cause the greenlet to
    block. See :issue:597 by David Ford.
  • :meth:gevent.socket.socket.sendall supports arbitrary objects that
    implement the buffer protocol (such as ctypes structures), just like
    native sockets. Reported in :issue:466 by tzickel.
  • Added support for the onerror attribute present in CFFI 1.2.0
    for better signal handling under PyPy. Thanks to Armin Rigo and Omer
    Katz. (See https://bitbucket.org/cffi/cffi/issue/152/handling-errors-from-signal-handlers-in)
  • The :mod:gevent.subprocess module is closer in behaviour to the
    standard library under Python 3, at least on POSIX. The
    pass_fds, restore_signals, and start_new_session
    arguments are now implemented, as are the timeout parameters
    to various functions. Under Python 2, the previously undocumented
    timeout parameter to :meth:Popen.communicate <gevent.subprocess.Popen.communicate> raises an exception like its
    Python 3 counterpart.
  • An exception starting a child process with the :mod:gevent.subprocess
    module no longer leaks file descriptors. Reported in :pr:374 by 陈小玉.
  • The example echoserver.py no longer binds to the standard X11
    TCP port. Reported in :issue:485 by minusf.
  • :func:gevent.iwait no longer throws :exc:~gevent.hub.LoopExit if the caller
    switches greenlets between return values. Reported and initial patch
    in :issue:467 by Alexey Borzenkov.
  • The default threadpool and default threaded resolver work in a
    forked child process, such as with :class:multiprocessing.Process.
    Previously the child process would hang indefinitely. Reported in
    :issue:230 by Lx Yu.
  • Fork watchers are more likely to (eventually) get called in a
    multi-threaded program (except on Windows). See :issue:154.
  • :func:gevent.killall accepts an arbitrary iterable for the greenlets
    to kill. Reported in :issue:404 by Martin Bachwerk; seen in
    combination with older versions of simple-requests.
  • :class:gevent.local.local objects are now eligible for garbage
    collection as soon as the greenlet finishes running, matching the
    behaviour of the built-in :class:threading.local (when implemented
    natively). Reported in :issue:387 by AusIV.
  • Killing a greenlet (with :func:gevent.kill or
    :meth:gevent.Greenlet.kill) before it is actually started and
    switched to now prevents the greenlet from ever running, instead of
    raising an exception when it is later switched to. See :issue:330
    reported by Jonathan Kamens.

1.1a1

====================

  • Add support for Python 3.3 and 3.4. Many people have contributed to
    this effort, including but not limited to Fantix King, hashstat,
    Elizabeth Myers, jander, Luke Woydziak, and others. See :issue:38.
  • Add support for PyPy. See :issue:248. Note that for best results,
    you'll need a very recent PyPy build including CFFI 1.2.0.
  • Drop support for Python 2.5. Python 2.5 users can continue to use
    gevent 1.0.x.
  • Fix :func:gevent.joinall to not ignore count when
    raise_error is False. See :pr:512 by Ivan Diao.
  • Fix :class:gevent.subprocess.Popen to not ignore the bufsize argument. Note
    that this changes the (platform dependent) default, typically from
    buffered to unbuffered. See :pr:542 by Romuald Brunet.
  • Upgraded c-ares to 1.10.0. See :pr:579 by Omer Katz.

.. caution:: The c-ares configure script is now more strict about the
contents of environment variables such as CFLAGS and LDFLAGS
and they may have to be modified (for example, CFLAGS is no
longer allowed to include -I directives, which must instead be
placed in CPPFLAGS).

  • Add a count argument to :func:gevent.iwait. See :pr:482 by
    wiggin15.
  • Add a timeout argument to :meth:gevent.queue.JoinableQueue.join
    which now returns whether all items were waited for or not.
  • gevent.queue.JoinableQueue treats items passed to
    __init__ as unfinished tasks, the same as if they were put.
    Initial :pr:554 by DuLLSoN.
  • gevent.pywsgi no longer prints debugging information for the
    normal conditions of a premature client disconnect. See :issue:136,
    fixed in :pr:377 by Paul Collier.
  • (Experimental.) Waiting on or getting results from greenlets that
    raised exceptions now usually raises the original traceback. This
    should assist things like Sentry to track the original problem. See
    :issue:450 and :issue:528 by Rodolfo and Eddi Linder and
    :issue:240 by Erik Allik.
  • Upgrade to libev 4.20. See :pr:590 by Peter Renström.
  • Fix gevent.baseserver.BaseServer to be printable when its
    handle function is an instancemethod of itself. See :pr:501 by Joe
    Jevnik.
  • Make the acquire method of gevent.lock.DummySemaphore always
    return True, supporting its use-case as an "infinite" or unbounded
    semaphore providing no exclusion, and allowing the idiom if sem.acquire(): .... See :pr:544 by Mouad Benchchaoui.
  • Patch subprocess by default in gevent.monkey.patch_all. See
    :issue:446.
  • gevent.pool.Group.imap and imap_unordered now accept
    multiple iterables like itertools.imap. :issue:565 reported by
    Thomas Steinacher.
  • Compatibility note: gevent.baseserver.BaseServer and
    its subclass gevent.server.StreamServer now deterministically
    close the client socket when the request handler returns.
    Previously, the socket was left at the mercies of the garbage
    collector; under CPython 2.x this meant when the last reference went
    away, which was usually, but not necessarily, when the request
    handler returned, but under PyPy it was some arbitrary point in the
    future and under CPython 3.x a ResourceWarning could be generated.
    This was undocumented behaviour, and the client socket could be kept
    open after the request handler returned either accidentally or intentionally.
  • Compatibility note: pywsgi now ensures that headers can be
    encoded in latin-1 (ISO-8859-1). This improves adherence to the HTTP
    standard (and is necessary under Python 3). Under certain
    conditions, previous versions could have allowed non-ISO-8859-1
    headers to be sent, but their interpretation by a conforming
    recipient is unknown; now, a UnicodeError will be raised. See :issue:614.

gunicorn 19.3.0 -> 19.7.1

19.7.1

===================

  • fix: continue if SO_REUSEPORT seems to be available but fails (:issue:1480)
  • fix: support non-decimal values for the umask command line option (:issue:1325)

19.7.0

===================

  • The previously deprecated gunicorn_django command has been removed.
    Use the :ref:gunicorn-cmd command-line interface instead.
  • The previously deprecated django_settings setting has been removed.
    Use the :ref:raw-env setting instead.
  • The default value of :ref:ssl-version has been changed from
    ssl.PROTOCOL_TLSv1 to ssl.PROTOCOL_SSLv23.
  • fix: initialize the group access list when initgroups is set (:issue:1297)
  • add environment variables to gunicorn access log format (:issue:1291)
  • add --paste-global-conf option (:issue:1304)
  • fix: print access logs to STDOUT (:issue:1184)
  • remove upper limit on max header size config (:issue:1313)
  • fix: print original exception on AppImportError (:issue:1334)
  • use SO_REUSEPORT if available (:issue:1344)
  • fix leak <https://github.com/benoitc/gunicorn/commit/b4c41481e2d5ef127199a4601417a6819053c3fd>_ of duplicate file descriptor for bound sockets.
  • add --reload-engine option, support inotify and other backends (:issue:1368, :issue:1459)
  • fix: reject request with invalid HTTP versions
  • add child_exit callback (:issue:1394)
  • add support for eventlets _AlreadyHandled object (:issue:1406)
  • format boot tracebacks properly with reloader (:issue:1408)
  • refactor socket activation and fd inheritance for better support of SystemD (:issue:1310)
  • fix: o fds are given by default in gunicorn (:issue:1423)
  • add ability to pass settings to GUNICORN_CMD_ARGS environment variable which helps in container world (:issue:1385)
  • fix: catch access denied to pid file (:issue:1091)
  • many additions and improvements to the documentation

Breaking Change
+++++++++++++++

  • Python 2.6.0 is the last supported version

19.6.0

===================

Core & Logging
++++++++++++++

  • improvement of the binary upgrade behaviour using USR2: remove file locking (:issue:1270)
  • add the --capture-output setting to capture stdout/stderr tot the log
    file (:issue:1271)
  • Allow disabling sendfile() via the SENDFILE environment variable
    (:issue:1252)
  • fix reload under pycharm (:issue:1129)

Workers
+++++++

  • fix: make sure to remove the signal from the worker pipe (:issue:1269)
  • fix: gthread worker, handle removed socket in the select loop
    (:issue:1258)

19.5.0

===================

Core
++++

  • fix: Ensure response to HEAD request won't have message body
  • fix: lock domain socket and remove on last arbiter exit (:issue:1220)
  • improvement: use EnvironmentError instead of socket.error (:issue:939)
  • add: new FORWARDDED_ALLOW_IPS environment variable (:issue:1205)
  • fix: infinite recursion when destroying sockets (:issue:1219)
  • fix: close sockets on shutdown (:issue:922)
  • fix: clean up sys.exc_info calls to drop circular refs (:issue:1228)
  • fix: do post_worker_init after load_wsgi (:issue:1248)

Workers
+++++++

  • fix access logging in gaiohttp worker (:issue:1193)
  • eventlet: handle QUIT in a new coroutine (:issue:1217)
  • gevent: remove obsolete exception clauses in run (:issue:1218)
  • tornado: fix extra "Server" response header (:issue:1246)
  • fix: unblock the wait loop under python 3.5 in sync worker (:issue:1256)

Logging
+++++++

  • fix: log message for listener reloading (:issue:1181)
  • Let logging module handle traceback printing (:issue:1201)
  • improvement: Allow configuring logger_class with statsd_host (:issue:1188)
  • fix: traceback formatting (:issue:1235)
  • fix: print error logs on stderr and access logs on stdout (:issue:1184)

Documentation
+++++++++++++

  • Simplify installation instructions in gunicorn.org (:issue:1072)
  • Fix URL and default worker type in example_config (:issue:1209)
  • update django doc url to 1.8 lts (:issue:1213)
  • fix: miscellaneous wording corrections (:issue:1216)
  • Add PSF License Agreement of selectors.py to NOTICE (:issue: 1226)
  • document LOGGING overriding (:issue:1051)
  • put a note that error logs are only errors from Gunicorn (:issue:1124)
  • add a note about the requirements of the threads workers under python 2.x (:issue:1200)
  • add access_log_format to config example (:issue:1251)

Tests
+++++

  • Use more pytest.raises() in test_http.py

19.4.5

===================

  • fix: NameError fileno in gunicorn.http.wsgi (:issue:1178)

19.4.4

===================

  • fix: check if a fileobject can be used with sendfile(2) (:issue:1174)
  • doc: be more descriptive in errorlog option (:issue:1173)

================
Changelog - 2017

.. note::

Please see :doc:news for the latest changes

19.4.3

===================

  • fix: don't check if a file is writable using os.stat with SELINUX (:issue:1171)

19.4.2

===================

Core
++++

  • improvement: handle HaltServer in manage_workers (:issue:1095)
  • fix: Do not rely on sendfile sending requested count (:issue:1155)
  • fix: claridy --no-sendfile default (:issue:1156)
  • fix: LoggingCatch sendfile failure from no file descriptor (:issue:1160)

Logging
+++++++

  • fix: Always send access log to syslog if syslog is on
  • fix: check auth before trying to own a file (:issue:1157)

Documentation
+++++++++++++

  • fix: Fix Slowloris broken link. (:issue:1142)
  • Tweak markup in faq.rst

Testing
+++++++

  • fix: gaiohttp test (:issue:1164)

19.4.1

===================

  • fix tornado worker (:issue:1154)

19.4.0 / 2015/11/20

Core
++++

  • fix: make sure that a user is able to access to the logs after dropping a
    privilege (:issue:1116)
  • improvement: inherit the Exception class where it needs to be (:issue:997)
  • fix: make sure headers are always encoded as latin1 RFC 2616 (:issue:1102)
  • improvement: reduce arbiter noise (:issue:1078)
  • fix: don't close the unix socket when the worker exit (:issue:1088)
  • improvement: Make last logged worker count an explicit instance var (:issue:1078)
  • improvement: prefix config file with its type (:issue:836)
  • improvement: pidfile handing (:issue:1042)
  • fix: catch OSError as well as ValueError on race condition (:issue:1052)
  • improve support of ipv6 by backporting urlparse.urlsplit from Python 2.7 to
    Python 2.6.
  • fix: raise InvalidRequestLine when the line contains malicious data
    (:issue:1023)
  • fix: fix argument to disable sendfile
  • fix: add gthread to the list of supported workers (:issue:1011)
  • improvement: retry socket binding up to five times upon EADDRNOTAVAIL
    (:issue:1004)
  • breaking change: only honor headers that can be encoded in ascii to comply to
    the RFC 7230 (See :issue:1151).

Logging
+++++++

  • add new parameters to access log (:issue:1132)
  • fix: make sure that files handles are correctly reopened on HUP
    (:issue:627)
  • include request URL in error message (:issue:1071)
  • get username in access logs (:issue:1069)
  • fix statsd logging support on Python 3 (:issue:1010)

Testing
+++++++

  • use last version of mock.
  • many fixes in Travis CI support
  • miscellaneous improvements in tests

Thread worker
+++++++++++++

  • fix: Fix self.nr usage in ThreadedWorker so that auto restart works as
    expected (:issue:1031)

Gevent worker
+++++++++++++

  • fix quit signal handling (:issue:1128)
  • add support for Python 3 (:issue:1066)
  • fix: make graceful shutdown thread-safe (:issue:1032)

Tornado worker
++++++++++++++

  • fix ssl options (:issue:1146, :issue:1135)
  • don't check timeout when stopping gracefully (:issue:1106)

AIOHttp worker
++++++++++++++

  • add SSL support (:issue:1105)

Documentation
+++++++++++++

  • fix link to proc name setting (:issue:1144)
  • fix worker class documentation (:issue:1141, :issue:1104)
  • clarify graceful timeout documentation (:issue:1137)
  • don't duplicate NGINX config files examples (:issue:1050, :issue:1048)
  • add web.py framework example (:issue:1117)
  • update Debian/Ubuntu installations instructions (:issue:1112)
  • clarify pythonpath setting description (:issue:1080)
  • tweak some example for python3
  • clarify sendfile documentation
  • miscellaneous typos in source code comments (thanks!)
  • clarify why REMOTE_ADD may not be the user's IP address (:issue:1037)

Misc
++++

  • fix: reloader should survive SyntaxError (:issue:994)
  • fix: expose the reloader class to the worker.

boto 2.38.0 -> 2.48.0

2.48.0

============

📅 2017/06/29

This release addresses a few S3 related bugs as well as a bug with the recent
endpoint heuristics feature.

Changes

  • Fix generate_url() AttributeError when using anonymous connections (:issue:3734, :sha:83481807)
  • Use RegionInfo by default with heuristics (:issue:3737, :sha:0a9b1140)
  • Allow specifying s3 host from boto config file. (:issue:3738, :sha:dcfc7512)

2.47.0

============

📅 2017/05/24

Adds features for Google Cloud Storage.

Changes

  • Loosen requirements for ID field in PROJECT_PRIVATE_RE. (:issue:3729, :sha:5e85d7c7)
  • Populate storage class from HEAD Object responses. (:issue:3691, :sha:315b76e0)

2.46.1

============

📅 2017/02/20

Fixes a bug where a recently added module was not added to setup.py

Changes

  • Add boto.vendored.regions to setup.py (:issue:3682, :sha:43e796d1)

2.45.0

============

📅 2016/12/14

Add support for eu-west-2 region.

Changes

  • Add support for eu-west-2 (:issue:3654, :sha:40c68db)

2.44.0

============

📅 2016/12/08

Adds support for ca-central-1 region and gs object-level storage class.

Changes

  • Update endpoints (:issue:3649, :sha:a1eae11)
  • Add gs support for object-level storage class features. (:issue:3635, :sha:dc4bf34)

2.43.0

============

📅 2016/10/17

Adds support for us-east-2 endpoint.

Changes

  • Add support for us-east-2 endpoint (:sha:262ed00)
  • Account for metadata update propagation delay (:issue:3615, :sha:592dae3)
  • boto.dynamodb2.table.Tablebatch_get() fails to paginate results if provisioned throughput is exceeded (:issue:3574, :sha:abb3847)

2.42.0

============

📅 2016/07/19

Updates the Mechanical Turk API and fixes some bugs.

Changes

  • Respect is_secure parameter in generate_url_sigv4 (:sha:59ba28d)
  • Update MTurk API (:issue:3563, :sha:250d891)

2.41.0

============

📅 2016/06/27

Update documentation and endpoints file.

Changes

  • Update endpoints.json (:issue:3564, :sha:5e786b4)
  • Remove the broken link to PDF's (:issue:3562, :sha:46ffb0c)

2.40.0

===========

📅 2016/04/28

Fixes several bugs.

Changes

  • ryansydnor-s3: Allow s3 bucket lifecycle policies with multiple transitions (:sha:c6d5af3)
  • Fixes upload parts for glacier (:issue:3524, :sha:d1973a4)
  • pslawski-unicode-parse-qs: Move utility functions over to compat Add S3 integ test for non-ascii keys with sigv4 Fix quoting of tilde in S3 canonical_uri for sigv4 Parse unicode query string properly in Python 2 (:issue:2844, :sha:5092c6d)
  • ninchat-config-fix: Add setstate to fix pickling test fail Add unit tests for config parsing Don't access parser through dict Config: Catch specific exceptions when wrapping ConfigParser methods Config: Don't inherit from ConfigParser (:issue:3474, :sha:c21aa54)

2.39.0

============

📅 2016/01/18

Add support for ap-northeast-2, update documentation, and fix several bugs.

Changes

  • Autodetect sigv4 for ap-northeast-2 (:issue:3461, :sha:c2a17ce)
  • Added support for ap-northeast-2 (:issue:3454, :sha:c3c1ddd)
  • Remove VeriSign Class 3 CA from trusted certs (:issue:3450, :sha:8a025df)
  • Add note about boto3 on all pages of boto docs (:sha:9bd904c)
  • Fix for listing EMR steps based on cluster_states filter (:issue:3399, :sha:0f92f35)
  • Fixed param name in set_contents_from_string docstring (:issue:3420, :sha:e30297b)
  • Closes 3441 Remove py3 test whitelist Update rds to pass on py3 Update mturk to pass tests on py3 Update cloudsearchdomain tests to work with py3 (:issue:3441, :sha:5b2f552)
  • Run tests against py35 (:sha:7d039d0)
  • Fix Glacier test failure in python 3.5 due to MagicMock (:issue:3412, :sha:d042f07)
  • Undo log message change BF(PY3): use except ... as syntax instead of except ..., (:sha:607cad7)
  • Fix travis CI builds for PY3 (:issue:3439, :sha:22ab610)
  • Spelling fixes (:issue:3425, :sha:f43bbbd)
  • Fixed docs (:issue:3401, :sha:4f66311)
  • Add deprecation notice to emr methods (:issue:3422, :sha:cee6159)
  • Add some GovCloud endpoints (:issue:3421, :sha:5afc068)

django-storages-redux 1.3.0 -> 1.3.3

1.3.2


  • Fix memory leak from not closing underlying temp file in s3boto backend (106_)
  • Allow easily specifying a custom expiry time when generating a url for S3BotoStorage (96_)
  • Check for bucket existence when the empty path ('') is passed to storage.exists in S3BotoStorage -
    this prevents a crash when running collectstatic -c on Django 1.9.1 (112) fixed in 116

.. _106: jschneier/django-storages#106
.. _96: jschneier/django-storages#96
.. _112: jschneier/django-storages#112
.. _116: jschneier/django-storages#116

1.3.1


  • A few Azure Storage fixes [pass the content-type to Azure, handle chunked content, fix url] (45__)
  • Add support for a Dropbox (dropbox) storage backend
  • Various fixes to the apache_libcloud backend [return the number of bytes asked for by .read, make .name non-private, don't
    initialize to an empty BytesIO object] (55_)
  • Fix multi-part uploads in s3boto backend not respecting AWS_S3_ENCRYPTION (94_)
  • Automatically gzip svg files (100_)

.. __: jschneier/django-storages#45
.. _76: jschneier/django-storages#76
.. _55: jschneier/django-storages#55
.. _94: jschneier/django-storages#94
.. _100: jschneier/django-storages#100

Collectfast 0.2.3 -> 0.5.2

0.5.2

  • Fixes boto compatibility

0.5.1

0.5.0

  • Large refactoring and addition of integration tests
  • A few minor bugfixes

0.4.1

Fixes regression in 0.4.0.

0.4.0

0.4.0 introdu

@mik-laj
Copy link
Member

mik-laj commented Aug 12, 2017

Merge via b9039b0

@mik-laj mik-laj closed this Aug 12, 2017
@mik-laj mik-laj deleted the pyup-initial-update branch August 12, 2017 08:39
@mik-laj mik-laj restored the pyup-initial-update branch December 31, 2017 01:55
@mik-laj mik-laj deleted the pyup-initial-update branch December 31, 2017 02:02
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.

2 participants