[Python-announce] CodraFT v2.1.1

2022-07-20 Thread Pierre Raybaut
Hi all,

CodraFT is an open-source generic signal and image processing software, based 
on Python, Qt, NumPy, SciPy and others:
https://codra-ingenierie-informatique.github.io/CodraFT/

I am pleased to announce that CodraFT v2.1.1 has been released.
This is the second public release of version 2, compatible with Python 3.7+.

CodraFT provides signal/image processing and visualisation features, and is 
available either as a stand-alone application or may be embedded in your own 
Python-Qt application thanks to advanced automation capabilities. CodraFT also 
has many I/O features, supporting a lot of images format as well as HDF5 (for 
saving/loading CodraFT workspace or importing any other data file).

Enjoy!

--
Always a pleasure to share with Python community, since 2008.
Pierre Raybaut
___
Python-announce-list mailing list -- python-announce-list@python.org
To unsubscribe send an email to python-announce-list-le...@python.org
https://mail.python.org/mailman3/lists/python-announce-list.python.org/
Member address: arch...@mail-archive.com


[Python-announce] structlog 22.1.0

2022-07-20 Thread Hynek Schlawack
I’m happy to announce a new release of structlog!

With more than 4 million downloads per month, structlog is the most popular 
solution for structured logging in Python. It doesn’t just allow you to log 
key-value pairs in a structured manner, it also makes it EASIER and FASTER. 
Check out  if you’re intrigued 
but not convinced!

My heartfelt thanks go to:

- My generous GitHub sponsors ,
- companies subscribing to structlog on Tidelift 
,
- and people who buy me coffees on !

That's the support that made me maintain structlog for almost a decade with no 
end in sight! <3



(alternatively, see  
for a richer-formatted version of the following)

Highlights

This is a (too) big release, so it has many highlights!

Firstly, rendering exceptions in machine-readable logs (usually JSON) got a big 
upgrade: thanks to structlog.processors.dict_tracebacks you can now have fully 
structured exceptions in your logs!

To ease getting started with structlog, we're now shipping 
structlog.stdlib.recreate_defaults() that recreates structlog's default 
behavior, but on top of standard library's logging. The output looks the same, 
but it runs through logging's machinery and integrates itself easier. The 
default configuration now also merges your contextvars-based context, so enjoy 
structlog.contextvars.bind_contextvars() without configuring anything!

Another request wish that kept coming up is naming the message key differently 
than event. We're aware that nowadays keys like msg are more common, but 
structlog pre-dates the software that introduced and popularized it. To allow 
for more consistency across your platforms, structlog now ships 
structlog.processors.EventRenamer that allows you to rename the default event 
key to something else and additionally also allows you to rename another key to 
event.

Full Changelog

Removed

-   Python 3.6 is not supported anymore.
-   Pickling is now only possible with protocol version 3 and newer.

Deprecated

-   The entire structlog.threadlocal module is deprecated. Please use the 
primitives from structlog.contextvars instead.

If you're using the modern APIs (bind_threadlocal() / merge_threadlocal()) 
it's enough to replace them 1:1 with their contextvars counterparts. The old 
approach around wrap_dict() has been discouraged for a while.

Currently there are no concrete plans to remove the module, but no patches 
against it will be accepted from now on. #409

Added

-   structlog.processors.StackInfoRenderer now has an additional_ignores 
parameter that allows you to filter out your own logging layer. #396
-   Added structlog.WriteLogger, a faster – but more low-level – alternative to 
structlog.PrintLogger. It works the way PrintLogger used to work in previous 
versions. #403 #404
-   structlog.make_filtering_bound_logger()-returned loggers now also have a 
log() method to match the structlog.stdlib.BoundLogger signature closer. #413
-   Added structured logging of tracebacks via the structlog.tracebacks module, 
and most notably the structlog.tracebacks.ExceptionDictTransformer which can be 
used with the new structlog.processors.ExceptionRenderer to render JSON 
tracebacks. #407
-   structlog.stdlib.recreate_defaults(log_level=logging.NOTSET) that recreates 
structlog's defaults on top of standard library's logging. It optionally also 
configures logging to log to standard out at the passed log level. #428
-   structlog.processors.EventRenamer allows you to rename the hitherto 
hard-coded event dict key event to something else. Optionally, you can rename 
another key to event at the same time, too. So adding EventRenamer(to="msg", 
replace_by="_event") to your processor pipeline will rename the standard event 
key to msg and then rename the _event key to event. This allows you to use the 
event key in your own log files and to have consistent log message keys across 
languages.
-   structlog.dev.ConsoleRenderer(event_key="event") now allows to customize 
the name of the key that is used for the log message.

Changed

-   structlog.make_filtering_bound_logger() now returns a method with the same 
signature for all log levels, whether they are active or not. This ensures that 
invalid calls to inactive log levels are caught immediately and don't explode 
once the log level changes. #401
-   structlog.PrintLogger – that is used by default – now uses print() for 
printing, making it a better citizen for interactive terminal applications. #399
-   structlog.testing.capture_logs now works for already initialized bound 
loggers. #408
-   structlog.processors.format_exc_info() is no longer a function, but an 
instance of structlog.processors.ExceptionRenderer. Its behavior has