summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: 686d3246dd6c20ac652ea2f7f2ccf4e719d8941e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
# Maintainer: Carl Smedstad <carsme@archlinux.org>

pkgname=python-litestar
_pkgname=${pkgname#python-}
pkgver=2.8.3
pkgrel=1
pkgdesc="Production-ready, Light, Flexible and Extensible ASGI API framework"
arch=(any)
url="https://github.com/litestar-org/litestar"
license=(MIT)
depends=(
  python
  python-annotated-types
  python-anyio
  python-asyncpg
  python-attrs
  python-click
  python-dotenv
  python-httpx
  python-jsbeautifier
  python-msgspec
  python-multidict
  python-polyfactory
  python-psycopg
  python-rich
  python-rich-click
  python-sniffio
  python-starlette
  python-trio
  python-typing_extensions
  python-yaml
  uvicorn
)
makedepends=(
  python-build
  python-hatchling
  python-installer
  python-wheel
)
checkdepends=(
  hypercorn
  python-asyncpg
  python-beautifulsoup4
  python-brotli
  python-cryptography
  python-daphne
  python-email-validator
  python-fsspec
  python-httpx-sse
  python-hypothesis
  python-jinja
  python-jose
  python-mako
  python-minijinja
  python-opentelemetry-sdk
  python-picologging
  python-polyfactory
  python-psycopg
  python-pydantic
  python-pydantic-extra-types
  python-pytest
  python-pytest-asyncio
  python-pytest-lazy-fixtures
  python-pytest-mock
  python-pytest-rerunfailures
  python-pytest-timeout
  python-pytest-xdist
  python-redis
  python-sqlalchemy
  python-starlette
  python-structlog
  python-time-machine
)
optdepends=(
  'python-jinja: templating engine alternative'
  'python-mako: templating engine alternative'
  'python-minijinja: templating engine alternative'

  'python-structlog: logging library alternative'
  'python-picologging: logging library alternative'

  'python-pydantic: Pydantic support'
  'python-pydantic-extra-types: Pydantic support'
  'python-email-validator: Pydantic support'

  # 'python-opentelemetry-instrumentation-asgi: Open Telementry instrumentation'
  'python-brotli: Brotli compression middleware'
  'python-cryptography: cookie based sessions & JWT authentication'
  'python-jose: JWT authentication'
  'python-prometheus_client: Prometheus instrumentation'
  'python-opentelemetry-sdk: OpenTelemetry instrumentation'
  'python-redis: Redis store'
  'python-sqlalchemy: SQLAlchemy integration'
)
source=("$pkgname-$pkgver.tar.gz::$url/archive/v$pkgver.tar.gz")
sha256sums=('39a10eca88c2c1e45365bb7b9e075b9e44423d827407db44b28c9ff53ce53062')

_archive="$_pkgname-$pkgver"

build() {
  cd "$_archive"

  python -m build --wheel --no-isolation
}

check() {
  cd "$_archive"

  local pytest_args=(
    --ignore=tests/examples/
    --ignore=tests/unit/test_contrib/

    # Requires advanced_alchemy which depends on sqlalchemy>=2 which is not
    # available in repositories.
    --ignore=tests/e2e/test_advanced_alchemy.py
    --ignore=tests/unit/test_app.py
    --ignore=tests/unit/test_plugins/test_base.py
    --ignore=tests/unit/test_plugins/test_sqlalchemy.py
    --deselect=tests/unit/test_dto/test_factory/test_integration.py::test_openapi_schema_for_type_with_custom_generic_type

    # Requires mapped_column
    --ignore=tests/unit/test_repository/test_generic_mock_repository.py

    # Requires running docker compose
    --deselect=tests/unit/test_testing/test_test_client.py
    --deselect=tests/unit/test_channels/test_plugin.py
    --deselect=tests/unit/test_channels/test_backends.py
    --deselect=tests/unit/test_stores.py

    # Fails for unkown reason
    --deselect=tests/unit/test_template/test_template.py::test_media_type_inferred
    --deselect=tests/unit/test_cli/test_cli.py::test_register_commands_from_entrypoint

    # Requires running docker compose
    --deselect=tests/e2e/test_response_caching.py::test_with_stores
    --deselect=tests/unit/test_utils/test_version.py::test_formatted
  )

  rm -rf tmp_install
  python -m installer --destdir=tmp_install dist/*.whl

  local site_packages=$(python -c "import site; print(site.getsitepackages()[0])")
  export PYTHONPATH="$PWD/tmp_install/$site_packages"
  pytest tests/ "${pytest_args[@]}"
}

package() {
  cd "$_archive"

  python -m installer --destdir="$pkgdir" dist/*.whl

  install -Dm644 -t "$pkgdir/usr/share/licenses/$pkgname" LICENSE
}