Coaster

Latest version: v0.6.1

Safety actively analyzes 619482 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 5

0.7.0

------------------

* Dropped Python 2.7 support
* Removed deprecated ``docflow`` module. ``StateManager`` replaces it
* Removed deprecated ``make_password`` and ``check_password`` functions
* Added ``compress_whitespace`` to mimic browser compression of whitespace
* Removed unused and untested ``word_count`` function
* Added SQLAlchemy 1.4 support and dropped support for annotations and roles
on synonyms
* Registries now support property-like access and caching
* Dropped Python 3.6 support as it lacks typing annotations
* Removed SandboxedFlask as it is unused and adds maintenance overhead
* Fix MarkdownColumn behaviour with None value
* ``manage.py`` is no longer supported as Flask-Script has been deprecated
* Log reporting over SMS has been removed as it is no longer reliable under the
Indian DLT template system; Telegram reporting is typically more effective
* Local stack variables in error logs no longer show app config, and don't
repeat already logged values

0.6.1

------------------

* Renamed ``coaster.roles.set_roles`` to ``with_roles`` and added support for
wrapping ``declared_attr`` and column properties
* Restructured roles to match current understanding of principals, actors and
anchors
* Added SQLAlchemy column annotations
* Reorganised ``coaster.utils`` and ``coaster.sqlalchemy`` into sub-packages
* ``LabeledEnum`` now supports grouped values if declared as a set
* New: ``coaster.sqlalchemy.StateManager`` adds state management to models
* Discontinued: ``coaster.utils.*`` is no longer available directly as
``coaster.*``
* Discontinued: ``coaster.views.load_models`` no longer accepts the
``workflow`` parameter
* New: ``requestquery`` and ``requestform`` to complement
``coaster.views.requestargs``
* New: ``coaster.auth`` module with a ``current_auth`` proxy that provides
a standardised API for login managers to use
* New: ``is_collection`` util for testing if an item is a collection data type
* New: ``coaster.views.requires_permission`` decorator
* New: ``coaster.views.classview`` provides a new take on organising views
into a class
* New: ``coaster.utils.classmethodproperty``: like a property, but for class
methods
* New: ``coaster.views.endpoint_for``: discover an endpoint given a URL
* Changed: ``UuidMixin`` no longer provides ``url_id``
* New: ``coaster.sqlalchemy.UrlForMixin`` now provides an ``absolute_url``
property
* Changed: ``coaster.sqlalchemy.UrlForMixin`` now recognises that the project
may have multiple apps with distinct URLs for the same content
* New: ``coaster.sqlalchemy.registry`` provides two registries for forms and
views associated with models
* New: ``coaster.views.requires_roles`` decorator for ``ModelView``, with
``is_available`` test
* New: ``UrlForMixin`` now provides ``view_for`` and ``classview_for``
* Changed: ``TimestampMixin`` optionally uses ``timestamptz`` columns.
A future release may make this the default
* Changed: Markdown parser has moved to ``coaster.utils.markdown`` and is no
longer a hack to be embarrassed by
* New: Unicode whitespace strippers, ``ulstrip``, ``urstrip`` and ``ustrip``
* Added lazy role grant evaluation and declarative role grants
* New: ``nary_op`` decorator to turn a binary operator into a chained n-ary
operator
* Added datasets for limited enumeration in role access, as a stopgap until
migration to GraphQL
* Removed ShortUUID in favour of the more stable Base58
* MarkdownColumn now supports a custom markdown processor and options
* New: Support for secret key rotation in Flask apps
* Last version to support Python 2.7; Coaster 0.7 will be Py 3.6+ only

0.6.0

------------------

* Removed deprecated ``coaster.app.configure``
* ``coaster.app.init_app`` now takes an optional environment, reading from the
``FLASK_ENV`` environment variable and defaulting to ``DEVELOPMENT``. This
reverses the change introduced in version 0.3.2
* ``coaster.manage`` no longer accepts environment or calls ``init_for``.
Apps must do this themselves
* ``coaster.manage`` now exposes Alembic migrations via Flask-Migrate instead
of Flask-Alembic
* When using UUID primary keys in ``IdMixin``, a UUID is automatically
generated the first time the ``id`` column is accessed, without the need
to commit to the database
* The underlying implementaiton, ``auto_init_default``, is also available
for use on other models
* The ``url_id`` property is now part of ``IdMixin`` and supports SQL queries
as well. This makes it compatible with the support for ``url_name`` in
``load_models``
* New: ``shortuuid`` module exposed via the ``utils`` module, with ``suuid``,
``suuid2uuid`` and ``uuid2suuid`` functions
* ``buid`` reverts to using UUID4 instead of UUID1mc
* The deprecated ``newid`` alias for ``buid`` has now been removed
* New: ``UuidMixin`` that adds a UUID secondary key and complements ``IdMixin``
* ``BaseIdNameMixin`` now implements ``url_id_name`` (previously ``url_name``)
as a hybrid property and has an additional ``url_name_suuid`` property.
``BaseScopedIdNameMixin`` has an upgraded ``url_id_name`` as well
* ``load_models`` no longer hardcodes for ``url_name``, instead accepting an
optional ``urlcheck`` list parameter
* Added Python 3.6 compatibility
* Removed the unused ``nullstr`` and renamed ``nullunicode`` to ``nullstr``
* New: ``add_primary_relationship`` to define a primary child on parent models
* Added ``NoIdMixin`` that is BaseMixin minus the id column
* New: ``require_one_of`` util for functions that require any one of many
parameters

0.5.2

------------------

* Removed ``add_and_commit`` and associated tests
* ``failsafe_add`` now takes filters optionally, failing silently in case of
error
* Added Slack error logging and better throttling for Slack and SMS
* New util: ``isoweek_datetime`` for week-based datetimes in reports
* New util: ``midnight_to_utc`` for midnight in any timezone converted to UTC

0.5.1

------------------

* New util: ``uuid1mc`` generates a UUID1 with a random multicast MAC id
* New util: ``uuid1mc_from_datetime`` generates a UUID1 with a specific
timestamp
* IdMixin now supports UUID primary keys
* Deprecated ``add_and_commit`` in favour of ``failsafe_add``
* New utils: ``uuid2buid`` and ``buid2uuid``
* Removed ``timestamp_columns`` (was deprecated in 0.4.3)
* Replaced ``py-bcrypt`` dependency with ``bcrypt``
* ``buid`` now uses UUID1 with random multicast MAC addresses instead of UUID4
* New util: ``unicode_http_header`` converts ASCII HTTP header strings to
Unicode
* Error traceback in ``coaster.logging`` now includes request context and
session cookie
* New: ``func.utcnow`` for reliable UTC timestamps generated in the database
* TimestampMixin now uses ``func.utcnow`` to move datetime generation
server-side

0.5.0

------------------

* ``Base(Scoped)?(Id)?NameMixin`` now disallows blank names by default. Bumped
version number since this is a non-breaking incompatible change
* ``JsonDict`` now uses ``JSONB`` on PostgreSQL 9.4
* New ``CoordinatesMixin`` adds latitude and longitude columns
* Rudimentary NLP methods
* ``LabeledEnum`` now has ``keys()`` and ``values()`` methods as well
* Move the query class to ``IdMixin`` and ``TimestampMixin`` as they are used
independently of BaseMixin
* ``LabeledEnum`` now takes an ``__order__`` specification
* New ``word_count`` util returns word count for HTML documents
* New ``for_tsquery`` formats text queries to PostgreSQL to_tsquery parameters
* New ``get`` and ``upsert`` methods in ``Base(Scoped)NameMixin``
* ``render_with`` no longer enables JSON handler by default; now gracefully
handles ``*/*`` requests
* ``manage.py``'s shell now allows additional context to be made available in
``locals()``
* ``coaster.db`` now provides a custom SQLAlchemy session with additional
helper methods, starting with one: ``add_and_commit``, which rolls back if
the commit fails
* Removed ``one_or_none`` in favor of SQLAlchemy's implementation of the same
in 1.0.9
* New ``is_url_for`` decorator in UrlForMixin

Page 1 of 5

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.