logassert is a simple log assertion mechanism for Python unittests.
Why? As is vox populi, you must also test the logging calls in your
programs. With logassert this is now very easy.
In this version:
- Simple way to check that nothing was logged (on any level or a specific one):
assert NOTHING in logs.debug
- Helper to check that several lines were logged one after the other:
"Got 1 error and \d+ warnings:",
Exact(" error: bar"),
) in logs.debug
- Show proper message when "not in" assertion is used (thanks Diego Mascialino)
I'm glad to announce the release of psutil 5.7.3:
https://github.com/giampaolo/psutilHere's a blog post explaining the
highlights in detail:
psutil (process and system utilities) is a cross-platform library for
retrieving information on running processes and system utilization (CPU,
memory, disks, network) in Python. It is useful mainly for system
monitoring, profiling and limiting process resources and management of
running processes. It implements many functionalities offered by command
line tools such as: ps, top, lsof, netstat, ifconfig, who, df, kill, free,
nice, ionice, iostat, iotop, uptime, pidof, tty, taskset, pmap. It
currently supports Linux, Windows, macOS, Sun Solaris, FreeBSD, OpenBSD,
NetBSD and AIX, both 32-bit and 64-bit architectures. Supported Python
versions are 2.6, 2.7 and 3.4+. PyPy is also known to work.
- 809: [FreeBSD] add support for `Process.rlimit()`.
- 893: [BSD] add support for `Process.environ()` (patch by Armin Gruner)
- 1830: [UNIX] `net_if_stats()`'s `isup` also checks whether the NIC is
running (meaning Wi-Fi or ethernet cable is connected). (patch by Chris
- 1837: [Linux] improved battery detection and charge "secsleft" calculation
(patch by aristocratos)
- 1620: [Linux] physical cpu_count() result is incorrect on systems with
than one CPU socket. (patch by Vincent A. Arcila)
- 1738: [macOS] Process.exe() may raise FileNotFoundError if process is
alive but the exe file which launched it got deleted.
- 1791: [macOS] fix missing include for getpagesize().
- 1823: [Windows] Process.open_files() may cause a segfault due to a NULL
- 1838: [Linux] sensors_battery(): if `percent` can be determined but not
the remaining values, still return a result instead of None.
(patch by aristocratos)
- Home page: https://github.com/giampaolo/psutil
- Download: https://pypi.org/project/psutil/#files
- Documentation: http://psutil.readthedocs.io
- What's new: https://github.com/giampaolo/psutil/blob/master/HISTORY.rst
Giampaolo - https://gmpy.dev/
On behalf of the SciPy development team I'm pleased to announce
the release of SciPy 1.5.3, which is a bug fix release that includes
Linux ARM64 wheels for the first time.
Sources and binary wheels can be found at:
and at: https://github.com/scipy/scipy/releases/tag/v1.5.3
One of a few ways to install this release with pip:
pip install scipy==1.5.3
SciPy 1.5.3 Release Notes
SciPy 1.5.3 is a bug-fix release with no new features
compared to 1.5.2. In particular, Linux ARM64 wheels are now
available and a compatibility issue with XCode 12 has
* Peter Bell
* CJ Carey
* Thomas Duvernay +
* Gregory Lee
* Eric Moore
* Dima Pasechnik
* Tyler Reddy
* Simon Segerblom Rex +
* Daniel B. Smith
* Will Tirone +
* Warren Weckesser
A total of 12 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
Issues closed for 1.5.3
* `#9611 <https://github.com/scipy/scipy/issues/9611>`__: Overflow error
with new way of p-value calculation in kendall...
* `#10069 <https://github.com/scipy/scipy/issues/10069>`__:
scipy.ndimage.watershed_ift regression in 1.0.0
* `#11260 <https://github.com/scipy/scipy/issues/11260>`__: BUG: DOP853
with complex data computes complex error norm, causing...
* `#11479 <https://github.com/scipy/scipy/issues/11479>`__: RuntimeError:
dictionary changed size during iteration on loading...
* `#11972 <https://github.com/scipy/scipy/issues/11972>`__: BUG (solved):
Error estimation in DOP853 ODE solver fails for...
* `#12543 <https://github.com/scipy/scipy/issues/12543>`__: BUG: Picture
rotated 180 degrees and rotated -180 degrees should...
* `#12613 <https://github.com/scipy/scipy/issues/12613>`__: Travis X.4 and
X.7 failures in master
* `#12654 <https://github.com/scipy/scipy/issues/12654>`__:
scipy.stats.combine_pvalues produces wrong results with
* `#12819 <https://github.com/scipy/scipy/issues/12819>`__: BUG: Scipy
Sparse slice indexing assignment Bug with zeros
* `#12834 <https://github.com/scipy/scipy/issues/12834>`__: BUG: ValueError
upon calling Scipy Interpolator objects
* `#12836 <https://github.com/scipy/scipy/issues/12836>`__: ndimage.median
can return incorrect values for integer inputs
* `#12860 <https://github.com/scipy/scipy/issues/12860>`__: Build failure
with Xcode 12
Pull requests for 1.5.3
* `#12611 <https://github.com/scipy/scipy/pull/12611>`__: MAINT: prepare
for SciPy 1.5.3
* `#12614 <https://github.com/scipy/scipy/pull/12614>`__: MAINT: prevent
* `#12617 <https://github.com/scipy/scipy/pull/12617>`__: MAINT: optimize:
Handle nonscalar size 1 arrays in fmin_slsqp...
* `#12623 <https://github.com/scipy/scipy/pull/12623>`__: MAINT: stats:
Loosen some test tolerances.
* `#12638 <https://github.com/scipy/scipy/pull/12638>`__: CI, MAINT: pin
pytest for Azure win
* `#12668 <https://github.com/scipy/scipy/pull/12668>`__: BUG: Ensure
factorial is not too large in mstats.kendalltau
* `#12705 <https://github.com/scipy/scipy/pull/12705>`__: MAINT:
\`openblas_support\` added sha256 hash
* `#12706 <https://github.com/scipy/scipy/pull/12706>`__: BUG: fix
incorrect 1d case of the fourier_ellipsoid filter
* `#12721 <https://github.com/scipy/scipy/pull/12721>`__: BUG: use
special.sindg in ndimage.rotate
* `#12724 <https://github.com/scipy/scipy/pull/12724>`__: BUG: per #12654
adjusted mudholkar_george method to combine p...
* `#12726 <https://github.com/scipy/scipy/pull/12726>`__: BUG: Fix DOP853
error norm for complex problems
* `#12730 <https://github.com/scipy/scipy/pull/12730>`__: CI: pin xdist for
* `#12786 <https://github.com/scipy/scipy/pull/12786>`__: BUG: stats: Fix
formula in the \`stats\` method of the ARGUS...
* `#12795 <https://github.com/scipy/scipy/pull/12795>`__: CI: Pin
setuptools on windows CI
* `#12830 <https://github.com/scipy/scipy/pull/12830>`__: [BUG] sparse:
Avoid using size attribute in LIL __setitem__
* `#12833 <https://github.com/scipy/scipy/pull/12833>`__: BUG: change list
of globals items to list of a copy
* `#12842 <https://github.com/scipy/scipy/pull/12842>`__: BUG: Use uint16
for cost in NI_WatershedElement
* `#12845 <https://github.com/scipy/scipy/pull/12845>`__: BUG: avoid
boolean or integer addition error in ndimage.measurements.median
* `#12864 <https://github.com/scipy/scipy/pull/12864>`__: BLD: replace the
#include of libqull_r.h with with this of qhull_ra.h...
* `#12867 <https://github.com/scipy/scipy/pull/12867>`__: BUG: Fixes a
ValueError yielded upon calling Scipy Interpolator...
* `#12902 <https://github.com/scipy/scipy/pull/12902>`__: CI: Remove 'env'
* `#12913 <https://github.com/scipy/scipy/pull/12913>`__: MAINT: Ignore
In the last few weeks, we had a close look at the how the situation
around COVID-19 is panning out. Unfortunately, things are not moving in
a direction where we’d feel confident to hold next year’s conference as
an in-person event in Dublin.
EuroPython 2022 in Dublin
After discussion with the venue, we decided to postpone the in-person
conference for another year, to July 11-17 2022 in Dublin, Ireland. We
are currently finalizing the details.
Since going online has proven to work well, we also want to keep the
momentum for EuroPython 2022 and are planning to run the event in a
hybrid version, where both speakers and attendees can optionally join
EuroPython 2021 Online
Given the experience with running EuroPython 2020 online this year, we
are sure that EuroPython 2021 will be a success as well.
We will take the experience we’ve gained from this year’s event to
improve the online version next year, simplify some aspects, reactivate
finaid and enable joining it in smaller groups to create a distributed
We’re still collecting ideas, so if you have any suggestions, we’d love
to hear them. Please write to helpdesk(a)europython.eu.
Help spread the word
Please help us spread this message by sharing it on your social
networks as widely as possible. Thank you !
Link to the blog post:
I am delighted to announce the release 2.0.0 of Austin. If you haven't
heard of Austin before, it is an open source frame stack sampler for
CPython, distributed under the GPLv3 license. It can be used to obtain
statistical profiling data out of a running Python application without a
single line of instrumentation. This means that you can start profiling a
Python application straightaway, even while it's running on a production
environment, with minimal impact on performance.
The simplest way of using Austin is by piping its output to FlameGraph
for a quick and detailed representation of the collected samples. The
latest release introduces a memory profiling mode which allows you to
profile memory usage.
Austin is a pure C application that has no other dependencies other than
the C standard library. Its source code is hosted on GitHub at
The README contains installation and usage details, as well as some
examples of Austin in action. Details on how to contribute to Austin's
development can be found at the bottom of the page.
Austin can be installed easily on the following platforms and from the
- Snap Store
- Debian repositories
Austin is also simple to compile from sources as it only depends on the
standard C library, if you don't have access to the above listed sources.
Besides support for Python 3.9, this new release of Austin brings a
considerable performance enhancement that allows it to sample up to 8
times faster than previous versions. But please do read on until the end
to find out about some new tools that take advantage of all the key
features of Austin.
Due to increasing popularity, the sample Python applications that were
included in the main repository have been moved to dedicated projects on
GitHub. The TUI can now be found at
while Austin Web is now available from
They can both be installed easily from PyPI, but in order to use them the
Austin binary needs to be on the PATH environment variable. These
projects now rely on the austin-python Python package that provides a
Python wrapper around Austin. If you are considering making your own
profiling tool based on Austin, this package can spare you from writing
boilerplate code, so it's worth having a look at it at
The documentation is hosted on RTD at
Finally, I am happy to announce the release of pytest-austin, a plugin
for pytest that allows you to set up performance regression testing by
simply decorating your existing pytest test suite. The plugin launches
Austin to profile your test runs, meaning that no further instrumentation
is required. For more details, check out the project on GitHub
Like the other Austin tools, pytest-austin can be installed easily from
You can stay up-to-date with the project's development by following
Austin on Twitter (https://twitter.com/AustinSampler).
All the best,
<p><a href="https://github.com/P403n1x87/austin">Austin 2.0.0</a> -
frame stack sampler for CPython. (13-Oct-20)</p>
Happy to announce a project I've been working on for some time that's
finally in beta: aiosnow, a MIT licensed Python 3 client library for
interacting with an ITSM cloud service, providing something not too
dissimilar to a database ORM.
I'm sharing this here as the library makes use of Python asyncio, and other
cool features like:
- Asynchronous generators, context managers
- Query condition chaining using Python bitwise operators
- Model Schema system implemented using Marshmallow
- The aiohttp library for working with remote HTTP APIs
It was built with modularity in mind, and is meant to be forked, hacked and
consumed in other projects - commercial or otherwise.
What's in it for me?
I do this for fun, to learn, and to support the asyncio backend of another
project I'm working on, which uses this library at its core.
Big thanks to the code contributors and donors!
I am happy to announce Guppy 3 3.1.0
Guppy 3 is a library and programming environment for Python,
currently providing in particular the Heapy subsystem, which supports
object and heap memory sizing, profiling and debugging. It also
includes a prototypical specification language, the Guppy
Specification Language (GSL), which can be used to formally specify
aspects of Python programs and generate tests and documentation from a
Guppy 3 is a fork of Guppy-PE, created by Sverker Nilsson for Python 2.
This is a major feature release. The main news in this release:
o Python 3.9 support, without subinterpreter support or inter-interpreter
o Added .byprod classifier via tracemalloc, and .prod to print tracemalloc
o Added .all to print all lines in a MorePrinter buffer.
o Added R_INSET relation for being contained by an unordered set.
The project homepage is on GitHub:
Wing 7.2.6 improves exception reporting for pytest, implements 2w in vi
mode, fixes problems with setting up a new Django project, improves
auto-spacing for / and :, reduces CPU use when analyzing and waiting for
remote files, and makes a number of usability improvements.
== About Wing ==
Wing is a light-weight but full-featured Python IDE designed
specifically for Python, with powerful editing, code inspection,
testing, and debugging capabilities. Wing's deep code analysis provides
auto-completion, auto-editing, and refactoring that speed up
development. Its top notch debugger works with any Python code, locally
or on a remote host. Wing also supports test-driven development, version
control, UI color and layout customization, and includes extensive
documentation and support.
Wing is available in three product levels: Wing Pro is the
full-featured Python IDE for professional developers, Wing Personal is a
free Python IDE for students and hobbyists (omits some features), and
Wing 101 is a very simplified free Python IDE for beginners (omits many
Learn more at https://wingware.com/