# Maintainer: Morten Linderud <foxboron@archlinux.org>
# Maintainer: Chih-Hsuan Yen <yan12125@archlinux.org>
# Maintainer: Anatol Pomozov

pkgname=python-autobahn
# https://github.com/crossbario/autobahn-python/blob/master/docs/changelog.rst
pkgver=25.10.2
pkgrel=4
pkgdesc='Real-time framework for Web, Mobile & Internet of Things'
arch=(x86_64 aarch64)
url='https://github.com/crossbario/autobahn-python/'
license=(MIT)
depends=(glibc python python-base58 python-cffi python-twisted python-txaio python-wsaccel
         python-cryptography python-hyperlink python-zope-interface)
makedepends=(git python-build python-installer python-setuptools python-wheel
             python-argon2_cffi python-cbor2 python-flatbuffers
             python-msgpack python-passlib python-pynacl python-pytrie
             python-ubjson
             python-u-msgpack python-ujson python-qrcode python-pyopenssl python-ecdsa
             python-snappy python-click python-txtorcon)
checkdepends=(python-pytest python-pytest-asyncio)
optdepends=(
  'python-cbor2: CBOR serializer support'
  'python-flatbuffers: FlatBuffers serializer support'
  'python-msgpack: MsgPack serializer support'
  'python-u-msgpack: pure-python alternative to python-msgpack for MsgPack serializer support'
  'python-ubjson: UBJSON serializer support'
  'python-ujson: accelerated JSON serializer support'
  'python-argon2_cffi: WAMP-SCRAM authentication support'
  'python-passlib: WAMP-SCRAM authentication support'
  'python-pynacl: WAMP-cryptosign and WAMP-cryptobox support'
  'python-pytrie: WAMP-cryptobox support'
  'python-qrcode: support QR codes in WAMP'
  'python-pyopenssl: SSL/TLS support'
  'python-ecdsa: ECDSA signatures'
  'python-snappy: snappy compression support for WebSocket messages'
  'python-click: for text highlights'
  'python-txtorcon: connections to Tor Onion services'
)

source=("git+https://github.com/crossbario/autobahn-python.git#tag=v$pkgver"
        'remove-march-flags-for-safe-builds.patch')
sha256sums=('68e263cf4c8210dafd0368485ea6831620fea9dba2ae62a417638cdd12fa9e9a'
            '292450d9ee4b5be7b62ff5767380f42fa31854f1a1890cdaafed0cd3f4b71ed4')

prepare() {
  cd "$srcdir/autobahn-python"
  patch -Np1 -i ../remove-march-flags-for-safe-builds.patch
}

build() {
  cd "$srcdir/autobahn-python"
  AUTOBAHN_ARCH_TARGET=safe python -m build --wheel --no-isolation
}

check() {
  cd "$srcdir/autobahn-python"
  pyver=$(python -c "import sys; print('{}{}'.format(*sys.version_info[:2]))")
  # "autobahn on asyncio is tested using pytest, while for twisted we are using twisted trial"
  # https://github.com/crossbario/autobahn-python/issues/1235#issuecomment-522440810
  USE_TWISTED=1 PYTHONPATH=.:build/lib.linux-$CARCH-cpython-$pyver trial autobahn
  # pytest configurations are not well organized in upstream repo. Here I ignore everything and pick needed options from
  # https://github.com/crossbario/autobahn-python/blob/v24.4.2/tox.ini#L104
  USE_ASYNCIO=1 PYTHONPATH=.:build/lib.linux-$CARCH-cpython-$pyver pytest autobahn --config-file=/dev/null --rootdir "$PWD" --ignore autobahn/twisted
}

package() {
  cd "$srcdir/autobahn-python"
  python -m installer --destdir="$pkgdir" dist/*.whl
  install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
}
