Skip to content

Releases: seantis/libres

1.0.0

10 Feb 15:58
35a4405

Choose a tag to compare

  • Adds support for Python 3.14
  • Adds support for SQLAlchemy 2.0
  • Drops support for Python 3.9
  • Drops support for SQLAlchemy 1.4

0.10.2

05 Feb 07:45
cda1083

Choose a tag to compare

  • Prepares for SQLAlchemy 2.0 support

libres 1.0 will require SQLAlchemy 2.0, this is probably the last release that will support 1.4

0.10.1

21 Jan 15:52
baeaa04

Choose a tag to compare

  • Adds proper support for SQLAlchemy 1.4. As a result of this
    Allocation.type and Reservation.type are no longer nullable
    and have a default value of 'generic', you may use the following
    recipe using an alembic Operations object to migrate existing
    databases:
    context.operations.execute("""
      UPDATE allocations
         SET type = 'generic'
       WHERE type IS NULL;
    """)
    context.operations.alter_column('allocations', 'type', nullable=False)
    context.operations.execute("""
      UPDATE reservations
         SET type = 'generic'
       WHERE type IS NULL;
    """)
    context.operations.alter_column('reservations', 'type', nullable=False)

0.10.0

15 Jan 16:11
b697860

Choose a tag to compare

  • Adds new entity ReservationBlocker for administrative blockers
    of targeted allocations for the targeted timespans, this also ends
    up adding a new column source_type to ReservedSlot which can be
    added using the following recipe using an alembic Operations object:
      operations.add_column(
        'reserved_slots',
        Column(
          'source_type',
          Enum(
              'reservation', 'blocker',
              name='reserved_slot_source_type'
          ),
          nullable=False,
          server_default='reservation'
        )
      )
      operations.alter_column(
        'reserved_slots',
        'source_type',
        server_default=None
      )

0.9.0

23 May 07:52
75fbce5

Choose a tag to compare

  • Replaces JSON database type with JSONB, this means
    Postgres as a backend is not required. You will also need
    to write a migration for existing JSON columns. You may use
    the following recipe using an alembic Operations object:
    operations.alter_column(
        'table_name',
        'column_name',
        type_=JSON,
        postgresql_using='"column_name"::jsonb'
    )

0.8.0

15 Jan 10:26
99e5162

Choose a tag to compare

  • Adds support for Python 3.13
  • Drops support for Python 3.8
  • Modernizes type hints

0.7.3

21 Aug 06:46
a40aedc

Choose a tag to compare

  • Adds support for Python 3.12

0.7.2

07 Feb 09:14
100c886

Choose a tag to compare

  • Fixes another incorrect type annotation in Scheduler.

0.7.1

18 Jan 12:30
5e4dbc2

Choose a tag to compare

  • Fixes some incorrect type annotations in Scheduler.

0.7.0

11 Jul 09:55
4408d0a

Choose a tag to compare

  • Drops support for Python 3.7 and adds support for 3.11

  • Switches to pyproject.toml

  • Adds type annotations

  • Changes Scheduler.allocate to avoid hundreds of separate
    SQL queries when passing in hundreds of datetime ranges in
    order to identify existing overlapping allocations.

    Performance could still be a concern, since the query contains
    a lot of datetime comparisons. It might be quicker in the common case to filter to the minimum and maximum dates that
    have been passed in and doing the overlap checks entirely in
    Python. We will need to keep an eye on this.