Compare commits

..
8 Commits
Author SHA1 Message Date
shmyga 2e64224840 ci(version): 0.10.4
release / release (push) Failing after 34s
test / test (push) Failing after 35s
2026-09-29 22:43:07 +03:00
shmyga f35d3f8cb8 build(docker): fix playwright version 2026-09-29 22:42:41 +03:00
shmyga b0187506fd ci(action): add setup composite action
test / test (push) Successful in 35s
2026-09-28 19:10:52 +03:00
shmyga beafed8faf ci(version): 0.10.3
build / build (push) Successful in 3m17s
test / test (push) Successful in 42s
2026-09-28 15:28:43 +03:00
shmyga 52315cc8bd fix(weather): add query params to days tag route redirect 2026-09-28 15:28:18 +03:00
shmyga 80e9a80edd ci(version): 0.10.2
build / build (push) Successful in 3m26s
test / test (push) Successful in 42s
2026-09-27 21:00:51 +03:00
shmyga b3412d9e53 fix(weather): add deprecated days tag route 2026-09-27 20:59:33 +03:00
shmyga ba91d6d161 ci(action): fix build action name
test / test (push) Successful in 42s
2026-09-24 19:17:15 +03:00
9 changed files with 78 additions and 97 deletions
+32
View File
@@ -0,0 +1,32 @@
name: "Setup"
description: "Setup project"
inputs:
python-version:
default: "3.14"
runs:
using: "composite"
steps:
- id: setup-python
uses: actions/setup-python@v7
with:
python-version: ${{ inputs.python-version }}
cache: "pip"
- run: |
pip install project-manager \
--index-url https://git.shmyga.ru/api/packages/InfernalGames/pypi/simple/ \
--extra-index-url https://pypi.org/simple
- run: pm setup:config -vv
# setup python venv
- run: pip install poetry
- id: cache-venv
uses: actions/cache@v6
with:
path: .venv
key: venv-${{ runner.os }}-python-${{ steps.setup-python.outputs.python-version }}-${{ hashFiles('**/poetry.lock') }}
- if: steps.cache-venv.outputs.cache-hit != 'true'
run: pm setup:python -vv
-42
View File
@@ -1,42 +0,0 @@
name: test
on:
push:
tags: ["*"]
jobs:
build:
runs-on: ubuntu-latest
steps:
# repo
- name: Check out repository
uses: actions/checkout@v7
# python
- name: Set up python
id: setup-python
uses: actions/setup-python@v7
with:
python-version: "3.14"
cache: "pip"
# project-manager
- name: Install Project Manager
run: |
pip install project-manager \
--index-url https://git.shmyga.ru/api/packages/InfernalGames/pypi/simple/ \
--extra-index-url https://pypi.org/simple
# setup
- name: Setup config
run: pm setup:config -vv
# build
- name: Build docker
run: pm build:docker -vv
# login docker
- name: Login to Docker Hub
uses: docker/login-action@v4
with:
registry: git.shmyga.ru
username: ${{ vars.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
# pubish
- name: Publish docker
run: pm publish:docker -vv
+21
View File
@@ -0,0 +1,21 @@
name: release
on:
push:
tags: ["*"]
jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: ./.gitea/actions/setup
- run: pm lint -vv
- run: pm test -vv
- run: pm build:docker -vv
- uses: docker/login-action@v4
with:
registry: git.shmyga.ru
username: ${{ vars.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- run: pm publish:docker -vv
+4 -42
View File
@@ -6,45 +6,7 @@ jobs:
test: test:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
# repo - uses: actions/checkout@v7
- name: Check out repository - uses: ./.gitea/actions/setup
uses: actions/checkout@v7 - run: pm lint -vv
# python - run: pm test -vv
- name: Set up python
id: setup-python
uses: actions/setup-python@v7
with:
python-version: "3.14"
# poetry
- name: Load cached Poetry installation
id: cached-poetry
uses: actions/cache@v5
with:
path: ~/.local
key: poetry-1 # increment to reset cache
- name: Install Poetry
if: steps.cached-poetry.outputs.cache-hit != 'true'
uses: snok/install-poetry@v1
with:
virtualenvs-create: true
virtualenvs-in-project: true
virtualenvs-path: .venv
installer-parallel: true
# venv
- name: Load cached venv
id: cached-poetry-dependencies
uses: actions/cache@v5
with:
path: .venv
key: venv-${{ runner.os }}-${{ steps.setup-python.outputs.python-version }}-${{ hashFiles('**/poetry.lock') }}
- name: Install dependencies
if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true'
run: ~/.local/bin/poetry install --no-interaction --no-root
- name: Install project
run: ~/.local/bin/poetry install --no-interaction
# test
- name: Run tests
run: |
source .venv/bin/activate
coverage run -m pytest tests/
coverage report
+1 -1
View File
@@ -27,7 +27,7 @@ FROM python:3.14-slim
ENV PLAYWRIGHT_BROWSERS_PATH="/opt/playwright-browsers" ENV PLAYWRIGHT_BROWSERS_PATH="/opt/playwright-browsers"
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
--mount=type=cache,target=/var/lib/apt,sharing=locked \ --mount=type=cache,target=/var/lib/apt,sharing=locked \
pip install playwright && \ pip install playwright==1.62 && \
playwright install --with-deps chromium playwright install --with-deps chromium
ENV PATH="/app/.venv/bin:$PATH" ENV PATH="/app/.venv/bin:$PATH"
@@ -3,6 +3,7 @@ from typing import Literal
from fastapi import APIRouter from fastapi import APIRouter
from fastapi.responses import HTMLResponse, RedirectResponse from fastapi.responses import HTMLResponse, RedirectResponse
from starlette.datastructures import URL
from gallery.easel.core import AppRequest from gallery.easel.core import AppRequest
from gallery.easel.depends.api import api_resolver from gallery.easel.depends.api import api_resolver
@@ -68,6 +69,13 @@ async def get_weather_days(request: AppRequest, weather_api: WeatherApiDepends,
return build_weather_response(request, response) return build_weather_response(request, response)
# TODO: tag mode route deprecated, used in tizen app
@router.get("/{provider}/{location}/tag/days-{days}", response_class=RedirectResponse)
async def get_tag_days(request: AppRequest, days: int):
url = URL(path=f"../days/{days}", query=request.url.query)
return RedirectResponse(url)
# TODO: tag mode route deprecated, used in tizen app # TODO: tag mode route deprecated, used in tizen app
@router.get("/{provider}/{location}/{mode:str}/{date}", response_class=HTMLResponse) @router.get("/{provider}/{location}/{mode:str}/{date}", response_class=HTMLResponse)
async def get_weather_day( async def get_weather_day(
+9 -9
View File
@@ -1,16 +1,16 @@
[project] [project]
name = "gallery" name = "gallery"
description = "" description = ""
version = "0.10.1" version = "0.10.4"
readme = "README.md" readme = "README.md"
authors = [{ name = "shmyga", email = "shmyga.z@gmail.com" }] authors = [{ name = "shmyga", email = "shmyga.z@gmail.com" }]
requires-python = '>=3.14,<4.0' requires-python = ">=3.14,<4.0"
dependencies = [ dependencies = [
'aiohttp (>=3.14,<4.0)', "aiohttp (>=3.14,<4.0)",
'beautifulsoup4 (>=4.15,<5.0)', "beautifulsoup4 (>=4.15,<5.0)",
'dateparser (>=1.4,<2.0)', "dateparser (>=1.4,<2.0)",
'pydantic (>=2.13,<3.0)', "pydantic (>=2.13,<3.0)",
'aiocache[redis] (>=0.12,<0.13)', "aiocache[redis] (>=0.12,<0.13)",
"playwright (>=1.62.0,<2.0.0)", "playwright (>=1.62.0,<2.0.0)",
] ]
@@ -30,10 +30,10 @@ gallery = "gallery.main:run"
[tool.poetry] [tool.poetry]
packages = [{ include = "gallery" }] packages = [{ include = "gallery" }]
requires-poetry = '>=2.0.0,<3.0.0' requires-poetry = ">=2.0.0,<3.0.0"
[build-system] [build-system]
requires = ['poetry-core (>=2.0.0,<3.0.0)'] requires = ["poetry-core (>=2.0.0,<3.0.0)"]
build-backend = "poetry.core.masonry.api" build-backend = "poetry.core.masonry.api"
[tool.black] [tool.black]
+2 -2
View File
@@ -1,12 +1,12 @@
{ {
"name": "gallery", "name": "gallery",
"version": "0.10.1", "version": "0.10.4",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "gallery", "name": "gallery",
"version": "0.10.1", "version": "0.10.4",
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"@popperjs/core": "^2.11.8", "@popperjs/core": "^2.11.8",
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "gallery", "name": "gallery",
"version": "0.10.1", "version": "0.10.4",
"type": "module", "type": "module",
"scripts": { "scripts": {
"build": "webpack --mode production", "build": "webpack --mode production",