v0.7.0
======
new features:
-Terminal size changes are now automatically detected and the layout is fixed.
-felix -c shows the current version and checks if that is up to date.
Version 0.7.7
* Declared setuptools as the build backend
* Fixed deprecation warnings caused by escape sequences in regex pattern
strings
Version 0.7.6
* Added support for Python 3.10 and 3.11
* Replaced assertEquals with assertEqual. assertEquals was deprecated in
Python 3.2.
* Removed used of element.getchildren() which has been removed from the Python
standard library elementtree in Python 3.9.
* Added support for Python 3.10 by using CodeType.replace in
`build_code_chunk` to make code object updates more robust against changes
in CodeType.
* Moved tests and releases workflows to GitHub Actions
* Fixed reference leak in Markup.join C implementation.
* Sort directives only by directive index. Previously they were sorted by the
class, namespace and arguments of the directives. This was acceptable in
Python 2, but is a bug in Python 3 since some the arguments may not be
comparable.
* Add support for msgctxt to i18n.
* Implemented skipping of empty attributes during translation to match the
behaviour during translation extraction (i.e. don't try to translate empty
strings that are not extracted).
* Ported setuptools options to declarative config in setup.cfg.
* Removed used of deprecated setuptools Feature in setup.py.
v0.2.1
[zopfli.png] Only print debug info to console output when -v/--verbose flag is used.
v0.2.0
Dropped support for EOL Python 2.7 and 3.6, require Python 3.7+.
Added support for compressing PNGs via zopfli.png.optimize method. Also available from the command line as python -m zopfli.png; mimics the upstream's zopflipng c++ executable.
4.33.3 (released 2022-04-26)
----------------------------
- [designspaceLib] Fixed typo in ``deepcopyExceptFonts`` method, preventing font
references to be transferred
dataclass's ``__post_init__`` magic method
4.33.2 (released 2022-04-22)
----------------------------
- [otBase] Make logging less verbose when harfbuzz fails to serialize. Do not exit
at the first failure but continue attempting to fix offset overflow error using
the pure-python serializer even when the ``USE_HARFBUZZ_REPACKER`` option was
explicitly set to ``True``. This is normal with fonts with relatively large
tables, at least until hb.repack implements proper table splitting.
4.33.1 (released 2022-04-22)
----------------------------
- [otlLib] Put back the ``FONTTOOLS_GPOS_COMPACT_MODE`` environment variable to fix
regression in ufo2ft (and thus fontmake) introduced with v4.33.0
This is deprecated and will be removed one ufo2ft gets updated to use the new
config setup.
4.33.0 (released 2022-04-21)
----------------------------
- [OS/2 / merge] Automatically recalculate ``OS/2.xAvgCharWidth`` after merging
fonts with ``fontTools.merge``
- [misc/config] Added ``fontTools.misc.configTools`` module, a generic configuration
system
Added ``fontTools.config`` module, a fontTools-specific configuration
system using ``configTools`` above.
Attached a ``Config`` object to ``TTFont``.
- [otlLib] Replaced environment variable for GPOS compression level with an
equivalent option using the new config system.
- [designspaceLib] Incremented format version to 5.0
Added discrete axes, variable fonts, STAT information, either design- or
user-space location on instances.
Added ``fontTools.designspaceLib.split`` module to split a designspace
into sub-spaces that interpolate and that represent the variable fonts
listed in the document.
Made instance names optional and allow computing them from STAT data instead.
Added ``fontTools.designspaceLib.statNames`` module.
Allow instances to have the same location as a previously defined STAT label.
Deprecated some attributes:
``SourceDescriptor``: ``copyLib``, ``copyInfo``, ``copyGroups``, ``copyFeatures``.
``InstanceDescriptor``: ``kerning``, ``info``; ``glyphs``: use rules or sparse
sources.
For both, ``location``: use the more explicit designLocation.
Note: all are soft deprecations and existing code should keep working.
Updated documentation for Python methods and the XML format.
- [varLib] Added ``build_many`` to build several variable fonts from a single
designspace document
Added ``fontTools.varLib.stat`` module to build STAT tables from a designspace
document.
- [otBase] Try to use the Harfbuzz Repacker for packing GSUB/GPOS tables when
``uharfbuzz`` python bindings are available
"fontTools.ttLib.tables.otBase:USE_HARFBUZZ_REPACKER" config option to ``False``.
If the option is set explicitly to ``True`` but ``uharfbuzz`` can't be imported
or fails to serialize for any reasons, an error will be raised (ImportError or
uharfbuzz errors).
- [CFF/T2] Ensure that ``pen.closePath()`` gets called for CFF2 charstrings
Handle implicit CFF2 closePath within ``T2OutlineExtractor``
4.32.0 (released 2022-04-08)
----------------------------
- [otlLib] Disable GPOS7 optimization to work around bug in Apple CoreText.
Always force Chaining GPOS8 for now
- [glifLib] Added ``outputImpliedClosingLine=False`` parameter to ``Glyph.draw()``,
to control behaviour of ``PointToSegmentPen`` (6b4e2e7).
- [varLib.interpolatable] Check for wrong contour starting point
- [cffLib] Remove leftover ``GlobalState`` class and fix calls to ``TopDictIndex()``
- [instancer] Clear ``AxisValueArray`` if it is empty after instantiating
4.31.2 (released 2022-03-22)
----------------------------
- [varLib] fix instantiation of GPOS SinglePos values
4.31.1 (released 2022-03-18)
----------------------------
- [subset] fix subsetting OT-SVG when glyph id attribute is on the root ``<svg>``
element
4.31.0 (released 2022-03-18)
----------------------------
- [ttCollection] Fixed 'ResourceWarning: unclosed file' warning
- [varLib.merger] Handle merging SinglePos with valueformat=0
- [ttFont] Update glyf's glyphOrder when calling TTFont.setGlyphOrder()
- [ttFont] Added ``ensureDecompiled`` method to load all tables irrespective
of the ``lazy`` attribute
- [otBase] Added ``iterSubTable`` method to iterate over BaseTable's children of
type BaseTable; useful for traversing a tree of otTables
4.30.0 (released 2022-03-10)
----------------------------
- [varLib] Added debug logger showing the glyph name for which ``gvar`` is built
- [varLib.errors] Fixed undefined names in ``FoundANone`` and ``UnsupportedFormat``
exceptions (ac4d5611).
- [otlLib.builder] Added ``windowsNames`` and ``macNames`` (bool) parameters to the
``buildStatTabe`` function, so that one can select whether to only add one or both
of the two sets
- [t1Lib] Added the ability to recreate PostScript stream
- [name] Added ``getFirstDebugName``, ``getBest{Family,SubFamily,Full}Name`` methods
## [4.7.0] - 2022-04-26
### Added
- Allow disabling the internal DHCP server
- icmp: Support falling back on trying a SOCK_RAW socket
- Support Unix sockets in hostfwd
- IPv6 DNS proxying support
- bootp: add support for UEFI HTTP boot
- New callback that supports CFI better
### Fixed
- dhcp: Always send DHCP_OPT_LEN bytes in options
- Fix Haiku build
- Fix memory leak when using libresolv
- Ensure sin6_scope_id is zero for global addresses
- resolv: fix IPv6 resolution on Darwin
- socket: Initialize so_type in socreate
- Handle ECONNABORTED from recv
1.3.0 (2022-04-26)
Packaging
- Increase minimum `setuptools` version to 58.
Fixed
- Fix crash when `python-distutils-extra` linux package is installed.
- Fix sdist built with vendored dependencies on Windows having incorrect cargo config.
1.2.0 (2022-03-22)
Packaging
- Drop support for Python 3.6.
Added
- Add support for `kebab-case` executable names.
- Add support for custom cargo profiles.
Fixed
- Fix building macOS arm64 wheel with cibuildwheel.
From Thomas Dettbarn in PR 56806.
dmagnetic (0.34-1) unstable; urgency=medium
* Minor bugfixes
* Slightly updated documentation
* Popular feature "-nodoc" had an issue with saved games.
0.33:
* New feature "-nodoc" for players without a manual
curl and libcurl 7.83.0
This release includes the following changes:
o curl: add %header{name} experimental support in -w handling
o curl: add %{header_json} experimental support in -w handling
o curl: add --no-clobber [28]
o curl: add --remove-on-error [11]
o header api: add curl_easy_header and curl_easy_nextheader [56]
o msh3: add support for QUIC and HTTP/3 using msh3 [84]
This release includes the following bugfixes:
o appveyor: add Cygwin build [77]
o appveyor: only add MSYS2 to PATH where required [78]
o BearSSL: add CURLOPT_SSL_CIPHER_LIST support [27]
o BearSSL: add CURLOPT_SSL_CTX_FUNCTION support [26]
o BINDINGS.md: add Hollywood binding [34]
o CI: Do not use buildconf. Instead, just use: autoreconf -fi [42]
o CI: install Python package impacket to run SMB test 1451 [5]
o configure.ac: move -pthread CFLAGS setting back where it used to be [14]
o configure: bump the copyright year range int the generated output
o conncache: include the zone id in the "bundle" hashkey [112]
o connecache: remove duplicate connc->closure_handle check [90]
o connect: make Curl_getconnectinfo work with conn cache from share handle [22]
o connect: use TCP_KEEPALIVE only if TCP_KEEPIDLE is not defined [6]
o cookie.d: clarify when cookies are sent
o cookies: improve errorhandling for reading cookiefile [123]
o curl/system.h: update ifdef condition for MCST-LCC compiler [4]
o curl: error out if -T and -d are used for the same URL [99]
o curl: error out when options need features not present in libcurl [18]
o curl: escape '?' in generated --libcurl code [117]
o curl: fix segmentation fault for empty output file names. [60]
o curl_easy_header: fix typos in documentation [74]
o CURLINFO_PRIMARY_PORT.3: clarify which port this is [126]
o CURLOPT*TLSAUTH.3: they only work with OpenSSL or GnuTLS [105]
o CURLOPT_DISALLOW_USERNAME_IN_URL.3: use uppercase URL
o CURLOPT_PREQUOTE.3: only works for FTP file transfers, not dirs [79]
o CURLOPT_PROGRESSFUNCTION.3: fix typo in example [63]
o CURLOPT_UNRESTRICTED_AUTH.3: extended explanation [127]
o CURLSHOPT_UNLOCKFUNC.3: fix the callback prototype [9]
o docs/HYPER.md: updated to reflect current hyper build needs
o docs/opts: Mention Schannel client cert type is P12 [50]
o docs: Fix missing semicolon in example code [102]
o docs: lots of minor language polish [51]
o English: use American spelling consistently [95]
o fail.d: tweak the description [101]
o firefox-db2pem.sh: make the shell script safer [47]
o ftp: fix error message for partial file upload [61]
o gen.pl: change wording for mutexed options [98]
o GHA: add openssl3 jobs moved over from zuul [88]
o GHA: build hyper with nightly rustc [7]
o GHA: move bearssl jobs over from zuul [85]
o gha: move the event-based test over from Zuul [59]
o gtls: fix build for disabled TLS-SRP [48]
o http2: handle DONE called for the paused stream [69]
o http2: RST the stream if we stop it on our own will [67]
o http: avoid auth/cookie on redirects same host diff port [110]
o http: close the stream (not connection) on time condition abort [68]
o http: reject header contents with nul bytes [41]
o http: return error on colon-less HTTP headers [31]
o http: streamclose "already downloaded" [57]
o hyper: fix status_line() return code [13]
o hyper: fix tests 580 and 581 for hyper [107]
o hyper: no h2c support [33]
o infof: consistent capitalization of warning messages [103]
o ipv4/6.d: clarify that they are about using IP addresses [3]
o json.d: fix typo (overriden -> overridden) [24]
o keepalive-time.d: It takes many probes to detect brokenness [29]
o lib/warnless.[ch]: only check for WIN32 and ignore _WIN32 [45]
o lib670: avoid double check result [71]
o lib: #ifdef on USE_HTTP2 better [65]
o lib: fix some misuse of curlx_convert_wchar_to_UTF8 [38]
o lib: remove exclamation marks [100]
o libssh2: compare sha256 strings case sensitively [114]
o libssh2: make the md5 comparison fail if wrong length [111]
o libssh: fix build with old libssh versions [12]
o libssh: fix double close [124]
o libssh: Improve fix for missing SSH_S_ stat macros [10]
o libssh: unstick SFTP transfers when done event-based [58]
o macos: set .plist version in autoconf [122]
o mbedtls: remove 'protocols' array from backend when ALPN is not used [66]
o mbedtls: remove server_fd from backend [91]
o mk-ca-bundle.pl: Use stricter logic to process the certificates [39]
o mk-ca-bundle.vbs: delete this script in favor of mk-ca-bundle.pl [8]
o mlc_config.json: add file to ignore known troublesome URLs [35]
o mqtt: better handling of TCP disconnect mid-message [55]
o ngtcp2: add client certificate authentication for OpenSSL [15]
o ngtcp2: avoid busy loop in low CWND situation [119]
o ngtcp2: deal with sub-millisecond timeout [116]
o ngtcp2: disconnect the QUIC connection proper [19]
o ngtcp2: enlarge H3_SEND_SIZE [82]
o ngtcp2: fix HTTP/3 upload stall and avoid busy loop [83]
o ngtcp2: fix memory leak [80]
o ngtcp2: fix QUIC_IDLE_TIMEOUT [94]
o ngtcp2: make curl 1ms faster [93]
o ngtcp2: remove remote_addr which is not used in a meaningful way [81]
o ngtcp2: update to work after recent ngtcp2 updates [62]
o ngtcp2: use token when detecting :status header field [92]
o nonblock: restore setsockopt method to curlx_nonblock [20]
o openssl: check SSL_get_peer_cert_chain return value [1]
o openssl: enable CURLOPT_SSL_EC_CURVES with BoringSSL [23]
o openssl: fix CN check error code [21]
o options: remove mistaken space before paren in prototype
o perl: removed a double semicolon at end of line [64]
o pop3/smtp: return *WEIRD_SERVER_REPLY when not understood [43]
o projects/README: converted to markdown [76]
o projects: Update VC version names for VS2017, VS2022 [52]
o rtsp: don't let CSeq error override earlier errors [37]
o runtests: add 'bearssl' as testable feature [87]
o runtests: make 'oldlibssh' be before 0.9.4 [2]
o schannel: remove dead code that will never run [89]
o scripts/copyright.pl: ignore the new mlc_config.json file
o scripts: move three scripts from lib/ to scripts/ [44]
o test1135: sync with recent API updates [54]
o test1459: disable for oldlibssh [53]
o test375: fix line endings on Windows [40]
o test386: Fix an incorrect test markup tag
o test718: edited slightly to return better HTTP [32]
o tests/server/util.h: align WIN32 condition with util.c [46]
o tests: refactor server/socksd.c to support --unix-socket [96]
o timediff.[ch]: add curlx helper functions for timeval conversions [86]
o tls: make mbedtls and NSS check for h2, not nghttp2 [70]
o tool and tests: force flush of all buffers at end of program [17]
o tool_cb_hdr: Turn the Location: into a terminal hyperlink [30]
o tool_getparam: error out on missing -K file [115]
o tool_listhelp.c: uppercase URL
o tool_operate: fix a scan-build warning [16]
o tool_paramhlp: use feof(3) to identify EOF correctly when using fread(3) [97]
o transfer: redirects to other protocols or ports clear auth [109]
o unit1620: call global_init before calling Curl_open [125]
o url: check sasl additional parameters for connection reuse. [113]
o vtls: provide a unified APLN-disagree string for all backends [75]
o vtls: use a backend standard message for "ALPN: offers %s" [73]
o vtls: use a generic "ALPN, server accepted" message [72]
o winbuild/README.md: fixup dead link [36]
o winbuild: Add a Visual Studio example to the README [49]
o wolfssl: fix compiler error without IPv6 [25]
Tested on NetBSD 9 amd64 with a UPS that's more than 4 times older
than nut 2.7.4!
Upstream NEWS:
Release notes for NUT 2.8.0 - what's new since 2.7.4:
NOTE: Earlier discussions (mailing list threads, GitHub issues, etc.) could
refer to this change set (too long in the making) as NUT 2.7.5.
- New (optional) keywords for configuration files were added,
so existing NUT 2.7.x builds would not accept them if some
deployments switch versions back and forth -- due to this,
semantically the version was bumped to NUT 2.8.x.
- Add support for openssl-1.1.0 (Arjen de Korte)
- libusb-1.0 API support in addition to libusb-0.1 API [#300]
- Add support for `DISABLE_WEAK_SSL=true` in upsd.conf to disable older/weaker
SSL/TLS protocols and ciphers: when NUT is built against relatively recent
versions of OpenSSL or NSS it will be restricted to TLSv1.2 or better.
For least-surprise, currently defaults to `false` and complains in log
[PR #1043]
- Add support for `ALLOW_NO_DEVICE=true` (as an upsd.conf flag or environment
variable passed from caller of the program), to allow starting the data
server initially without any device configurations and reloading it later
to apply config changes on the fly [PR #766]
- Add support for `debug_min=NUM` setting (ups.conf, upsd.conf, upsmon.conf)
to specify the minimum debug verbosity for daemons. This allows "in-vivo"
troubleshooting of service daemons without editing init scripts or service
unit definitions.
- Improve support for upsdrvctl for managing of numerous device configs,
including default "maxretry=3" and a "nowait" option to complete the
"start of everything" mode after triggering the drivers and not waiting
for them to complete initializing. This matters on systems that monitor
from dozens to hundreds of devices.
- Drivers support a new value for `synchronous` setting, which is the
new default now: `auto`. Initially after driver start-up this mode
acts as the older default `off`, but would fall back to `on` in case
the driver fails to send reports to `upsd` by overflowing the socket
buffer in async mode -- so the next connections of this driver uptime
would be synchronized (potentially slower, but safer -- blocking on
writes to the data server). This adaptation would primarily impact
and benefit devices with many (hundreds of) data points, such as
ePDUs and daisy chains. [issue #1309, PR #1315]
- Daemons such as upsd, upsmon, upslog, and device drivers previously
implied that enabled debugging (or upslog to stdout) means foreground
running, otherwise the daemon was always sent to the background.
Now there are explicit options for this (`-F`/`-B`), although default
behavior is retained. This change is used for simplified service unit
definitions.
- Improvements for device discovery or driver "lock-picking", including
general support for:
* "Standalone" mode (`-s` option), to monitor a device which is not
detailed or mentioned in ups.conf
* `NUT_ALTPIDPATH` and `NUT_STATEPATH` environment variables to override
the paths built into the driver binary [PR #473 and #507]
* "Driver data dump" mode (`-d` option), to poll a device for one or
few ('update_count' ) loops, report discovered values (dump the data
tree in upsc-like format), and exit. This complements the `nut-scanner`
for finding and identifying devices.
- support for new devices:
* IBM 6000 VA LCD 4U Rack UPS; 5396-1Kx (USB)
* Phoenix Contact QUINT-UPS model 2320461 (Modbus)
* Tripp-Lite SU3000LCD2UHV (USB; protocol 1330)
* Emerson Avocent PM3000 PDU (SNMP)
* HPE ePDU (SNMP)
- nutdrv_qx: enhanced estimation of remaining battery runtime based
on speed of voltage drop, which varies as they age [PR #1027]
- nutdrv_qx: several subdrivers added or improved, including:
* "snr" subdriver with USB connection, for SNR-UPS-LID-XXXX [PR #1008].
Note that end-users should reference explicitly the `snr` subdriver
in their `ups.conf` settings because of USB chip using the same
values of VendorID/ProductID as fabula_subdriver, fuji_subdriver,
and krauler_subdriver.
* "hunnox" subdriver, as a dialect of earlier "fabula" [PR #638]
adds support for Hunnox HNX-850 with USB connection and reported to work
for Powercool, Iron Guardian, ARES devices and possibly many others from
discussions linking to the pull request which introduced the driver.
* "phoenixtec" subdriver for Masterguard A and E series, device series
A700/1000/2000/3000(-19) and E40/60/100(-19). [PR #975]
* "ablerex" subdriver provided by the OEM vendor, note that it replaces
"krauler_subdriver" as default handler for VID:PID 0xffff:0x0000
[PR #1135]
* Legrand HID defined and handled by "krauler_subdriver" by default
[PR #1075, issue #616]
* add new "armac" subdriver, tested with Armac R/2000I/PSW, but should
support other UPSes that work with "PowerManagerII" software from
Richcomm Technologies from around 2004-2005 [PR #1239, issue #1238]
- microsol-apc (starting at version 0.68 as derived from solis 0.67):
adding support for newer APC Back-UPS BR hardware, such as
APC Back-UPS BZ1500, BZ2200BI and BZ2200I [PR #994]
- pijuice: added new i2c bus driver for PiJuice HAT, a battery UPS module
for the Raspberry Pi systems [PR #730]
- huawei-ups2000: added new driver for USB (Linux 5.12+ so far) and Serial
RS-232 Modbus device support of Huawei UPS2000/2000A (1kVA-3kVA) series,
and possibly some related FSP UPS models. [PR #954]
- socomec_jbus: added new driver for modbus-based JBUS protocol over serial
RS-232 for Socomec UPS (tested with a DIGYS 3/3 15kVA model, working
on Linux x86-64 and Raspberry Pi 3 ARM). [PR #1313]
- adelsystem_cbi: added new driver for ADELSYSTEM CBI2801224A, an all-in-one
12/24Vdc DC-UPS, which supports the modbus RTU communication protocol
[PR #1282]
- generic_modbus: added new driver for TCP and Serial Modbus device support.
The driver has been tested against PULS UPS (model UB40.241) via
MOXA ioLogikR1212 (RS485) and ioLogikE1212 (TCP/IP), and configuration
allows to map custom registers and addresses to NUT events [PR #1052]
- genericups: added support for FTTx battery backup devices, and new signal
type mappings for the contact closure pins interpretation (RB for replace
battery, BYPASS for disconnected battery, and "none" or NULL for signals
to ignore) [PR #1061]
- add devices to HCL/DDL:
* APC Back-UPS CS (USB)
* CPS CP1500EPFCLCD (USB)
* CPS EC350G, EC750G (USB)
* CPS PR2200LCDRT2U (SNMP)
* Eaton ATS 16 and 30 (SNMP)
* Eaton 5E2200VA (USB)
* Eaton 9PX Split Phase 6/8/10 kVA (XML/USB/SHUT)
* Eaton 9PX (XML/USB/SHUT)
* Eaton Ellipse PRO 650 VA (USB)
* Ippon Back Comfo Pro II 650/850/1050 (USB)
* Numeric Digital 800 (USB)
* Opti-UPS PS1500E (USB)
* Powercool 350VA to 1600VA (USB)
- C++11 support in nutclient library and cppunit tests
- Added C++ testing mock for TcpClient class (nutclientmem/MemClientStub:
data stored in local memory) [PR #1034]
- Dual Python 2 and 3 compatibility in development scripts; ability to
run build activities and resulting built NUT programs on systems that
do not have a binary named "python" [PR #1115 and some before it]
- Added Russian translation for NUT-Monitor GUI client [PR #806]
- Separated NUT-Monitor UI into two applications, NUT-Monitor-py2gtk2 and
NUT-Monitor-py3qt5, suitable for two generations of Python ecosystem
with their great differences; `NUT-Monitor` name is retained for wrapper
script which calls one of these, such that the current system can execute
[PRs #1310, #1354]
- Various USB driver families: expanded device-matching with "device" in
addition to "bus" and generic USB fields. This is needed to support
multiple attached devices that seem identical by other fields (e.g.
same vendor, same model, same USB bus, and no serial number) [PR #974]
- Various USB driver families: Improved HID parsing for byte-stream to
number conversions on different CPU architectures [PR #1024]
- Various USB HID driver families: added support for composite devices
utilizing interface greater than 0 for the UPS interface [PR #1044]
- usbhid-ups:
* added generic framework for fixing Report Descriptors which can be
used for different manufacturers by adding code to the appropriate
subdriver rather than polluting the main code with UPS specific
exceptions, and applied fixes for known mistakes in (some releases
of firmware for) CyberPower CPS*EPFCLCD [issue #439, PR #1245]
* added `onlinedischarge` option for UPSes that report `OL+DISCHRG`
when wall power is lost [PR #811]
* changed detection of VendorID 0x06da handling of which is claimed
by Liebert/Phoenixtec HID historically, and MGE HID (for AEG PROTECT
NAS UPSes) since NUT 2.7.4, so that the higher-priority MGE subdriver
would not grab each and all of the devices exposing that ID [PR #1357]
* CPS HID: add input.frequency and output.frequency
* OpenUPS2: only check OEM Information string once (fewer log messages)
* Liebert GXT4 USB VID:PID [10AF:0000]
* add battery voltage and input/output transfer voltage and frequency
in Liebert/Phoenixtec HID mapping, to support PowerWalker VFI 2000 TGS
better [PR #564, issue #560]
* add a little delay between multicommands [PR #1228]
* fix Eaton/MGE mapping for beeper handling
* add IBM USB VID
* add deep battery test for CyberPower OL3000RMXL2U
* report the libusb version used
* fixed CPU architecture dependent bitmask math issues, causing wrong
numbers interpreted from wire protocol data in Big-Endian LP64 builds
(SPARC64, s390x, etc.) [issue #1023, PRs #1024, #1040, #1055, #1226]
* add Delta UPS Amplon R Series, tested on R1K and R3K model [PR #987]
* add Delta Minuteman UPS VID/PID [PR #1230, issues #555 and #1227]
* add AMETEK Powervar UPM [PR #733]
* add Tripplite AVR750U (ProductID 0x3024) [PR #963]
* add Arduino HID device support with new arduino-hid subdriver [PR #1044]
* add new salicru-hid subdriver, tested with Salicru SPS Home 850 VA
[PR #1199, issue #732]
* add new ever-hid subdriver to support EVER UPS devices (Sinline RT Series,
Sinline RT XL Series, ECO PRO AVR CDS Series) [PR #431]
* add ability to set `battery.mfr.date` for APC HID UPS [PR #1318]
- usbhid-ups / mge-shut: compute a realpower output load approximation for
Eaton UPS when the needed data is not present
- snmp-ups:
* APC ePDU MIB support
* add `input.phase.shift` variable
* add configurable write-able `ondelay` (`ups.delay.start`) and `offdelay`
(`ups.delay.shutdown`) as timeticks support [PR #276]
* outlet groups
* fix the rounding / truncation of some values
* add outlet.N.name for Eaton ePDU
* add input.bypass.frequency for Eaton 3ph
* fix support for Eaton 2-phase ("split phase") UPS
* add flag to list currently loaded MIB-to-NUT mappings
* fix input.L2.voltage on Eaton G2/G3 PDU
* update Eaton Aphel Revelation MIB
* support Raritan Dominion PX2 PDU
* support Emerson Avocent PM3000 PDU
* improve ALARM flag handling
* add firmware version for new HPE Network card
* add ups.load, battery.charge, input.{voltage,frequency} and output.voltage
for CyberPower, as well as shutdown and other instant commands
* several rounds of updates for Eaton devices, including new ATS and ePDU
hardware families
* fixed bit mask values for flags to surely use different numbers behind
logical items (inevitably changing some of those macro symbols) [PR #1180]
- snmp-ups and nut-scanner should now support more SNMPv3 Auth and Priv
protocols, as available at NUT build time [PRs #1165, #1172]
- nut-scanner: various improvements, including:
* detection of libraries at runtime
* tracing information
* limiting parallelism (thread count) [PRs #1158, #1164]
- nut-ipmipsu: improve FreeIPMI support to build cleanly against older and
newer FreeIPMI versions [PR #1179]
- the powerpanel driver now also supports CyberPower OR1500LCDRTXL2U with
serial cable [PR #538]
- powercom driver: implement `nobt` config parameter to skip battery check
on initialization/startup [PR #1256]
- netxml-ups:
* Report calibration status
* Fix for erroneous battery info (MGEXML/0.30) [PR #1069]
- solis: various improvements and fixes
- liebert-esp2: Correct battery V scaling, update docs, implement split-phase
unit support [PR #412]
- tripplite: the "Tripp-Lite SmartUPS driver" as tested with SMART2200NET
learned to discover the firmware generation and some device features,
and in particular to manage power separately on one or two outlet groups
[PR #1048]
- tripplite_usb: updated to recognize the "3005" protocol [PR #584]
- libnutclient: introduce getDevicesVariableValues() to improve performances
when querying many devices (up to 15 times faster)
- nut-driver-enumerator: introduced a script for Linux systemd and
Solaris/illumos SMF to inspect current NUT configuration in ups.conf
file and generate service management instances for each currently
tracked power device. Also introduced services to monitor the NUT
configuration and react to editions of this file, mostly intended
for deployments that do massive monitoring of dynamically changing
farms of power devices.
- Fix File descriptors leaks by upsmon and upssched (SELinux errors)
- systemd support improvements:
* POWEROFF_WAIT
* reload support for upsd
* Deliver systemd-tmpfiles config to pre-create runtime locations
[PR #1037 for Issue #1030]
* Update units with SyslogIdentifier=%N for better logging [PR #1054]
- upsrw: display the variable type beside ENUM / RANGE
- Added `PROTVER` as alias to `NETVER` to report the protocol version in use.
Note that NUT codebase itself does not use this value and handles commands
and reported errors individually [issue #1347]
- Implement status tracking for instant commands (instcmd) and variables
settings (setvar): this allows to get the actual execution status from the
driver, and is available in libraries and upscmd / upsrw [PR #659]
- Add support for extra parameter for instant commands, both in library and
in upscmd
- dummy-ups can now specify `mode` as a driver argument, and separates the
notion of `dummy-once` (new default for `*.dev` files that do not change)
vs. `dummy-loop` (legacy default for `*.seq` and others) [issue #1385]
- new protocol variables:
* `input.phase.shift`
* `outlet.N.name`
* `outlet.N.type`
* `battery.voltage.cell.max`, `battery.voltage.cell.min`
* `battery.temperature.cell.max`, `battery.temperature.cell.min`
* `battery.status`
* `battery.capacity.nominal`
* `battery.date.maintenance` (and clarified purpose of `battery.date`)
* `battery.packs.external` (and clarified purpose of `battery.packs`)
* `experimental.*` namespace introduced [PR #1046] to facilitate
introduction of NUT drivers and their data points for which we do
not yet have concepts, or which the original driver contributors
did not map well per suitable NUT standards: this allows to balance
having those drivers available in the project vs. least surprise
for when the explicitly experimental names are changed to something
stable and standardized.
* Proposed to track Date and Time values (still as "opaque strings")
preferably in representations compatible to ISO-8601/RFC-3339 [PR #1076]
(standards update; changes to actual codebase to be applied in the future)
** New routine to convert a US formatted date string "MM/DD/YYYY" to an
ISO 8601 Calendar date "YYYY-MM-DD" was added to snmp-ups.c [PR #1078]
- Master/Slave terminology was deprecated in favor of Primary/Secondary
modes of `upsmon` client:
* Respective keywords in the configuration files (`upsd.users` and
`upsmon.conf`) are supported as backwards-compatible settings,
but the obsoleted values are no longer documented.
* Protocol keyword support was similarly updated, with `upsmon` now
first trying to elevate privileges with `PRIMARY <ups>` request,
and falling back to `MASTER <ups>` just in case it talks to an
older build of an `upsd` server.
* For the principle of least surprise, NUT codebase still exposes the
`net_master()` (as handler for `MASTER` net command) in header and
C code for the sake of existing linked binaries, and returns the
`OK MASTER-GRANTED` line to the older client that invoked it.
* Newly introduced `net_primary()` (as handler for `PRIMARY` net command)
calls the exact same application logic, but returns `OK PRIMARY-GRANTED`
line to the client.
* Python binding updated to handle both cases, as the only found in-tree
protocol consumer of the full-line text.
* For more details see issue #840 and several pull requests referenced
from it, and discussions on NUT mailing lists.
- Build fixes:
* In general, numerous fixes were applied to ensure portability and avoid
warnings (fixing a number of real bugs that caused them); CI was extended
to keep the codebase free of those types of warnings which we have got
rid of, requiring builds to succeed cleanly in several dozen combinations
of compiler versions, C standard revisions (C99 upwards, though on many
OSes with GNU99+ extensions), operating systems and CPU architectures.
* Public CI introduced to automatically test every contribution (PR) and
resulting increment of main NUT codebase, including Travis CI and LGTM.com
services, and a Jenkins farm on virtual hardware donated by Fosshost.org;
this augments testing earlier provided for some branches by Buildbot.
* Added cppunit testing with valgrind for the C++ client library
* Make targets added for shell script syntax checks for helper and service
scripts
* Make targets added for spellcheck and for maintenance of the dictionary,
including incremental spellcheck to only parse recently edited text files
* The AsciiDoc detection has been reworked to allow NUT to be built from
source without requiring asciidoc/a2x (using pre-built man pages from
the distribution tarball, for instance)
* Makefile contents rearranged for more resilient out-of-tree and in-tree
builds beside those made from the root workspace directory
* Makefiles are tested with GNU Make and BSD Make to ensure portable recipes
* More use of `pkg-config` to detect dependencies at configure time, as
well as fail-safe detection of presence of pkg-config (and its macros)
to survive and build without it too
* "slibtool" pedantic nuances now supported, allowing an alternative to
GNU libtool
* Build scripts updated to remove obsoleted calls to cleanly work with
autoconf-2.70 releases in 2020 (also works with 2.69 which was the
earlier release since 2012)
* Dynamic library loading used in certain programs and use-cases improved,
especially for 64-bit vs 32-bit builds on multiple-bitness OSes
* Logging routines like `upsdebugx()` were refactored as macros so there
is slightly less overhead when logging is disabled [PRs #685 and #1100]
* Numerous classes of compilation warnings eradicated, many of those being
potential issues with implicit data type conversions and varied numeric
type width, signedness, string buffer size, uninitialized variables or
structure fields; some more in progress
* Several logical errors found and fixed during this walk over codebase.
* Cases where compilers were overly zealous and particular code was written
the way wit was intentionally, including some comparisons that help with
different-bitness builds but indeed seem superfluous in a certain single
bitness, were commented and encased in pragmas to disable the warnings
* Basic coding style (indentations, lack of trailing white space) applied
per developer guide, but not automatically enforced/checked yet.
- Due to changes needed to resolve build warnings, mostly about mismatching
data types for some variables, some structure definitions and API signatures
of several routines had to be changed for argument types, return types,
or both. Primarily this change concerns internal implementation details
(may impact update of NUT forks with custom drivers using those), but a
few changes also happened in header files installed for builds configured
`--with-dev` and so may impact `upsclient` and `nutclient` (C++) consumers.
At the very least, binaries for those consumers should be rebuilt to remain
stable with NUT 2.8.0 and not mismatch int-type sizes and other arguments.
- As usual, more bugfixes, cleanup and improvements, on both source code
and documentation.
This is a library for the GitHub API which performs no I/O of its
own (a sans-I/O library). This allows users to choose whatever HTTP
library they prefer while parceling out GitHub-specific details to
this library. This base library is then built upon to provide an
abstract base class to a cleaner API to work with. Finally,
implementations of the abstract base class are provided for
asynchronous HTTP libraries for immediate usage.
2.5.6
- BUG/MINOR: tools: fix url2sa return value with IPv4
- BUG/MINOR: httpclient/lua: stuck when closing without data
- MINOR: server: export server_parse_sni_expr() function
- BUG/MINOR: httpclient: send the SNI using the host header
- BUILD: httpclient: fix build without SSL
- BUG/MINOR: server/ssl: free the SNI sample expression
- BUG/MINOR: httpclient: only check co_data() instead of HTTP_MSG_DATA
- BUG/MINOR: httpclient: process the response when received before the end of the request
- BUG/MINOR: httpclient: CF_SHUTW_NOW should be tested with channel_is_empty()
- CI: github actions: switch to LibreSSL-3.5.1
- BUG/MEDIUM: mux-h1: only turn CO_FL_ERROR to CS_FL_ERROR with empty ibuf
- BUG/MEDIUM: stream-int: do not rely on the connection error once established
- BUG/MEDIUM: trace: avoid race condition when retrieving session from conn->owner
- MEDIUM: mux-h2: slightly relax timeout management rules
- BUG/MEDIUM: mux-h2: make use of http-request and keep-alive timeouts
- BUG/MINOR: rules: Initialize the list element when allocating a new rule
- MEDIUM: mqtt: support mqtt_is_valid and mqtt_field_value converters for MQTTv3.1
- DOC: config: Explictly add supported MQTT versions
- BUG/MINOR: tools: url2sa reads too far when no port nor path
- DOC: reflect H2 timeout changes
- BUG/MEDIUM: mux-fcgi: Properly handle return value of headers/trailers parsing
- BUG/MEDIUM: mux-h1: Properly detect full buffer cases during message parsing
- REGTESTS: ssl: use X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY for cert check
- BUG/MINOR: samples: add missing context names for sample fetch functions
- BUG/MINOR: cli/stream: fix "shutdown session" to iterate over all threads
- BUG/MAJOR: mux_pt: always report the connection error to the conn_stream
- DOC: remove double blanks in configuration.txt
- CI: github actions: update OpenSSL to 3.0.2
- BUG/MINOR: ssl/cli: Remove empty lines from CLI output
- BUG/MINOR: httpclient: end callback in applet release
- BUG/MINOR: fcgi-app: Don't add C-L header on response to HEAD requests
- BUG/MEDIUM: stats: Be sure to never set EOM flag on an empty HTX message
- BUG/MEDIUM: hlua: Don't set EOM flag on an empty HTX message in HTTP applet
- BUG/MEDIUM: promex: Be sure to never set EOM flag on an empty HTX message
- BUG/MEDIUM: mux-h1: Set outgoing message to DONE when payload length is reached
- BUG/MEDIUM: http-conv: Fix url_enc() to not crush const samples
- BUG/MEDIUM: http-act: Don't replace URI if path is not found or invalid
- BUG/MINOR: opentracing: setting the return value in function flt_ot_var_set()
- BUG/BUILD: opentracing: fixed OT_DEFINE variable setting
- EXAMPLES: opentracing: refined shell scripts for testing filter performance
- DOC: opentracing: corrected comments in function descriptions
- CLEANUP: opentracing: removed unused function flt_ot_var_unset()
- CLEANUP: opentracing: removed unused function flt_ot_var_get()
- Revert "MINOR: opentracing: change the scope of the variable 'ot.uuid' from 'sess' to 'txn'"
- MINOR: opentracing: only takes the variables lock on shared entries
- CLEANUP: opentracing: added flt_ot_smp_init() function
- CLEANUP: opentracing: added variable to store variable length
- MINOR: opentracing: improved normalization of context variable names
- DEBUG: opentracing: show return values of all functions in the debug output
- CLEANUP: opentracing: added FLT_OT_PARSE_INVALID_enum enum
- DEBUG: opentracing: display the contents of the err variable after setting
- MAJOR: opentracing: reenable usage of vars to transmit opentracing context
- Revert "BUILD: opentracing: display warning in case of using OT_USE_VARS at compile time"
- MEDIUM: global: Add a "close-spread-time" option to spread soft-stop on time window
- CI: Update to actions/checkout@v3
- CI: Update to actions/cache@v3
- BUG/MINOR: stats: define the description' background color in dark color scheme
- CI: github actions: disable -Wno-deprecated
- CI: cirrus: switch to FreeBSD-13.0
- BUG/MINOR: mux-h2: do not send GOAWAY if SETTINGS were not sent
- BUG/MINOR: cache: do not display expired entries in "show cache"
- BUILD: debug: mark the __start_mem_stats/__stop_mem_stats symbols as weak
- BUG/MINOR: mux-h2: do not use timeout http-keep-alive on backend side
- BUG/MINOR: mux-h2: use timeout http-request as a fallback for http-keep-alive
- BUG/MEDIUM: mux-h1: Don't request more room on partial trailers
- BUILD: sched: workaround crazy and dangerous warning in Clang 14
- BUILD: compiler: use a more portable set of asm(".weak") statements
- BUG/MEDIUM: stream: do not abort connection setup too early
- BUG/MEDIUM: fcgi-app: Use http_msg flags to know if C-L header can be added
- BUG/MEDIUM: compression: Don't forget to update htx_sl and http_msg flags
- SCRIPTS: announce-release: update the doc's URL
- DOC: lua: update a few doc URLs
- SCRIPTS: announce-release: add shortened links to pending issues
- BUILD: calltrace: fix wrong include when building with TRACE=1
- BUG/MINOR: cache: Disable cache if applet creation fails
- BUG/MAJOR: connection: Never remove connection from idle lists outside the lock
- MINOR: task: add a new task_instant_wakeup() function
- MEDIUM: queue: use tasklet_instant_wakeup() to wake tasks
- DOC: remove my name from the config doc
- BUG/MINOR: rules: Forbid captures in defaults section if used by a backend
- BUG/MEDIUM: rules: Be able to use captures defined in defaults section
- BUG/MINOR: rules: Fix check_capture() function to use the right rule arguments
- Revert "CI: github actions: disable -Wno-deprecated"
- BUG/MINOR: sample: add missing use_backend/use-server contexts in smp_resolve_args
- BUG/MINOR: connection: "connection:close" header added despite 'close-spread-time'
- REGTESTS: fix the race conditions in be2dec.vtc ad field.vtc
Version 0.6.0
-------------
- A custom ``hash_method`` may now be provided to ``FileSystemCache`` for
hashing keys.
- Fix ``PermissionError`` issue with ``FileSystemCache`` on Windows.
8.1.0 - 2022-01-30
Changed
When using ns.PATH, only split off a maximum of two suffixes from a file name.
8.0.2 - 2021-12-14
Fixed
Bug where sorting paths fail if one of the paths is '.'
8.0.1 - 2021-12-10
Fixed
Compose unicode characters when using locale to ensure sorting is correct across all locales
8.0.0 - 2021-11-03
Re-release 7.2.0 as 8.0.0 because introduction of type hints can break CI builds
9.1.0 (2022-04-01)
------------------
- Fix loading FriBiDi on Alpine
- Added setting for converting GIF P frames to RGB
- Allow 1 mode images to be inverted
- Raise ValueError when trying to save empty JPEG
- Always save TIFF with contiguous planar configuration
- Connected discontiguous polygon corners
- Ensure Tkinter hook is activated for getimage()
- Use screencapture arguments to crop on macOS
- Do not mark L mode JPEG as 1 bit in PDF
- Added support for reading I;16R TIFF images
- If an error occurs after creating a file, remove the file
- Fixed calling DisplayViewer or XVViewer without a title
- Retain RGBA transparency when saving multiple GIF frames
- Save additional ICO frames with other bit depths if supplied
- Handle EXIF data truncated to just the header
- Added support for reading BMP images with RLE8 compression
- Support Python distributions where _tkinter is compiled in
- Added support for PPM arbitrary maxval
- Added BigTIFF reading
- When converting, clip I;16 to be unsigned, not signed
- Fixed loading L mode GIF with transparency
- Improved handling of PPM header
- Reset size when seeking away from "Large Thumbnail" MPO frame
- Replace requirements.txt with extras
- Added PyEncoder and support BLP saving
- Handle TGA images with packets that cross scan lines
- Added FITS reading
- Added rawmode argument to Image.getpalette()
- Fixed BUFR, GRIB and HDF5 stub saving
- Do not automatically remove temporary ImageShow files on Unix
- Correctly read JPEG compressed BLP images
- Merged _MODE_CONV typ into ImageMode as typestr
- Consider palette size when converting and in getpalette()
- Added enums
- Ensure image is opaque after converting P to PA with RGB palette
- Attach RGBA palettes from putpalette() when suitable
- Added get_photoshop_blocks() to parse Photoshop TIFF tag
- Drop excess values in BITSPERSAMPLE
- Added unpacker from RGBA;15 to RGB
- Enable arm64 for MSVC on Windows
- Keep IPython/Jupyter text/plain output stable
- Raise an error when performing a negative crop
- Deprecated show_file "file" argument in favour of "path"
- Fixed SPIDER images for use with Bio-formats library
- Ensure duplicated file pointer is closed
- Added specific error if path coordinate type is incorrect
- Return an empty bytestring from tobytes() for an empty image
- Remove readonly from Image.__eq__
# waldo 0.4.0
* Atomic S3 classes with format methods now use those methods when
displaying comparisons (#98). If the printed representation is the
same, they fallback to displaying the underlying data.
* Rowwise data frame comparisons are now much much faster (#116),
and respect the `max_diffs` argument (@krlmlr, #110).
* Unnamed environments now compare by value, not by reference (i.e. if
two environments contain the same values, they compare the same, even
if they're different environments) (#127). Environments that contain
self-references are handled correctly (#117). Differences between pairs
of environments are only ever reported once.
* In the unlikely event that you have bare CHARSXP objects, waldo now
handles them (#121).
* S4 objects are labelled with their class, not all superclasses (#125).
* `compare_proxy()` ignores the `"index"` attribute for data tables
(@krlmlr, #107), and works again for `RProtoBuf` objects
(@MichaelChirico, #119)
* Infinite values can be compared with a tolerance (@dmurdoch, #122).
Version 22.3.1
Add fall back for Windows even loop fetching
Version 22.3.0
Features
* API for multi-application server
🚨 BREAKING CHANGE: The old sanic.worker.GunicornWorker has been removed. To run Sanic with gunicorn, you should use it thru uvicorn as described in their docs.
🧁 SIDE EFFECT: Named background tasks are now supported, even in Python 3.7
* Parse Authorization header as Request.credentials
* Add config option to skip Touchup step in application startup
* Updates to CLI help messaging
* Downgrade warnings to backwater debug messages
* Allow for multidict v0.6
* Upgrade CLI catching for alternative application run types
* Conditionally inject CLI arguments into factory
* Add new start and stop event listeners to reloader process
* Remove loop as required listener arg
* Better exception for bad URL parsing
sanic-routing#47 Add a new extention parameter type: <file:ext>, <file:ext=jpg>, <file:ext=jpg|png|gif|svg>, <file=int:ext>, <file=int:ext=jpg|png|gif|svg>, <file=float:ext=tar.gz>
👶 BETA FEATURE: This feature will not work with path type matching, and is being released as a beta feature only.
sanic-routing#57 Change register_pattern to accept a str or Pattern
sanic-routing#58 Default matching on non-empty strings only, and new strorempty pattern type
🚨 BREAKING CHANGE: Previously a route with a dynamic string parameter (/<foo> or /<foo:str>) would match on any string, including empty strings. It will now only match a non-empty string. To retain the old behavior, you should use the new parameter type: /<foo:strorempty>.
Bugfixes
* Remove error_logger on websockets
* Fix newly assigned None in task registry
sanic-routing#52 Add type casting to regex route matching
sanic-routing#60 Add requirements check on regex routes (this resolves, for example, multiple static directories with differing host values)
Deprecations and Removals
* 22.3 Deprecations and changes
debug=True and --debug do NOT automatically run auto_reload
Default error render is with plain text (browsers still get HTML by default because auto looks at headers)
config is required for ErrorHandler.finalize
ErrorHandler.lookup requires two positional args
Unused websocket protocol args removed
* Deprecate loading of lowercase environment variables
Developer infrastructure
* Revert code coverage back to Codecov
* Upgrade tests for sanic-routing changes
sanic-testing#35 Allow for httpx v0.22
Improved Documentation
* Fix link in README for ASGI
* Document middleware on_request and on_response
* Add missing documentation for Request.respond
Miscellaneous
* Fix typing for ListenerMixin.listener
* Clear deprecation warning in asyncio.wait
* Cleanup __slots__ implementations
* Clear deprecation warning in asyncio.get_event_loop
Version 22.3.0
Fixed: change typing on register_pattern
[BREAKING] Only match non-empty string
Add casting to regex matching
Add extension parameter type
Add requirements check on regex routes
Bump version and 22.3
Update REGEX for file extensions
Version 2.12.0
--------------
- Added lexers:
* Cplint
* Macaulay2
* Minecraft
* Qlik
* ``UnixConfigLexer`` for "colon-separated" config files, like ``/etc/passwd``
- Updated lexers:
* Agda: Update keyword list
* C family: Fix identifiers after ``case`` statements
* Clojure: Highlight ratios
* Csound: Update to 6.17
* CSS: Update the list of properties
* Elpi:
- Fix catastrophic backtracking
- Fix handling of ``->``
* Futhark: Add missing tokens
* Gherkin: Add ``But``
* Inform6: Update to 6.36
* JSON: Support C comments in JSON
* LilyPond:
- Fix incorrect lexing of names containing a built-in
- Fix properties containing dashes
* PHP: Update builtin function and keyword list
* Scheme: Various improvements
* Spice: Update the keyword list, add new types
* Terraform:
- Support non-idiomatic comments
- Fix class name lexing
- Add ``plugins`` argument to ``get_all_lexers()``.
- Bump minimal Python version to 3.6
- Fix multiple lexers marking whitespace as ``Text``
- Remove various redundant uses of ``re.UNICODE``
- Associate ``.resource`` with the Robot framework
- Associate ``.cljc`` with Clojure
- Associate ``.tpp`` with C++
- Remove traces of Python 2 from the documentation
- The ``native`` style was updated to meet the WCAG AAA contrast guidelines
- Fix various typos
- Fix ``Groff`` formatter not inheriting token styles correctly
- Various improvements to the CI
- The Ada lexer has been moved to a separate file
- When ``linenos=table`` is used, the ``<table>`` itself is now wrapped with a ``<div class="highlight">`` tag instead of placing it inside the ``<td class="code">`` cell
5.8.1
-----
* Add release note about missing pbr.json fix
* Avoid recursive calls into SetupTools entrypoint
* remove explicit mock
* Don't test with setuptools local distutils
* Use context blocks for open() calls in packaging
3.2.1 (2022-04-11)
* Bugfixes
* Fix incorrect namespace used for caching function returns
* Remove redundant encode
* Remove redundant lowercase
* Remove unused `try`/`except` path
* Add types to the private API (disallow untyped calls and defs)
* Rely on `python_requires` instead of runtime check
* Docs
* Fix docs with updated types
* Fix link in Travis CI badge
* Rewrite documentation intro
* Remove unnecessary subheading
* Unify case
3.2.0 (2022-02-20)
* Features
* Add types to the public API
* Bugfixes
* Add support for Python 3.10
* Drop support for EOL Python 3.6
* Remove py2 tag from wheel
* Remove extra backtick in README