Change history

RECENT VERSION HISTORY

First started in 2009.

Quick links:

2017

0.2.7, 2017-04-28

0.2.8, 2017-04-28

0.2.10, 2017-04-29

  • Text fetch (for converters) was returning bytes, not str; fixed.

0.2.11, 2017-04-29

  • Encoding auto-detection for text extraction from files.

0.2.12 to 0.2.13, 2017-05-02

  • More file types support for simple text extraction.
  • Better encoding support.

1.0.0, 2017-08-05

  • Consolidation of common functions from multiple projects to reduce code duplication. Some modules renamed.

1.0.1, 2017-08-14

  • PyPI/setup.py bugfix (not all subpackages were uploaded).

1.0.2, 2017-08-20 onwards

  • Metaclass functions added.
  • Extensions to SQLAlchemy utility functions.

1.0.3, 2017-10-18

  • Several small changes for CamCOPS.

… to 1.0.8, 2017-11-29

  • Similarly.

2018

1.0.9 to 1.0.10, 2018-01-05 + 2018-02-19

1.0.11, 2018-02-23

1.0.12, 2018-03-08

1.0.13, 2018-03-08

1.0.14, 2018-05-01

1.0.15, 2018-05-04

1.0.16, 2018-05-22

1.0.17, 2018-05-27

  • lazy dictionaries

1.0.18, 2018-06-29

  • update for Django 2.0+
  • update for Pendulum 2.0+

1.0.19 to 1.0.21, 2018-07-01 to 2018-07-02

1.0.22, 2018-07-07

  • as_sql (etc.) options to cardinal_pythonlib.sqlalchemy.alembic_func.upgrade_database()

1.0.23, 2018-07-23

  • separation of version string for setup.py

1.0.24, 2018-09-11 to 2018-09-14

  • extra debug option (debug_wkhtmltopdf_args) for cardinal_pythonlib.pdf.get_pdf_from_html()
  • Sphinx autodocumentation.
  • create_base64encoded_randomness() removed from cardinal_pythonlib.crypto as was duplicated as cardinal_pythonlib.randomness.create_base64encoded_randomness().
  • removed all requirements (temporarily? permanently?) as we were having problems installing on machines with wrong compiler versions or absent compilers, but didn’t need those specific sub-dependencies; so consequence is that packages that use this software need to add additional requirements.

1.0.25, 2018-09-16

  • Dependencies put back, except dependency on regex removed.
  • Further documentation.
  • Duplicate hash-related functions removed from cardinal_pythonlib.crypto; better versions were in cardinal_pythonlib.hash.
  • Bugfix to cardinal_pythonlib.sqlalchemy.schema.is_sqlatype_date() for more recent versions of SQLAlchemy (e.g. 1.2.11). Error was: AttributeError: module 'sqlalchemy.sql.sqltypes' has no attribute '_DateAffinity'.

1.0.26, 2018-09-21

  • Bugfix to cardinal_pythonlib.sqlalchemy.orm_inspect.deepcopy_sqla_object(); crash if objmap was None.

1.0.26, 2018-09-22

1.0.27 to 1.0.29, 2018-09-23 to 2018-09-28

1.0.30, 2018-10-10

1.0.32, 2018-10-16

1.0.33, 2018-11-02

1.0.34, 2018-11-06

1.0.35 to 1.0.36, 2018-11-06

1.0.37, 2018-11-10

  • Clarified cardinal_pythonlib.colander_utils.OptionalPendulumNode as to timezone, and added the synonym cardinal_pythonlib.colander_utils.OptionalPendulumNodeLocalTZ and the UTC version cardinal_pythonlib.colander_utils.OptionalPendulumNodeUTC.
  • In cardinal_pythonlib.sqlalchemy.alembic_func.upgrade_database(), which allowed upgrades only (not downgrades), pointless decorative parameter operation_name removed.
  • Added cardinal_pythonlib.sqlalchemy.alembic_func.downgrade_database().
  • Made cardinal_pythonlib.sqlalchemy.core_query.fetch_all_first_values() a bit more generic.

1.0.38, 2018-11-26

1.0.39, 2018-12-02

  • Changed the time options to the date/time widgets in cardinal_pythonlib.colander_utils.OptionalPendulumNodeLocalTZ and cardinal_pythonlib.colander_utils.OptionalPendulumNodeUTC. The previous problem was that a 12-hour format (e.g. “11:30 PM”) was being used, and this re-interpreted incoming (Python) 24-hour values as morning times.

1.0.40, 2018-12-11

1.0.41, 2018-12-17 to 2018-12-30

2019

1.0.42 to 1.0.45, 2019-01-04

  • Minor fix: __init__.py missing from cardinal_pythonlib.email; required for Python 3.5.
  • Some bugfixes to cardinal_pythonlib.email.sendmail for e-mail servers not supporting login (!).

1.0.46, 2019-01-19

1.0.47, 2019-02-09

1.0.48 to 1.0.49, 2019-03-24

1.0.50, 2019-04-05

1.0.51, 2019-04-23

  • Bugfix to cardinal_pythonlib.winservice which checked if os.environ["_SPHINX_AUTODOC_IN_PROGRESS"] when it meant if os.environ.get("_SPHINX_AUTODOC_IN_PROGRESS"), leading to a potential crash.
  • Similar fix to cardinal_pythonlib.django.middleware.

1.0.52, 2019-04-23

1.0.53, 2019-04-27

  • New MIME types.
  • Duration handlers in cardinal_pythonlib.datetimefunc, including ISO-8601 representations of duration.
  • Extra small functions for colander in cardinal_pythonlib.colander_utils.

1.0.54, 2019-06-14

1.0.55, 2019-06-15

1.0.56 (buggy), 1.0.57, 2019-06-18

  • Build function updates. Avoid 1.0.56, it has a stupid bug confusing tar/git.

1.0.58 (2019-06-29)

1.0.59 (2019-07-02)

1.0.60 (2019-08-06)

1.0.61 (2019-08-19)

  • Improvement to cardinal_pythonlib.django.serve.serve_file() so that it won’t crash if the XSENDFILE variable is not present in the Django settings (defaulting to False).

1.0.62 (2019-08-31)

1.0.63 (2019-09-01)

1.0.64 (2019-09-29)

1.0.65 (2019-09-30)

1.0.66 to 1.0.71 (2019-10-06 to 2019-10-07)

1.0.72 to 1.0.73 (to 2019-10-10)

1.0.74 (2019-10-24)

1.0.75 to 1.0.77 (2019-10-25 to 2019-10-26)

1.0.78 to 1.0.81 (2019-11-17)

1.0.82 (2019-11-20)

1.0.83 (2019-12-03)

2020

1.0.84 (2020-01-11 to 2020-01-19)

  • Create cardinal_pythonlib.__version__
  • Copyright years to 2020.
  • cardinalpythonlib_convert_mdb_to_mysql tool.

1.0.85 (2020-02-03)

1.0.86 (2020-04-20)

1.0.87 (2020-04-24)

1.0.88 (2020-04-24)

1.0.89 (2020-06-16, MB)

1.0.90 (2020-06-20)

1.0.91 (2020-06-28)

1.0.92 (2020-06-28)

  • Made several other large dependencies optional.

1.0.93 (2020-07-12)

1.0.94 (2020-07-21)

1.0.95 (2020-09-21)

1.0.96 (2020-09-28)

1.0.97 (2020-10-04)

1.0.98 (to 2020-11-02)

1.0.99 (2020-11-14)

1.1.0 (2020-12-01)

2021

1.1.1 to 1.1.2 (2021-02-21)

  • cardinal_pythonlib.rounding
  • Decimal option in cardinal_pythonlib.spreadsheets, and some other minor spreadsheet-handling capabilities. Bugfix from 1.1.1 to 1.1.2.

1.1.3 (2021-02-22 to 2021-03-15)

1.1.4 (2021-04-11)

  • Minor improvements to cardinal_pythonlib.spreadsheets.
  • Fix UUID export in cardinal_pythonlib.excel and a related function.

1.1.5 (2021-04-23 to 2021-05-22)

  • Minor improvements to cardinal_pythonlib.spreadsheets.
  • fix enumlike.py to work with Python 3.9

1.1.6 (2021-05-22)

  • Bump Pendulum to 2.1.1 or higher because earlier versions have a sort-of bug relating to durations: https://github.com/sdispater/pendulum/pull/482. I am not entirely convinced Pendulum has done this the right way. However, we can detect its behaviour and do sensible things with ISO duration conversions. Corresponding changes to datetimefunc.py, plus better self-tests.
  • Note, in general, the use of export PYTHONDEVMODE=1 to ensure no additional DeprecationWarning messages come up.

1.1.7 (2021-05-24)

  • Minor spreadsheet tweaks.

1.1.8 (2021-10-04)

1.1.9 (2021-10-04)

1.1.10 (2021-10-05)

1.1.11 (2021-10-11 to 2021-10-13)

  • Simple bulk e-mail tool, cardinalpythonlib_bulk_email.
  • cardinal_pythonlib.rpm
  • numpy to 1.20.0, mandating Python 3.7+

1.1.12 (2021-10-18 to 2021-11-03)

1.1.13 (2021-11-09 to 2021-11-17)

  • ignore_none parameter to cardinal_pythonlib.spreadsheets.check_attr_all_same(), cardinal_pythonlib.spreadsheets.require_attr_all_same(), cardinal_pythonlib.spreadsheets.prefer_attr_all_same(). Default is False so no change required to existing code.
  • use of time.clock() replaced by time.perf_counter(). See https://www.webucator.com/article/python-clocks-explained/

1.1.14 (2021-11-17 to 2021-11-18)

  • Extra MIME type constants.
  • HTTP response objects for JSON.

1.1.15 (2021-11-21)

1.1.16 (2021-12-08)

1.1.17 (2022-02-26)

1.1.18 (2022-03-02)

1.1.19 (2022-04-27 to 2022-06-02)

1.1.20 (2022-06-02)

  • No code change, but after uploading successfully with ``twine upload dist/FILE.tar.gz”, automatic or manual downloads failed with “SignatureDoesNotMatch” / “The request signature we calculated does not match the signature you provided. Check your Google secret key and signing method.” Upgraded from twine==3.2.0 to twine==4.0.1 (with requests==2.27.1). No joy. But I think the problem is the site refusing downloads, not uploads. Try to download all from https://pypi.org/simple/cardinal-pythonlib/; works to v1.1.18, then stops working. However, it’s also the same error message for garbage filename in the URL. Could it be this error? https://github.com/stevearc/pypicloud/issues/120

1.1.21 (2022-06-05)

1.1.22 (2022-08-10)

  • Fast RPM functions, using numba, specialized for the two-choice situation.