Awesome Python has a "changelog" section under all projects. You can find it next to the "Repo" button in the header. There are two features that make it unique.

  1. It is an aggregation of parsed "" files and releases information from Github. This way, it is easier to see all changes in a single place and a uniform style.
  2. All changelogs are "emojified". This helps with identifying each change easier. Emojification is achieved by parsing each line and applying a specific emoji based on the first word or some other tokens.

The combination of the above two makes package changelogs on Awesome Python unique.

As you know, an example is worth a 1,000 words πŸš€

Changelog examples

  • SymPy 1.7.1 (December 12, 2020)

    πŸš€ See for the release notes.

    | Filename | Description | size | sha256 | | --- | --- | --- | --- | | sympy-1.7.1.tar.gz | The SymPy source installer. | 6.2M | a3de9261e97535b83bb8607b0da2c7d03126650fafea2b2789657b229c246b2e | | sympy-1.7.1-py3-none-any.whl | A wheel of the package. | 5.7M | c986df98babfb9f5ddea49ba7b69398f6d1cfada5ae0dc0431691cddaff851f6 | | | Html documentation. This is the same as the online documentation. | 29M | 3f64f05e8e9bf7723bfc26859d12840bfd4dec15225011e79c8c2786bf66ec15 | | sympy-docs-pdf-1.7.1.pdf | Pdf version of the html documentation. | 12M | 97f771ec4f1d381bdbc48f7ba68c413f03f8b8bef7a0fdb8c6d5a47d42141ac4 |

    Note : Do not download the Source code (zip) or the Source code (tar.gz)
    files below.

  • SciPy 1.6.0.rc1 (December 11, 2020)

    πŸš€ SciPy 1.6.0 Release Notes

    Note : Scipy 1.6.0 is not released yet!

    SciPy 1.6.0 is the culmination of 6 months of hard work. It contains
    βœ… many new features, numerous bug-fixes, improved test coverage and better
    πŸ“š documentation. There have been a number of deprecations and API changes
    πŸš€ in this release, which are documented below. All users are encouraged to
    πŸš€ upgrade to this release, as there are a large number of bug-fixes and
    ⬆️ optimizations. Before upgrading, we recommend that users check that
    πŸ—„ their own code does not use deprecated SciPy functionality (to do so,
    πŸ—„ run your code with python -Wd and check for DeprecationWarning s).
    πŸš€ Our development attention will now shift to bug-fix releases on the
    1.6.x branch, and on adding new features on the master branch.

    πŸš€ This release requires Python 3.7+ and NumPy 1.16.5 or greater.

    For running on PyPy, PyPy3 6.0+ is required.

    πŸš€ Highlights of this release

    • πŸ›  scipy.ndimage improvements: Fixes and ehancements to boundary extension
      πŸ‘ modes for interpolation functions. Support for complex-valued inputs in many
      filtering and interpolation functions. New grid_mode option for
      scipy.ndimage.zoom to enable results consistent with scikit-image's
    • ⚑️ scipy.optimize.linprog has fast, new methods for large, sparse problems
      from the HiGHS library.
    • βœ… scipy.stats improvements including new distributions, a new test, and
      ✨ enhancements to existing distributions and tests

    πŸ†• New features

    scipy.special improvements

    πŸ‘ scipy.special now has improved support for 64-bit LAPACK backend

    scipy.odr improvements

    πŸ‘ scipy.odr now has support for 64-bit integer BLAS

    scipy.odr.ODR has gained an optional overwrite argument so that existing
    files may be overwritten.

    scipy.integrate improvements

    Some renames of functions with poor names were done, with the old names
    retained without being in the reference guide for backwards compatibility

    • integrate.simps was renamed to integrate.simpson
    • integrate.trapz was renamed to integrate.trapezoid
    • integrate.cumtrapz was renamed to integrate.cumulative_trapezoid

    scipy.cluster improvements

    scipy.cluster.hierarchy.DisjointSet has been added for incremental
    connectivity queries.

    scipy.cluster.hierarchy.dendrogram return value now also includes leaf color
    information in leaves_color_list.

    scipy.interpolate improvements

    scipy.interpolate.interp1d has a new method nearest-up, similar to the
    existing method nearest but rounds half-integers up instead of down. improvements

    πŸ‘Œ Support has been added for reading arbitrary bit depth integer PCM WAV files
    from 1- to 32-bit, including the commonly-requested 24-bit depth.

    scipy.linalg improvements

    The new function scipy.linalg.matmul_toeplitz uses the FFT to compute the
    product of a Toeplitz matrix with another matrix.

    🐎 scipy.linalg.sqrtm and scipy.linalg.logm have performance improvements
    thanks to additional Cython code.

    Python LAPACK wrappers have been added for pptrf, pptrs, ppsv,
    pptri, and ppcon.

    scipy.linalg.norm and the svd family of functions will now use 64-bit
    integer backends when available.

    scipy.ndimage improvements

    scipy.ndimage.convolve, scipy.ndimage.correlate and their 1d counterparts
    now accept both complex-valued images and/or complex-valued filter kernels. All
    convolution-based filters also now accept complex-valued inputs
    (e.g. gaussian_filter, uniform_filter, etc.).

    πŸ›  Multiple fixes and enhancements to boundary handling were introduced to
    scipy.ndimage interpolation functions (i.e. affine_transform,
    geometric_transform, map_coordinates, rotate, shift, zoom).

    A new boundary mode, grid-wrap was added which wraps images periodically,
    using a period equal to the shape of the input image grid. This is in contrast
    to the existing wrap mode which uses a period that is one sample smaller
    🚦 than the original signal extent along each dimension.

    πŸ›  A long-standing bug in the reflect boundary condition has been fixed and
    the mode grid-mirror was introduced as a synonym for reflect.

    A new boundary mode, grid-constant is now available. This is similar to
    the existing ndimage constant mode, but interpolation will still performed
    at coordinate values outside of the original image extent. This
    grid-constant mode is consistent with OpenCV's BORDER_CONSTANT mode
    and scikit-image's constant mode.

    Spline pre-filtering (used internally by ndimage interpolation functions
    πŸ‘ when order >= 2), now supports all boundary modes rather than always
    0️⃣ defaulting to mirror boundary conditions. The standalone functions
    spline_filter and spline_filter1d have analytical boundary conditions
    that match modes mirror, grid-wrap and reflect.

    scipy.ndimage interpolation functions now accept complex-valued inputs. In
    this case, the interpolation is applied independently to the real and
    imaginary components.

    The ndimage tutorials
    πŸ“„ ( have been
    ⚑️ updated with new figures to better clarify the exact behavior of all of the
    interpolation boundary modes.

    scipy.ndimage.zoom now has a grid_mode option that changes the coordinate
    of the center of the first pixel along an axis from 0 to 0.5. This allows
    resizing in a manner that is consistent with the behavior of scikit-image's
    resize and rescale functions (and OpenCV's cv2.resize).

    ⚑️ scipy.optimize improvements

    ⚑️ scipy.optimize.linprog has fast, new methods for large, sparse problems from
    🐎 the HiGHS C++ library. method='highs-ds' uses a high performance dual
    revised simplex implementation (HSOL), method='highs-ipm' uses an
    interior-point method with crossover, and method='highs' chooses between
    the two automatically. These methods are typically much faster and often exceed
    the accuracy of other linprog methods, so we recommend explicitly
    specifying one of these three method values when using linprog.

    ⚑️ scipy.optimize.quadratic_assignment has been added for approximate solution
    of the quadratic assignment problem.

    scipy.optimize.linear_sum_assignment now has a substantially reduced overhead
    for small cost matrix sizes

    🐎 scipy.optimize.least_squares has improved performance when the user provides
    πŸ“œ the jacobian as a sparse jacobian already in csr_matrix format

    ⚑️ scipy.optimize.linprog now has an rr_method argument for specification
    of the method used for redundancy handling, and a new method for this purpose
    is available based on the interpolative decomposition approach.

    🚦 scipy.signal improvements

    🚦 scipy.signal.gammatone has been added to design FIR or IIR filters that
    model the human auditory system.

    🚦 scipy.signal.iircomb has been added to design IIR peaking/notching comb
    🚦 filters that can boost/attenuate a frequency from a signal.

    🐎 scipy.signal.sosfilt performance has been improved to avoid some previously-
    observed slowdowns

    🏁 has been added--the Taylor window function is
    🚦 commonly used in radar digital signal processing

    🚦 scipy.signal.gauss_spline now supports list type input for consistency
    with other related SciPy functions

    🚦 scipy.signal.correlation_lags has been added to allow calculation of the lag/
    displacement indices array for 1D cross-correlation.

    πŸ“œ scipy.sparse improvements

    A solver for the minimum weight full matching problem for bipartite graphs,
    also known as the linear assignment problem, has been added in
    scipy.sparse.csgraph.min_weight_full_bipartite_matching. In particular, this
    provides functionality analogous to that of
    scipy.optimize.linear_sum_assignment, but with improved performance for sparse
    inputs, and the ability to handle inputs whose dense representations would not
    fit in memory.

    πŸ“œ The time complexity of scipy.sparse.block_diag has been improved dramatically
    from quadratic to linear.

    πŸ“œ scipy.sparse.linalg improvements

    ⚑️ The vendored version of SuperLU has been updated

    scipy.fft improvements

    πŸ‘ The vendored pocketfft library now supports compiling with ARM neon vector
    extensions and has improved thread pool behavior.

    scipy.spatial improvements

    The python implementation of KDTree has been dropped and KDTree is now
    implemented in terms of cKDTree. You can now expect cKDTree-like
    🐎 performance by default. This also means sys.setrecursionlimit no longer
    needs to be increased for querying large trees.

    ⚑️ transform.Rotation has been updated with support for Modified Rodrigues
    Parameters alongside the existing rotation representations (PR gh-12667).

    scipy.spatial.transform.Rotation has been partially cythonized, with some
    🐎 performance improvements observed

    🐎 scipy.spatial.distance.cdist has improved performance with the minkowski
    metric, especially for p-norm values of 1 or 2.

    scipy.stats improvements

    πŸ†• New distributions have been added to scipy.stats:

    • The asymmetric Laplace continuous distribution has been added as
    • The negative hypergeometric distribution has been added as scipy.stats.nhypergeom.
    • The multivariate t distribution has been added as scipy.stats.multivariate_t.
    • The multivariate hypergeometric distribution has been added as scipy.stats.multivariate_hypergeom.

    The fit method has been overridden for several distributions (laplace,
    pareto, rayleigh, invgauss, logistic, gumbel_l,
    gumbel_r); they now use analytical, distribution-specific maximum
    likelihood estimation results for greater speed and accuracy than the generic
    (numerical optimization) implementation.

    βœ… The one-sample CramΓ©r-von Mises test has been added as

    βœ… An option to compute one-sided p-values was added to scipy.stats.ttest_1samp,
    scipy.stats.ttest_ind_from_stats, scipy.stats.ttest_ind and
    βœ… scipy.stats.ttest_rel.

    The function scipy.stats.kendalltau now has an option to compute Kendall's
    πŸ‘ tau-c (also known as Stuart's tau-c), and support has been added for exact
    p-value calculations for sample sizes > 171.

    stats.trapz was renamed to stats.trapezoid, with the former name retained
    as an alias for backwards compatibility reasons.

    The function scipy.stats.linregress now includes the standard error of the
    intercept in its return value.

    The _logpdf, _sf, and _isf methods have been added to
    scipy.stats.nakagami; _sf and _isf methods also added to

    The sf method has been added to scipy.stats.levy and scipy.stats.levy_l
    for improved precision.

    scipy.stats.binned_statistic_dd performance improvements for the following
    computed statistics: max, min, median, and std.

    We gratefully acknowledge the Chan-Zuckerberg Initiative Essential Open Source
    πŸ‘ Software for Science program for supporting many of these improvements to

    πŸ—„ Deprecated features

    scipy.spatial changes

    πŸ—„ Calling KDTree.query with k=None to find all neighbours is deprecated.
    Use KDTree.query_ball_point instead.

    πŸ—„ distance.wminkowski was deprecated; use distance.minkowski and supply
    weights with the w keyword instead.

    Backwards incompatible changes

    scipy changes

    🚚 Using scipy.fft as a function aliasing numpy.fft.fft was removed after
    πŸ—„ being deprecated in SciPy 1.4.0. As a result, the scipy.fft submodule
    πŸ“¦ must be explicitly imported now, in line with other SciPy subpackages.

    🚦 scipy.signal changes

    The output of decimate, lfilter_zi, lfiltic, sos2tf, and
    sosfilt_zi have been changed to match numpy.result_type of their inputs.

    🚚 The window function slepian was removed. It had been deprecated since SciPy

    scipy.spatial changes

    🏁 cKDTree.query now returns 64-bit rather than 32-bit integers on Windows,
    making behaviour consistent between platforms (PR gh-12673).

    scipy.stats changes

    The frechet_l and frechet_r distributions were removed. They were
    πŸ—„ deprecated since SciPy 1.0.

    Other changes

    🚚 setup_requires was removed from This means that users
    invoking python install without having numpy already installed
    will now get an error, rather than having numpy installed for them via
    easy_install. This install method was always fragile and problematic, users
    are encouraged to use pip when installing from source.

    • Fixed a bug in scipy.optimize.dual_annealing accept_reject calculation
      that caused uphill jumps to be accepted less frequently.
    • The time required for (un)pickling of scipy.stats.rv_continuous,
      scipy.stats.rv_discrete, and scipy.stats.rv_frozen has been significantly
      reduced (gh12550). Inheriting subclasses should note that __setstate__ no
      longer calls __init__ upon unpickling.


    • @endolith
    • @vkk800
    • aditya +
    • George Bateman +
    • Christoph Baumgarten
    • Peter Bell
    • Tobias Biester +
    • Keaton J. Burns +
    • Evgeni Burovski
    • RΓΌdiger Busche +
    • Matthias Bussonnier
    • Dominic C +
    • Corallus Caninus +
    • CJ Carey
    • Thomas A Caswell
    • chapochn +
    • LucΓ­a Cheung
    • Zach Colbert +
    • Coloquinte +
    • Yannick Copin +
    • Devin Crowley +
    • Terry Davis +
    • MichaΓ«l Defferrard +
    • devonwp +
    • Didier +
    • divenex +
    • Thomas Duvernay +
    • Eoghan O'Connell +
    • GΓΆkΓ§en Eraslan
    • Kristian Eschenburg +
    • Ralf Gommers
    • Thomas Grainger +
    • GreatV +
    • Gregory Gundersen +
    • h-vetinari +
    • Matt Haberland
    • Mark Harfouche +
    • He He +
    • Alex Henrie
    • Chun-Ming Huang +
    • Martin James McHugh III +
    • Alex Izvorski +
    • Joey +
    • ST John +
    • Jonas Jonker +
    • Julius Bier Kirkegaard
    • Marcin Konowalczyk +
    • Konrad0
    • Sam Van Kooten +
    • Sergey Koposov +
    • Peter Mahler Larsen
    • Eric Larson
    • Antony Lee
    • Gregory R. Lee
    • LoΓ―c EstΓ¨ve
    • Jean-Luc Margot +
    • MarkusKoebis +
    • Nikolay Mayorov
    • G. D. McBain
    • Andrew McCluskey +
    • Nicholas McKibben
    • Sturla Molden
    • Denali Molitor +
    • Eric Moore
    • Shashaank N +
    • Prashanth Nadukandi +
    • nbelakovski +
    • Andrew Nelson
    • Nick +
    • Nikola ForrΓ³ +
    • odidev
    • ofirr +
    • Sambit Panda
    • Dima Pasechnik
    • Tirth Patel +
    • PaweΕ‚ RedzyΕ„ski +
    • Vladimir Philipenko +
    • Philipp ThΓΆlke +
    • Ilhan Polat
    • Eugene Prilepin +
    • Vladyslav Rachek
    • Ram Rachum +
    • Tyler Reddy
    • Martin Reinecke +
    • Simon Segerblom Rex +
    • Lucas Roberts
    • Benjamin Rowell +
    • Eli Rykoff +
    • Atsushi Sakai
    • Moritz Schulte +
    • Daniel B. Smith
    • Steve Smith +
    • Jan Soedingrekso +
    • Victor Stinner +
    • Jose Storopoli +
    • Diana Sukhoverkhova +
    • SΓΈren Fuglede JΓΈrgensen
    • taoky +
    • Mike Taves +
    • Ian Thomas +
    • Will Tirone +
    • Frank Torres +
    • Seth Troisi
    • Ronald van Elburg +
    • Hugo van Kemenade
    • Paul van Mulbregt
    • Saul Ivan Rivas Vega +
    • Pauli Virtanen
    • Jan Vleeshouwers
    • Samuel Wallan
    • Warren Weckesser
    • Ben West +
    • Eric Wieser
    • WillTirone +
    • Levi John Wolf +
    • Zhiqing Xiao
    • Rory Yorke +
    • Yun Wang (Maigo) +
    • Egor Zemlyanoy +
    • ZhihuiChen0903 +
    • Jacob Zhong +

    πŸš€ A total of 121 people contributed to this release.
    People with a "+" by their names contributed a patch for the first time.
    This list of names is automatically generated, and may not be fully complete.

  • kivy 2.0.0 (December 10, 2020)

    πŸš€ The Kivy team is happy to announce the release of Kivy 2.0.0.

    Kivy is a full-featured framework for creating novel and performant user
    πŸš€ interfaces, such as multi-touch applications, released under the MIT license.
    🍎 The framework works on Windows, macOS, Linux, Android, iOS and Raspberry Pi.

    • πŸš€ This is the first release to not support Python 2.7 - hence the increase in Kivy's major version to 2. Currently supported Python versions are 3.6 - 3.9.
    • πŸ‘€ Installation has been largely simplified and all platforms now support a simpler pip install (see below).

    πŸ“š Installation instructions and Kivy documentation is available on the Kivy website:

    πŸš€ or on GitHub.

    Installation notes

    🐧 Kivy can now be installed into your Virtual Environment on Windows, Linux, OSX, and RPi simply with:

    pip install kivy[base] kivy-examples
    # or to get the media dependecies as well
    pip install kivy[base,media] kivy-examples
    # or to get most kivy optional dependencies
    pip install kivy[full] kivy-examples

    * For the RPi, additional system dependencies should be pre-installed.

    πŸ“Œ These selectors allow specifying dependency categories, instead of having to pin Kivy's kivy_deps dependencies to specific versions. These selectors will install the proper dependency version to match Kivy's version.

    βž• Additionally, by default, Kivy will install the base dependencies even if base is not specified. In order to facilitate easier install for GUI installation users e.g. in PyCharm. However, this may change as pip evolves and base should be manually specified. Use pip's --no-deps flag to disable it.

    πŸ“š See the selector documentation for more details.

    πŸ‘€ Installation from source has also been simplified, relying on pip's pyproject.toml. See the simplified instructions.


    πŸ‘ [#6351]: Support for Python 2 has been dropped and Kivy source code is now incompatible with Python 2.

    πŸ‘ [#6368]: Support for async has been added to Kivy. Kivy can now run cooperatively, in the same process or thread as asynchronous code.

    πŸ‘€ We currently support the stdlib asyncio framework and the excellent trio framework. See the kivy examples for how to use it.

    πŸ’₯ Breaking changes

    • πŸ‘ [#6351]: Core: Drop Python 2 support.
    • πŸ‘ [#6368]: Core: Add async support to kivy App
    • [#6448]: EventDispatcher: Move __self__ from widget to EventDispatcher and fix tests.
    • [#6467]: Graphics: Change filename to source
    • ⚑️ [#6469]: ModalView: Updating ModalView to improve theming
    • [#6607]: Window: Fix SDL Keycode Typo
    • [#6650]: DropDown/ModalView: Make modal and dropdown consistent
    • 🚚 [#6677]: Widget: Remove id from Widget.
    • [#6678]: ScrollView: Add always_enable_overscroll property on scrollview
    • 🚚 [#6721]: Image: Remove gpl gif implementation
    • [#6918]: ColorProperty: Use ColorProperty instead of ListProperty for color property
    • [#6937]: Base: Rename slave to embedded
    • [#6950]: Cache: Raise KeyError if None is used as key in Cache

    πŸ”„ Changelog


    • πŸ— [#6442]: KV lang: Make it easy to copy Builder and Factory and make them all contexts.
    • [#6548]: Factory: Meaningful Error Message
    • 0️⃣ [#6880]: KV: Use utf-8 encoding by default on reading .kv files. Fixes #5154


    • [#6323]: Loader: User agent was not correctly resolved.
    • πŸ›  [#6658]: Garden: Fixes incorrect path to kivy garden libs on iOS
    • [#6703]: Network: Fix https in python3.x
    • [#6748]: Network: Extend certifi usage to ios
    • [#6922]: WeakMethod: Fx and cleanup WeakMethod usage
    • [#6931]: VIM: Fix and improve vim syntax highlighting for kv lang
    • ⏱ [#6945]: Cache: Don't double copy keys when purging cache by timeout
    • [#6950]: Cache: Raise KeyError if None is used as key in Cache
    • πŸ›  [#6954]: Network: Ignore ca_file on http scheme, fixes #6946
    • [#7054]: Networking: User Agent and Cookies added to UrlRequest


    • [#6359]: Packaging: Fix path by setting to bytes
    • πŸ‘€ [#6643]: PyInstaller: List kivy.weakmethod because pyinstaller doesn't see into cython files
    • [#6772]: PyInstaller: window_info is not included in x86 pyinstaller
    • [#7080]: OSX: Generate on the CI


    • [#6288]: TextInput: Cache text property in TextInput
    • [#6362]: Carousel: Let 'Carousel._curr_slide()' prepare for the situation where 'index' is None
    • 🚚 [#6365]: Carousel: Let 'Carousel.remove_widget()' remove the container of the widget
    • 🚚 [#6372]: Carousel: make 'Carousel.remove_widget()' not cause 'IndexError'
    • [#6374]: Carousel: Make 'Carousel' able to handle the case where 'loop == True' and 'len(slides) == 2'
    • 🚚 [#6436]: ColorWheel: Remove bug in algorithm to compute arcs of colorwheel (#6435)
    • ⚑️ [#6469]: ModalView: Updating ModalView to improve theming
    • [#6481]: ScreenManager: Make clear_widgets correctly iterate over screens
    • πŸ›  [#6542]: TextInput: Fixes TextInput Bubble from diseappering immediately after it appears
    • πŸ›  [#6543]: TextInput: Fixes TextInput cursor "rendering" issue
    • [#6574]: TreeViewNode: Fix arrow pos and size
    • [#6579]: Slider: Horizontal value track is offset from the center of Slider
    • [#6624]: Filechooser: Use full path
    • [#6650]: DropDown/ModalView: Make modal and dropdown consistent
    • [#6666]: TextInput: Fix for crashes caused by text selection outside of TextInput area
    • [#6678]: ScrollView: Add always_enable_overscroll property on scrollview
    • [#6741]: GridLayout: Add 'orientation' property to GridLayout
    • πŸ›  [#6815]: Image: Fixes for Image and AsyncImage
    • πŸ’… [#6859]: Slider: Adding allow_stretch to Slider in style.kv
    • [#6879]: VKeyboard: Fix key_background_color property not used
    • [#6897]: RecycleView: Add behavior to set RV data using kv ids
    • [#6905]: FileChooser: Add font property
    • 🚚 [#6912]: TextInput: Remove 'encode' argument from getter method of 'text' property of TextInput
    • [#6918]: ColorProperty: Use ColorProperty instead of ListProperty for color property
    • [#6942]: ScrollView: Don't crash when scrollview's content is the same size
    • πŸ“„ [#6971]: Camera: Fix an inconsistency between docs and code on Camera
    • [#6976]: ModalView: Prevent modalview dismissal without on_touch_down
    • [#6985]: ScrollView: Fix scrollview scroll/effect recursion
    • πŸ‘ [#7009]: TextInput: IME support for textinput
    • [#7021]: ColorProperty: Use ColorProperty for remaining color properites
    • [#7032]: ScreenManager: Fix typo in SlideTransition
    • [#7069]: ScrollView: Horizontal scrolling disabled if no overflow
    • [#7074]: Splitter: Fix handling offset
    • ⚑️ [#7118]: GridLayout : optimize GridLayout
    • [#7129]: TabbedPanel: Stop tab buttons from scrolling around
    • [#7196]: ScrollView: fix jumping to bottom when using scrollwheel.


    • πŸ‘ [#6351]: Core: Drop Python 2 support.
    • πŸ‘ [#6368]: Core: Add async support to kivy App
    • [#6376]: Cython: Set cython language_level to py3.
    • [#6381]: Inspector: Use sets to check if inspector should be activated.
    • [#6404]: App: Fix pausing without app instance
    • [#6458]: Core: Fix memory leaks by cleaning up after resources
    • [#6540]: Config: fix erroneous check of KIVY_NO_ENV_CONFIG
    • [#6581]: Dependencies: Bump max cython version
    • [#6729]: DDSFile: fix for string/bytes comparing for py3
    • [#6773]: Clock: Add correct value of CLOCK_MONOTONIC for OpenBSD
    • [#6798]: Platform: Corrected platform detection on Android
    • [#6910]: Logger: Add encoding
    • πŸ‘» [#6926]: Clock: Add clock lifecycle, better exception handling and other cleanup
    • [#6937]: Base: Rename slave to embedded
    • [#6994]: EventLoop: Don't do event loop stuff when stopped.
    • πŸ“‡ [#7083]: Core: Add and move updating version metadata to the CI
    • [#7112]: Python: Require python version >=3.6
    • πŸ‘ [#7132]: Python: Add support for Python 3.9.
    • [#7151]: Dependencies: Bump cython to 0.29.21
    • [#7178]: Dependencies: Add dependency selection varaibles
    • 🌲 [#7181]: Logging: Added color support for compatible terminals


    • [#6384]: Window: Allow window providers to indicate which gl backends they are compatible with
    • πŸ›  [#6422]: Label: Fixes multiline label w/ line_height < 1
    • 🍎 [#6433]: Window: Center cache problem on MacOS
    • [#6461]: Audio: Fix playing audio streams from ffpyplayer
    • βͺ [#6507]: Text: Revert "Fixes multiline label w/ line_height < 1"
    • β†ͺ [#6513]: Text: Fix issue #6508 Multiline label w/ line_height < 1 renders badly (workaround)
    • πŸ›  [#6515]: Text: Fixes positioning (valign) issue when using max_lines
    • 🐎 [#6578]: Window: Revert swap forced sync (#4219) as it causes performance issue
    • [#6589]: Window: Add the ability to show statusbar on iOS
    • πŸ‘ [#6603]: Audio: Native audio support for Android
    • [#6607]: Window: Fix SDL Keycode Typo
    • πŸ—„ [#6608]: Audio: Replace deprecated variables in audio providers
    • 🚚 [#6721]: Image: Remove gpl gif implementation
    • [#6743]: Clipboard: xclip less verbose Kivy startup
    • 🚩 [#6754]: Text: Properly raise errors reading a font
    • [#6947]: Image: Remove 'img_gif' entry from image_libs
    • [#6988]: Camera: Improve avfoundation camera implementation on iOS
    • πŸ”§ [#7071]: Camera: Fixes crash during camera configuration
    • [#7102]: Audio: Added loop functionality for SoundAndroidPlayer


    • [#5926]: Animation: Fix kivy.animation.Sequence and kivy.animation.Parallel consistency
    • [#6373]: Properties: Allow observable list and dict dispatch to propagate exceptions.
    • 🚚 [#6441]: EventDispatcher: Move Widget proxy_ref upwards to EventDispatcher
    • 0️⃣ [#6443]: Property: Initialize KV created property with default value
    • [#6448]: EventDispatcher: Move __self__ from widget to EventDispatcher and fix tests.
    • 🚚 [#6677]: Widget: Remove id from Widget.
    • ⚑️ [#6858]: Effects: Fix update_velocity
    • [#6917]: ColorProperty: Re-add ColorProperty to all list in properties.pyx module
    • [#6930]: Property: Use ObservableList as internal storage for ColorProperty
    • [#6941]: Property: Let ColorProperty accept arbitrary list types.
    • [#6965]: Property: Allow assignment of color names as values for ColorProperty
    • [#6993]: Property: Add kwargs to 'sort' method of ObservableList


    • 🚚 [#6354]: Dependecy: Move cython version info to setup.cfg.
    • [#6355]: Dependency: kivy_deps need to be imported before any modules.
    • πŸ— [#6356]: Dependency: Bump cython to 0.29.10 to fix CI building.
    • πŸ“¦ [#6397]: Install: Automatically discover kivy sub-packages
    • [#6562]: RPi: Autodetect when we are on a Raspberry Pi 4
    • [#6568]: CI: Cross compile wheel for armv7l (Raspberry Pi 4) using Github Actions CI
    • πŸ“‡ [#6642]: Install: Switch to using pyproject.toml and setup.cfg for metadata
    • πŸ“¦ [#6656]: Wheel: Don't package examples in the wheel
    • [#6662]: CI: Compile wheels for Raspberry Pi 1-3 using the CI
    • πŸ‘· [#6670]: Dependencies: Fix CI PyPI upload and pin to latest kivy_deps versions.
    • [#6674]: Sdist: Cannot handle carriage return in description.
    • [#6769]: RPi: Kivy now works on the Raspberry Pi 4 without X11
    • πŸ— [#6774]: Install: Build the extensions in parallel if the options has not been set
    • [#6852]: Platform: Fix android platform detection when using p4a
    • [#6854]: Install: Reuse kivy_build var (complements #6852)
    • ⚑️ [#6891]: Cython: Update to latest cython version
    • [#6990]: Installation: Make setuptools use its local distutils
    • [#7084]: Dependencies: Add min basic dependencies to install requirements.
    • πŸ‘ [#7110]: Makefile: Detect python verion and gracefully fail on unsupported version
    • πŸ— [#7152]: RPi: Stop building wheels for RPi stretch
    • [#7154]: Anconda: Respect SDKROOT and use_osx_frameworks
    • [#7157]: Makefile: Try python3 first as python may point to python2.
    • [#7159]: Makefile: Use python3 if it's present.
    • [#7195]: Inlcude doc in PR checklist

    πŸ“š Documentation

    • βͺ [#6352]: Docs: force to use sphinx 1.7.9 to restore search
    • πŸ“„ [#6377]: Docs: Embed func signatures in cython to help IDEs.
    • [#6383]: Doc: Create FUNDING.yml
    • ⚑️ [#6389]: Doc: Fix linux install docs and update garden instructions
    • ⚑️ [#6398]: Doc: Update - Corrected typo
    • [#6399]: Doc: Fix pip link
    • [#6427]: Doc: Add comment on required pip version
    • πŸ“„ [#6459]: Docs: fix wrong highlights
    • ⚑️ [#6466]: Docs: Config docs update
    • [#6478]: Examples: Fix lack of white-space after ":" in pong.kv
    • ✏️ [#6479]: Doc: Fix typos, grammar in install instructions
    • [#6485]: Doc: Fix KIVY_EVENTLOOP doc
    • [#6491]: Doc: Fix Widget.pos_hint doc
    • πŸ›  [#6510]: Doc: Few minor fixes in the doc.
    • ⚑️ [#6511]: Doc: Update note about kivy-ios python version
    • 🚚 [#6523]: Doc: Remove reference to Kivy Designer
    • [#6537]: Doc: fix GridLayout doc
    • πŸ›  [#6558]: Examples: Fixed depreciated option for twisted, and sys.exc_call is only run in py2
    • ⚑️ [#6625]: Doc: Update
    • [#6636]: Example: Missing directory replaced in colorpicker #6599
    • πŸ“„ [#6638]: Docs: Fix typo
    • ✏️ [#6641]: Doc: Fix TextInput typos cursor row/col
    • [#6683]: Doc: Fix spinner kv example
    • πŸ“„ [#6694]: Doc: Fix css on docs
    • 🏁 [#6712]: Doc: Revisit of the Windows installation instructions
    • [#6714]: Doc: Fix spelling errors
    • ⚑️ [#6750]: Doc: Update packaging-windows.rst
    • πŸ“š [#6775]: Doc: Fixed the gallery documentation
    • ⚑️ [#6778]: Doc: Updated Raspberry Pi 4 doc on HW acceleration
    • [#6780]: Doc: Make RPi SDL2 install instructions clear
    • πŸ›  [#6813]: Example: bugfix for 3D rendering example
    • πŸ“„ [#6821]: Doc: Expand on the current logger docs
    • [#6863]: Doc: Add missing hid input parameter
    • [#6868]: Doc: iOS - migrates to the new install procedure
    • [#6882]: Example: Improved ScreenManager example
    • [#6895]: Doc: Add annotations to proxies.
    • πŸ— [#6924]: Doc: Buildozer is now in Beta.
    • πŸ“„ [#6927]: Doc: Improvements to kv lang docs
    • πŸ“š [#6938]: Doc: trigger_action warning / documentation updates
    • [#6963]: Doc: Correct comments to use proportion, not percent
    • πŸ“„ [#6969]: Doc: Fix docs for on_dropfile
    • ⚑️ [#6975]: Doc: Update the dev installation instructions
    • [#6977]: Doc: Add some typing to clock
    • 🚚 [#6979]: Doc: Remove duplicate python3-pip
    • [#7002]: Doc: Print about KIVY_NO_ARGS when printing usage.
    • ⚑️ [#7022]: Doc: Update doc for all instances of ColorProperty
    • [#7038]: Doc: Fix on_ref_press documentation
    • πŸ›  [#7039]: Doc: fixed typo in hbar doc string
    • πŸ›  [#7043]: Doc: fixed doc string
    • [#7160]: Examples: Add Recycleview examples
    • πŸ“„ [#7179]: Docs: Switch to staging docs on kivy-website-docs
    • πŸ“„ [#7222]: Docs: minor typo fix in layout docs
    • πŸ“„ [#7240]: Docs: Re-write install docs.
    • πŸ“„ [#7241]: Docs: Add changelog to docs


    • [#6457]: Graphics: Fix "Error in sys.excepthook"
    • [#6467]: Graphics: Change filename to source
    • [#6472]: Graphics: Fix relative import for the egl backend
    • πŸ›  [#6533]: Graphics: Fixes fbo/renderbuffer freeze on iOS
    • πŸ‘ [#6702]: Graphics: Adding support for non-file SVGs
    • [#6777]: Graphics: Also set points _mode propery to LINE_MODE_POINTS
    • [#6808]: Graphics: Fix Svg consistency #6467
    • [#6844]: Graphics: Use GLES context when ES2 is forced
    • βͺ [#6846]: Graphics: Revert "Use GLES context when ES2 is forced"
    • [#6978]: Graphics: fix ignored alpha value in hsv mode


    • πŸ“¦ [#6319]: Mouse: Fix ctypes definition to work with other packages
    • πŸ‘ [#7065]: Mouse: Added support for the mouse4 and mouse5 buttons

    βœ… Tests/ci

    • πŸ‘· [#6375]: CI: Fix CI failure, 3.5.7 doesn't have compiled binaries.
    • πŸ‘€ [#6390]: CI: Python 3.5 doesn't seem to work anymore on travis bionic.
    • πŸ— [#6403]: CI: Remove osx workarounds as it breaks the build.
    • 🌐 [#6415]: Test: Add tests for coordinates translation
    • βœ… [#6417]: Test: Add preliminary support for coverage for kv files.
    • πŸ‘‰ [#6482]: CI: Remove usage of KIVY_USE_SETUPTOOLS
    • πŸ— [#6503]: CI: Fix rtd builds
    • βœ… [#6514]: Test: Add test method for touch to follow a widget's position
    • πŸ“„ [#6516]: CI: Don't use the Window when computing dp during docs generation
    • πŸ— [#6554]: CI: Build latest .DMG for osx app
    • ⚑️ [#6556]: CI: Update .travis.yml for osx app on master
    • βœ… [#6565]: Test: Add ability to specify offset from widget pos
    • [#6570]: CI: Enable Python 3.8 wheel generation for osx
    • βœ… [#6595]: Tests: Fix test failures in Python 3.8 (fixes #6594)
    • βœ… [#6618]: Test: Don't preset async_sleep
    • [#6622]: CI: Switch from Travis/Appveyor to GitHub Actions
    • πŸ— [#6659]: CI: Use pip to build wheel so it uses pyproject.toml.
    • βœ… [#6669]: CI: Test generated wheels and sdist
    • βœ… [#6673]: CI: Latest twine doesn't support py3.5
    • [#6681]: CI: Switch to flake8 and fix PEP8 issues
    • [#6682]: CI: Create all the wheels before doing any uploads
    • ⚑️ [#6771]: GitHub: Update issue templates to new format
    • βœ… [#6845]: Tests: Fix failing tests
    • ⬆️ [#6855]: CI: Upgrade to actions/[email protected] & actions/[email protected]
    • βœ… [#6892]: Test: Fix failing coverage
    • 🐧 [#6940]: CI: Fix linux SDL2
    • ♻️ [#6951]: Tests: Refactors
    • 🚚 [#7115]: CI: Remove mcnotify integration
    • [#7147]: PEP8: Fix PEP8 issues
    • 🚚 [#7174]: Tests: Warn that async app test framewrok may be removed from kivy.
    • βœ… [#7201]: CI: Test all wheel versions, not just one per OS
    • βœ… [#7203]: Tests: Ensure Bubble uses it's superclass's valid private API


    ⚑️ The new stable branch is now derived from the 2.0.0 tag. The oldest stable branch has been renamed to stable-1.11.1. If you still want to compile on android with this branch, use "kivy==stable-1.11.1" as requirement. We do not support previous versions, so if things doesn't work anymore due to changes in python-for-android, please take time to update your application.


    A big thanks to all of the Contributors, especially those github usernames mentioned here:

    0x005c, Abenezer Adane, Akshay Arora, Alexander Taylor, Andre Miras, Andreas Ecker, Armin Sebastian, Asad Rauf, Cheaterman, Chris Hamberg, Christian Sirolli, CristiFati, D4SK, Daniel, ElliotGarbus, Evstifeev Roman, Felix Yan, Filip RadoviΔ‡, Franccisco, Francisco Bustos, Gabriel Pettier, Gabriel Vogel, Galland, Holger Badorreck, Howard Chang, Hudson Barkley, Ibrahim Cetin, Ivan Djuricic, Joao S O Bueno, Jordan Emerson, Joseph Kogut, Julian, Julian-O, Juraj Fiala, Kristian Sloth Lauszus, Lucas Samaruga, Ludwig Kraatz, Mathias LindstrΓΆm, Mathieu Virbel, Matthew Einhorn, Matthias Harrer, Michal SmrΕΎ, Mirko, Mirko Galimberti, Niklas Hasselmeyer, Nikolay Sedelnikov, Nils-Hero Lindemann, Olivier Boesch, Pol Canelles, Rafa, RafaΕ‚ KropidΕ‚owski, Richard Larkin, Sander Land, Sebastian Engel, Shashi Ranjan, Vibhakar Solanki, WutDuk?, Zachary Spector, Zen-CODE, akshauaurora, bajisci, chadys, comet, crigaut, eriksandberg, fluxrider, fruitbat, gottadiveintopython, ia7ck, luphord, matham, noEmbryo, pythonic64, quitegreensky, rafalou38, s0h3ck, salt-die, samize, sanderland, shreyash, snuq, td1803, vicendithas, wezu, yves-surrel, ζ°΄ζˆΈγ†η΄θ±†ι½‹(Nattōsai Mitō)

    Hope we mentioned them all.

    Kivy Team