Release Notes¶
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
Note: Minor version 0.X.0 update might break the API, It's recommended to pin tipg to minor version: tipg>=0.1,<0.2
unreleased¶
- switch to official python docker image from
bitnami - changed container image to use non-root
user
1.2.1 - 2025-08-26¶
- update
starlette-cramjamrequirement to>=0.4,<0.6
1.2.0 - 2025-07-23¶
-
remove
request: RequestinCollection.featuresandCollection.get_tileabstract methods -
pass a
asyncpg.ConnectiontoPgCollection.featuresandPgCollection.get_tileinstead of aRequestobject -
switch
pg_get_collection_indexinput fromasyncpg.BuildPgPooltoasyncpg.Connectionobject
1.1.2 - 2025-07-02¶
- fix
relvalues for tiling scheme links
1.1.1 - 2025-06-13¶
- remove
tipg_schemaalias inDatabaseSettingsto support env variable settings
1.1.0 - 2025-05-06¶
- update geojson-pydantic requirement to
>=1.0,<3.0
1.0.1 - 2025-03-17¶
- fix typo when using catalog_ttl
1.0.0 - 2025-03-07¶
Added¶
- add
tilesetsandviewerlinks in/collectionsand/collections/{collectionId}response links - add the ability to use a schema other than pg_temp for installing catalog functions (using
TIPG_DB_APPLICATION_SCHEMAenvironment variable) - re-use pg connection for
features_countandfeatures - add
tipg.collections.Collectionabstract base class
Changed¶
- rename
tipg.collections.Collection -> tipg.collections.PgCollectionbreaking change - update
Collection.get_tile()andCollection.features()signature to expectrequest: Requestas first parameter breaking change - rename
tipg.collections.get_collection_indextotipg.collections.pg_get_collection_indexand change the function to useDatabaseSettingsinstance directly instead of keyword option breaking change - update
tipg.collections.pg_get_collection_indexto return a list of PgCollection instead of a Catalog breaking change - update
tipg.collections.register_collection_catalogto passdb_settingstopg_get_collection_indexfunction breaking change - remove deprecated tiles endpoint with default TileMatrixSet
- rename tilejson endpoint from
/collections/{collectionId}/{tileMatrixSetId}/tilejson.jsonto/collections/{collectionId}/tiles/{tileMatrixSetId}/tilejson.jsonbreaking change - rename stylejson endpoint from
/collections/{collectionId}/{tileMatrixSetId}/style.jsonto/collections/{collectionId}/tiles/{tileMatrixSetId}/style.jsonbreaking change -
change
database.connect_to_dbinput order breaking change# Before async def connect_to_db( app: FastAPI, settings: Optional[PostgresSettings] = None, schemas: Optional[List[str]] = None, user_sql_files: Optional[List[pathlib.Path]] = None, **kwargs, ) -> None: # Now async def connect_to_db( app: FastAPI, *, schemas: List[str], tipg_schema: str = "pg_temp", user_sql_files: Optional[List[pathlib.Path]] = None, settings: Optional[PostgresSettings] = None, **kwargs, ) -> None:
Fixed¶
- fix URL in HTML templates when behind proxy
0.10.1 - 2025-03-04¶
- remove
PostgresSettingsinitialization from main.py
0.10.0 - 2025-02-20¶
- convert tile bbox into collection's CRS for
MVTwhere selection (author @callsumzg, developmentseed/tipg!205)
0.9.0 - 2025-01-17¶
-
fix serialization of UUID columns (author @giorgiobasile, developmentseed/tipg!199)
-
Unify Docker images (deprecate
tipg-uvicorn) -
Remove
python3.8support -
Add
python3.13support
0.8.0 - 2024-10-17¶
- update
starlette-cramjamdependency and set compression-level default to 6 - update
morecantiledependency requirement to allow6.x
0.7.3 - 2024-09-16¶
- add
TIPG_SORT_COLUMNSsettings to enable/disable columns sorting (default toTrue) (author @mattdiez-at, developmentseed/tipg!187) - fix
protomaps-leafletversion in HTML template (co-author @bmcandr, developmentseed/tipg!190)
0.7.2 - 2024-08-27¶
- move back to
fastapidependency
0.7.1 - 2024-05-07¶
- move to
fastapi-slimto avoid unwanted dependencies
0.7.0 - 2024-04-01¶
- update leaflet version
- add
templated=Truein template URL links - add
(Template URL)in template URL links title - remove deserialization in
tipg.factory.create_html_responsefunction - add
titleoption tocreate_html_responsemethod, in order to set the web page title - add
**kwargstocreate_html_responsemethod to allow custom object to be passed to the template - fix url/path passed to the HTML template
- fix HTML templates when passing Query Parameters
- replace
maplibrewithleaflet+protomaps-leafletto support other TMS in the HTMLviewer - deprecate non-tilematrixset prefixed endpoints for tiles/tilejson/stylejson/viewer to better match with the OGC Spec breaking
- re-order endpoints
- remove Z limit to support negative values
0.6.3 - 2024-02-02¶
- update pydantic's
Fieldusage to avoid 3.0 deprecation - update starlette's `TemplateResponse' usage to avoid deprecation
0.6.2 - 2024-01-19¶
- add
root_pathAPI settings - fix invalid
urlparsing in HTML responses
0.6.1 - 2024-01-11¶
- use
spatial_extentanddatetime_extentconfiguration options inCatalogUpdateMiddlewareand/refreshendpoint (author @hrodmn, developmentseed/tipg!164)
0.6.0 - 2024-01-09¶
- update FastAPI version lower limit to
>0.107.0and adapt for new starlette version - fix invalid streaming response formatting
- refactor internal table properties handling
- fix sub-model Table settings (developmentseed/tipg#154)
0.5.8 - 2024-01-10¶
- fix invalid streaming response formatting [backported from 0.6.0]
0.5.7 - 2024-01-08¶
- add
tagsto all routes - fix
collectionsanditemsHTML templates to keep query-parameters when changing thepage size - update FastAPI version upper limit to
<0.107.0to avoid starlette breaking change (0.28)
0.5.6 - 2023-12-19¶
- Fix collections
prevlinks and collections html templates
0.5.5 - 2023-12-19¶
- Fix
prevoffset value
0.5.4 - 2023-12-19¶
- Fix decimal error for streaming responses (author @RemcoMeeuwissen, developmentseed/tipg!148)
0.5.3 - 2023-11-29¶
- add Postgres
datetype as valid datetime column type
0.5.2 - 2023-11-28¶
- add
TIPG_DB_SPATIAL_EXTENTandTIPG_DB_DATETIME_EXTENTenvironment options to control iftipgwill scan the tables for spatio-temporal extents (author @hrodmn, developmentseed/tipg!143)
0.5.1 - 2023-11-15¶
fixed¶
- fix for using
is nullin CQL2 filter (developmentseed/tipg!140)
0.5.0 - 2023-11-02¶
added¶
-
add
py.typedfile -
add
tipg.collections.ItemListandtipg.collections.CollectionListTypedDictclass ItemList(TypedDict): """Items.""" items: List[Feature] matched: Optional[int] next: Optional[int] prev: Optional[int] class CollectionList(TypedDict): """Collections.""" collections: List[Collection] matched: Optional[int] next: Optional[int] prev: Optional[int]
fixed¶
-
hide map element in HTML pages when collections/items do not have spatial component (developmentseed/tipg#132)
-
exclude/include tables and functions (developmentseed/tipg#130)
changed¶
-
split endpoints registration for more customization
# before class OGCFeaturesFactory(EndpointsFactory): def register_routes(self): @self.router.get("/collections", ...) @self.router.get("/collections/{collectionId}", ...) ... # now class OGCFeaturesFactory(EndpointsFactory): def register_routes(self): self._collections_route() self._collection_route() self._queryables_route() self._items_route() self._item_route() def _collections_route(self): @self.router.get("/collections", ...) ... -
Collection.features()method now returns anItemListdict- rename#before collection = Collection() features_collection, matched = collection.features(...) #now collection = Collection() items_list = collection.features(...) print(items_list["matched"]) # Number of matched items for the query print(items_list["next"]) # Next Offset print(items_list["prev"]) # Previous Offsetcatalog_dependencyattribute tocollections_dependency -
move the
collections_dependencyattribute from theEndpointsFactorytoOGCFeaturesFactoryclass -
move
/collectionsQueryParameters in theCollectionsParamsdependency -
rename
CatalogParamstoCollectionsParams -
the
CollectionsParamsnow returns aCollectionListobject -
move
s_intersectsandt_intersectsfunctions fromtipg.factorytotipg.dependencies
0.4.4 - 2023-10-03¶
fixed¶
- replace
string_to_table(...)byunnest(string_to_array(...))to support Postgres<14
changed¶
- update pydantic minimum version to >=2.4
0.4.3 - 2023-08-28¶
fixed¶
- forward
catalog_dependencyinOGCFeaturesFactoryandOGCTilesFactorywhen usingEndpointsfactory - allow Factory's prefix with path parameter
- changed
database_urltype inPostgresSettingsto always be ofpydantic.PostgresDsntype postgres_porttype inPostgresSettingsto be ofintegertype- remove additional
/prefix for dbname when constructing the database url from individual parameters
changed¶
- changed
function_parameters_queryandproperties_filter_queryfrom dependencies to simple callabe
0.4.2 - 2023-08-24¶
changed¶
- replace stamen basemap by OSM in tiles viewer
fixed¶
limitoption isless than or equal toto theMAX_FEATURES_PER_QUERYconfiguration (instead ofless than)
0.4.1 - 2023-08-04¶
Fixed¶
- set
custom_sql_directoryinCustomSQLSettingstoNoneto ensure it can be properly optional
0.4.0 - 2023-08-01¶
Changed¶
- update requirement to switch to pydantic~=2.0
- morecantile>=5.0,<6.0
- pydantic~=2.0
- pydantic-settings~=2.0
- geojson-pydantic>=1.0,<2.0
-
fastapi>=0.100
-
move
ResponseType,QueryablesResponseType,ItemsResponseType,ItemResponseType,VectorResponseType,VectorTypeandFilterLangfromtipg.enumstotipg.dependenciesand useLiteralinstead ofEnum -
add
funcattribute toCatalogUpdateMiddlewareto allow custom Catalog Update function# Before app.add_middleware( CatalogUpdateMiddleware, ttl=300, ) # Now app.add_middleware( CatalogUpdateMiddleware, func=register_collection_catalog, ttl=300, ) -
add global variables for conformance classes
Fixed¶
- remove usage of pydantic models in
/itemsand/items/{itemId}endpoints to increase performance
0.3.1 - 2023-07-28¶
Fixed¶
- fixed wrong media type option for
/queryablesendpoint (jsoninstead of `schemajson``)
Added¶
- more endpoints in performance benchmarks
0.3.0 - 2023-07-27¶
Fixed¶
- added
python-dotenvdependency viapydantic[dotenv] typequery parameter to filter collections based on their type (FunctionorTable)- fixed a small bug in the
tipg_propertiesSQL function where the bounds property was not properly transformed to 4326 (author @RemcoMeeuwissen, developmentseed/tipg!87) - handling functions that are interpreted as collections but lack parameters (author @jackharrhy, developmentseed/tipg!96)
- fixed a bug where Numeric/Decimal postgres datatype could not get serialized by orjson. They will now be encoded as string (author @RemcoMeeuwissen, developmentseed/tipg!89)
Added¶
- added popups to leaflet maps on
itemsanditempage. (author @krishnaglodha & @jackharrhy, developmentseed/tipg!91, developmentseed/tipg!94) catalog_dependencyto retrieve the list of collections (defaults totipg.dependencies.CatalogParams)
Changed¶
- pin
geojson-pydanticto>=0.4.3,<1.0to avoid geojson-pydantic breaking changes - pin
pydanticto~=1.0
0.2.0 - 2023-06-22¶
Changed¶
- rename
tipg.db->tipg.database - rename
tipg.dbmodel->tipg.collections - rename
tipg.dbmodel.Database->tipg.collections.Catalog - move
register_collection_catalogfromtipg.dbmodeltotipg.collections
# before
from tipg.db import close_db_connection, connect_to_db
from tipg.db import register_collection_catalog
from tipg.dbmodel import Database, Collection
# now
from tipg.collections import Catalog, Collection
from tipg.collections import register_collection_catalog
from tipg.database import close_db_connection, connect_to_db
Removed¶
- remove useless
app.state.db_settings
0.1.0 - 2023-06-15¶
- Initial release