Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
88cfbb9
chore: bootstrap packaging and CI
Komzpa Jul 26, 2026
1320671
test: cover legacy package smoke
Komzpa Jul 26, 2026
47455de
fix: clear Python syntax warnings
Komzpa Jul 26, 2026
996ce0b
test: cover legacy GetTile smoke
Komzpa Jul 26, 2026
60bd619
feat: add stdlib HTTP server
Komzpa Jul 26, 2026
f121d79
feat: expose TileJSON metadata
Komzpa Jul 26, 2026
1ddb2bb
feat: expose WMTS tile metadata
Komzpa Jul 26, 2026
3989521
feat: modernize tile cache semantics
Komzpa Jul 26, 2026
c7c3b49
fix: modernize projection fallback
Komzpa Jul 26, 2026
317dc88
feat: expose WMS 1.3 capabilities
Komzpa Jul 26, 2026
4aa6b65
docs: document modern client setup
Komzpa Jul 26, 2026
daed6f6
ci: build Windows executable artifacts
Komzpa Jul 26, 2026
35c847e
fix: preserve legacy rendering helpers
Komzpa Jul 26, 2026
c24f53d
fix: validate downloaded tile images
Komzpa Jul 26, 2026
237dac5
fix: record HTTP tile misses
Komzpa Jul 26, 2026
2aa87ce
feat: support named tile URL placeholders
Komzpa Jul 26, 2026
2980eaa
feat: expose JOSM imagery list
Komzpa Jul 26, 2026
041580c
fix: save WMS cache images atomically
Komzpa Jul 26, 2026
61df8a7
feat: send configured upstream headers
Komzpa Jul 26, 2026
a1339fa
fix: enforce minimum layer zoom
Komzpa Jul 26, 2026
7852d8a
feat: support zxy cache layout
Komzpa Jul 26, 2026
98c39bd
feat: support WMS URL placeholders
Komzpa Jul 26, 2026
794940b
fix: bound upstream fetch timeouts
Komzpa Jul 26, 2026
faadb4e
fix: harden stdlib route dispatch
Komzpa Jul 26, 2026
2fe1b21
fix: bound legacy canvas upstream waits
Komzpa Jul 26, 2026
ad5ead4
fix: restore empty-color overlay transparency
Komzpa Jul 26, 2026
637ef8b
fix: preserve legacy cache path lookups
Komzpa Jul 26, 2026
eb261e0
fix: keep response cache binary-safe
Komzpa Jul 26, 2026
a4e0d9e
feat: add optional upstream retries
Komzpa Jul 26, 2026
618a447
fix: make RAM tile cache LRU
Komzpa Jul 26, 2026
0dc7b06
fix: accept MIME response cache keys
Komzpa Jul 26, 2026
d99e15a
docs: keep cookies explicit in layer headers
Komzpa Jul 26, 2026
a85b8b4
chore: ignore generated build artifacts
Komzpa Jul 26, 2026
952f1ae
fix: accept bounds layer metadata alias
Komzpa Jul 26, 2026
f168719
feat: enrich JOSM imagery metadata
Komzpa Jul 26, 2026
b29d80d
fix: align overview layer metadata
Komzpa Jul 26, 2026
edabf43
chore: ship optional launcher templates
Komzpa Jul 26, 2026
b8b3d18
ci: cancel stale branch runs
Komzpa Jul 26, 2026
a86e856
feat: accept layer MIME type metadata
Komzpa Jul 26, 2026
f2522cc
feat: support WebP WMS output
Komzpa Jul 26, 2026
d552b8a
feat: support layer defaults
Komzpa Jul 26, 2026
d0b1ed1
feat: add WMS and JOSM route aliases
Komzpa Jul 26, 2026
2cd346c
chore: print server startup URLs
Komzpa Jul 26, 2026
fbf33d1
feat: accept string fetcher aliases
Komzpa Jul 26, 2026
7e4d2ed
ci: make import smoke shell portable
Komzpa Jul 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
103 changes: 103 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
name: CI

on:
push:
branches:
- master
- "ai/**"
tags:
- "*"
pull_request:
release:
types:
- published
workflow_dispatch:

concurrency:
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.head_ref || github.ref_name }}
cancel-in-progress: true

jobs:
package-smoke:
name: Package smoke (${{ matrix.os }}, Python ${{ matrix.python-version }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
- windows-latest
python-version:
- "3.11"
- "3.13"

steps:
- uses: actions/checkout@v4

- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}

- name: Install build tools
run: python -m pip install --upgrade pip build

- name: Install package
run: python -m pip install -e .

- name: Compile sources
run: python -m compileall -q setup.py index.py tools twms

- name: Import WSGI application
run: python -c "import importlib.metadata; import twms; import twms.daemon; assert twms.__version__ == '0.07z'; assert importlib.metadata.version('twms') == '0.7+z'; print(type(twms.daemon.application).__name__)"

- name: Run legacy smoke tests
run: python -m unittest discover -s tests

- name: Build source and wheel distributions
run: python -m build

windows-exe:
name: Windows executable artifact
runs-on: windows-latest
needs: package-smoke

steps:
- uses: actions/checkout@v4

- uses: actions/setup-python@v5
with:
python-version: "3.13"

- name: Install build tools
run: python -m pip install --upgrade pip pyinstaller

- name: Install package
run: python -m pip install -e .

- name: Write PyInstaller entry points
shell: pwsh
run: |
@'
from twms.server import main

if __name__ == "__main__":
main()
'@ | Set-Content -Encoding UTF8 twms-stdlib-entry.py

@'
from twms.daemon import main

if __name__ == "__main__":
main()
'@ | Set-Content -Encoding UTF8 twms-webpy-entry.py

- name: Build executables
run: |
python -m PyInstaller --onefile --name twms twms-stdlib-entry.py
python -m PyInstaller --onefile --name twms-webpy twms-webpy-entry.py

- name: Upload executable artifact
uses: actions/upload-artifact@v4
with:
name: twms-windows-exe-${{ github.sha }}
path: dist/*.exe
8 changes: 8 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
__pycache__/
*.py[cod]

build/
dist/
*.egg-info/

*.spec
4 changes: 3 additions & 1 deletion COPYING
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
The authors, Darafei Praliaskouski (Komzpa) and Andrew Shadura,
The authors, Darafei Praliaskouski (Komzpa), Andrew Shadura, and
Eugene Dvoretsky (Radioxoma),
explicitly disclaim copyright in all jurisdictions which recognise such
a disclaimer. In such jurisdictions, this software is released into the
Public Domain.
Expand All @@ -7,6 +8,7 @@ In jurisdictions which do not recognise Public Domain property, this software is

Copyright © 2009—2013 Darafei Praliaskouski <me@komzpa.net>
Copyright © 2010—2013, 2016 Andrew Shadura <andrew@shadura.me>
Copyright © 2020—2021, 2023—2024 Eugene Dvoretsky <radioxoma@gmail.com>

and is released under the terms of the ISC License (see below).

Expand Down
Loading
Loading