{"role":"user","message":{"content":[{"type":"text","text":"\nyay -S --noconfirm openconnect-sso\nAUR Explicit (1): openconnect-sso-0.8.1-1\n:: PKGBUILD up to date, skipping download: openconnect-sso\n 1 openconnect-sso (Installed) (Build Files Exist)\n==> Packages to cleanBuild?\n==> [N]one [A]ll [Ab]ort [I]nstalled [No]tInstalled or (1 2 3, 1-3, ^4)\n==> \n 1 openconnect-sso (Installed) (Build Files Exist)\n==> Diffs to show?\n==> [N]one [A]ll [Ab]ort [I]nstalled [No]tInstalled or (1 2 3, 1-3, ^4)\n==> \n==> Making package: openconnect-sso 0.8.1-1 (Пн 16 фев 2026 16:22:13)\n==> Retrieving sources...\n -> Found openconnect_sso-0.8.1.tar.gz\n==> WARNING: Skipping verification of source file PGP signatures.\n==> Validating source files with sha256sums...\n openconnect_sso-0.8.1.tar.gz ... Passed\n:: (1/1) Parsing SRCINFO: openconnect-sso\n==> Making package: openconnect-sso 0.8.1-1 (Пн 16 фев 2026 16:22:15)\n==> Checking runtime dependencies...\n==> Checking buildtime dependencies...\n==> Retrieving sources...\n -> Found openconnect_sso-0.8.1.tar.gz\n==> Validating source files with sha256sums...\n openconnect_sso-0.8.1.tar.gz ... Passed\n==> Removing existing $srcdir/ directory...\n==> Extracting sources...\n -> Extracting openconnect_sso-0.8.1.tar.gz with bsdtar\n==> Starting prepare()...\n==> Sources are ready.\n -> openconnect-sso-0.8.1-1 already made -- skipping build\n==> Making package: openconnect-sso 0.8.1-1 (Пн 16 фев 2026 16:22:17)\n==> Checking runtime dependencies...\n==> Checking buildtime dependencies...\n==> WARNING: Using existing $srcdir/ tree\n==> Sources are ready.\nloading packages...\nwarning: openconnect-sso-0.8.1-1 is up to date -- reinstalling\nresolving dependencies...\nlooking for conflicting packages...\n\nPackages (1) openconnect-sso-0.8.1-1\n\nTotal Installed Size: 0,18 MiB\nNet Upgrade Size: 0,00 MiB\n\n:: Proceed with installation? [Y/n] \n(1/1) checking keys in keyring [#############################################################################] 100%\n(1/1) checking package integrity [#############################################################################] 100%\n(1/1) loading package files [#############################################################################] 100%\n(1/1) checking for file conflicts [#############################################################################] 100%\n(1/1) checking available disk space [#############################################################################] 100%\n:: Processing package changes...\n(1/1) reinstalling openconnect-sso [#############################################################################] 100%\n:: Running post-transaction hooks...\n(1/1) Arming ConditionNeedsUpdate...\n\nopenconnect-sso --server vpn.lemanapro.ru --authgroup Default-K \nTraceback (most recent call last):\n File \"/usr/lib/python3.14/importlib/metadata/__init__.py\", line 407, in from_name\n return next(iter(cls.discover(name=name)))\nStopIteration\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"/usr/bin/openconnect-sso\", line 33, in \n sys.exit(load_entry_point('openconnect-sso==0.8.1', 'console_scripts', 'openconnect-sso')())\n ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/usr/bin/openconnect-sso\", line 22, in importlib_load_entry_point\n for entry_point in distribution(dist_name).entry_points\n ~~~~~~~~~~~~^^^^^^^^^^^\n File \"/usr/lib/python3.14/importlib/metadata/__init__.py\", line 960, in distribution\n return Distribution.from_name(distribution_name)\n ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^\n File \"/usr/lib/python3.14/importlib/metadata/__init__.py\", line 409, in from_name\n raise PackageNotFoundError(name)\nimportlib.metadata.PackageNotFoundError: No package metadata was found for openconnect-sso\n\n"}]}}
{"role":"assistant","message":{"content":[{"type":"text","text":"Проблема видна из трейса: `openconnect-sso` запускается под `python3.14`, но в его `site-packages` нет метаданных дистрибутива (`*.dist-info`) для `openconnect-sso`.\n\nСамая вероятная причина у тебя в логе уже есть: \n`-> openconnect-sso-0.8.1-1 already made -- skipping build` \nТо есть `yay` переустановил **старый собранный пакет из кэша**, вероятно собранный под предыдущую версию Python.\n\n### Что сделать\n\n1. Удалить кэш сборки этого AUR-пакета:\n```bash\nrm -rf ~/.cache/yay/openconnect-sso\n```\n\n2. Переустановить с принудительной чистой сборкой:\n```bash\nyay -S openconnect-sso --cleanbuild --answerclean All\n```\n\n3. Проверить, что файлы легли в `python3.14`:\n```bash\npacman -Ql openconnect-sso | rg 'site-packages|dist-info'\n```\nОжидаемо должно быть что-то вроде `/usr/lib/python3.14/site-packages/...`.\n\n---\n\nЕсли после этого та же ошибка, тогда проще и надежнее поставить в изолированное окружение через `pipx`:\n\n```bash\nsudo pacman -S --needed pipx\npipx ensurepath\npipx install openconnect-sso\n```\n\nи запускать через:\n```bash\n~/.local/bin/openconnect-sso --server vpn.lemanapro.ru --authgroup Default-K\n```\n\nЕсли хочешь, могу дать короткий чек-лист диагностики на 3 команды, чтобы точно подтвердить причину до пересборки.\n\n**Explaining Python package metadata issue**"}]}}
{"role":"user","message":{"content":[{"type":"text","text":"\n ruslanpi@ruslan-hpprobook450 ~ openconnect-sso --server vpn.lemanapro.ru --authgroup Default-K\nTraceback (most recent call last):\n File \"/usr/bin/openconnect-sso\", line 33, in \n sys.exit(load_entry_point('openconnect-sso==0.8.1', 'console_scripts', 'openconnect-sso')())\n ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^\n File \"/usr/lib/python3.14/site-packages/openconnect_sso/cli.py\", line 175, in main\n return app.run(args)\n ~~~~~~~^^^^^^\n File \"/usr/lib/python3.14/site-packages/openconnect_sso/app.py\", line 35, in run\n auth_response, selected_profile = asyncio.get_event_loop().run_until_complete(\n ~~~~~~~~~~~~~~~~~~~~~~^^\n File \"/usr/lib/python3.14/asyncio/events.py\", line 715, in get_event_loop\n raise RuntimeError('There is no current event loop in thread %r.'\n % threading.current_thread().name)\nRuntimeError: There is no current event loop in thread 'MainThread'.\n\n"}]}}
{"role":"assistant","message":{"content":[{"type":"text","text":"Отлично, это уже **другая ошибка** и причина теперь понятна: \n`openconnect-sso 0.8.1` не совместим с `Python 3.14` (в 3.14 поведение `asyncio.get_event_loop()` изменилось, и теперь без явного loop падает именно так).\n\n### Что это значит\nПакет установился, но в коде `openconnect-sso` есть устаревший вызов:\n- `asyncio.get_event_loop().run_until_complete(...)`\n- на Python 3.14 это теперь `RuntimeError: There is no current event loop...`\n\n### Рабочие варианты\n\n1. **Лучший**: поставить версию с фиксом (обычно `openconnect-sso-git` в AUR, если там уже заменили на `asyncio.run(...)`).\n2. **Стабильный обход**: запускать `openconnect-sso` под `python3.13` (через venv/pipx с интерпретатором 3.13).\n3. **Временный костыль**: обертка, которая создает event loop перед запуском CLI.\n\nПример временной обертки:\n```bash\npython -c 'import asyncio,sys; from openconnect_sso.cli import main; asyncio.set_event_loop(asyncio.new_event_loop()); sys.exit(main())' --server vpn.lemanapro.ru --authgroup Default-K\n```\n\nЕсли в твоей версии `main()` ожидает аргументы иначе, лучше сделать маленький shell-wrapper.\n\n---\n\nЕсли хочешь, дам самый короткий путь именно для Arch (2-3 команды): \n- проверить, есть ли `openconnect-sso-git`, \n- удалить текущий пакет, \n- поставить рабочий вариант без ручных патчей.\n\n**Providing Python 3.14 workaround**"}]}}
{"role":"user","message":{"content":[{"type":"text","text":"\nудалил, давай сделаем через venv\n"}]}}
{"role":"assistant","message":{"content":[{"type":"text","text":"Отлично, через `venv` — нормальный путь. \nКлючевое: создать окружение **на Python 3.13**, иначе с `3.14` ошибка останется.\n\n```bash\n# 1) Нужны интерпретатор и сам openconnect\nsudo pacman -S --needed openconnect python313\n\n# 2) Создаем venv на 3.13\npython3.13 -m venv ~/.venvs/openconnect-sso\n\n# 3) Активируем\nsource ~/.venvs/openconnect-sso/bin/activate\n\n# 4) Обновляем pip-инструменты и ставим пакет\npython -m pip install -U pip setuptools wheel\npip install openconnect-sso\n\n# 5) Проверка\nopenconnect-sso --version\n```\n\nЗапуск VPN:\n\n```bash\nopenconnect-sso --server vpn.lemanapro.ru --authgroup Default-K\n```\n\nЕсли не хочешь каждый раз активировать `venv`, запускай напрямую:\n\n```bash\n~/.venvs/openconnect-sso/bin/openconnect-sso --server vpn.lemanapro.ru --authgroup Default-K\n```\n\nЕсли на шаге `python3.13 -m venv ...` скажет, что `python3.13` не найден — напиши, дам быстрый вариант через `pyenv` (тоже рабочий).\n\n**Providing concise Arch Python venv setup**"}]}}
{"role":"user","message":{"content":[{"type":"text","text":"\n\n\npip install openconnect-sso\nRequirement already satisfied: pip in /home/ruslanpi/.venvs/openconnect-sso/lib/python3.13/site-packages (25.3)\nCollecting pip\n Downloading pip-26.0.1-py3-none-any.whl.metadata (4.7 kB)\nCollecting setuptools\n Downloading setuptools-82.0.0-py3-none-any.whl.metadata (6.6 kB)\nCollecting wheel\n Downloading wheel-0.46.3-py3-none-any.whl.metadata (2.4 kB)\nCollecting packaging>=24.0 (from wheel)\n Downloading packaging-26.0-py3-none-any.whl.metadata (3.3 kB)\nDownloading pip-26.0.1-py3-none-any.whl (1.8 MB)\n ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.8/1.8 MB 8.7 MB/s 0:00:00\nDownloading setuptools-82.0.0-py3-none-any.whl (1.0 MB)\n ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.0/1.0 MB 8.6 MB/s 0:00:00\nDownloading wheel-0.46.3-py3-none-any.whl (30 kB)\nDownloading packaging-26.0-py3-none-any.whl (74 kB)\nInstalling collected packages: setuptools, pip, packaging, wheel\n Attempting uninstall: pip\n Found existing installation: pip 25.3\n Uninstalling pip-25.3:\n Successfully uninstalled pip-25.3\nSuccessfully installed packaging-26.0 pip-26.0.1 setuptools-82.0.0 wheel-0.46.3\nCollecting openconnect-sso\n Downloading openconnect_sso-0.8.1-py3-none-any.whl.metadata (7.4 kB)\nCollecting PyQt6<7.0.0,>=6.3.0 (from openconnect-sso)\n Downloading pyqt6-6.10.2-cp39-abi3-manylinux_2_34_x86_64.whl.metadata (2.1 kB)\nCollecting PyQt6-WebEngine<7.0.0,>=6.3.0 (from openconnect-sso)\n Downloading pyqt6_webengine-6.10.0-1-cp39-abi3-manylinux_2_34_x86_64.whl.metadata (1.9 kB)\nCollecting PySocks<2.0.0,>=1.7.1 (from openconnect-sso)\n Downloading PySocks-1.7.1-py3-none-any.whl.metadata (13 kB)\nCollecting attrs>=18.2 (from openconnect-sso)\n Downloading attrs-25.4.0-py3-none-any.whl.metadata (10 kB)\nCollecting colorama<0.5,>=0.4 (from openconnect-sso)\n Downloading colorama-0.4.6-py2.py3-none-any.whl.metadata (17 kB)\nCollecting keyring<24.0.0,>=21.1 (from openconnect-sso)\n Downloading keyring-23.13.1-py3-none-any.whl.metadata (20 kB)\nCollecting lxml<5.0,>=4.3 (from openconnect-sso)\n Downloading lxml-4.9.4.tar.gz (3.6 MB)\n ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.6/3.6 MB 1.9 MB/s 0:00:01\n Installing build dependencies ... done\n Getting requirements to build wheel ... done\n Preparing metadata (pyproject.toml) ... done\nCollecting prompt-toolkit<4.0.0,>=3.0.3 (from openconnect-sso)\n Downloading prompt_toolkit-3.0.52-py3-none-any.whl.metadata (6.4 kB)\nCollecting pyotp<3.0.0,>=2.7.0 (from openconnect-sso)\n Downloading pyotp-2.9.0-py3-none-any.whl.metadata (9.8 kB)\nCollecting pyxdg<0.29,>=0.26 (from openconnect-sso)\n Downloading pyxdg-0.28-py2.py3-none-any.whl.metadata (567 bytes)\nCollecting requests<3.0,>=2.22 (from openconnect-sso)\n Downloading requests-2.32.5-py3-none-any.whl.metadata (4.9 kB)\nRequirement already satisfied: setuptools>40.0 in /home/ruslanpi/.venvs/openconnect-sso/lib/python3.13/site-packages (from openconnect-sso) (82.0.0)\nCollecting structlog>=20.1 (from openconnect-sso)\n Downloading structlog-25.5.0-py3-none-any.whl.metadata (9.5 kB)\nCollecting toml<0.11,>=0.10 (from openconnect-sso)\n Downloading toml-0.10.2-py2.py3-none-any.whl.metadata (7.1 kB)\nCollecting jaraco.classes (from keyring<24.0.0,>=21.1->openconnect-sso)\n Downloading jaraco.classes-3.4.0-py3-none-any.whl.metadata (2.6 kB)\nCollecting SecretStorage>=3.2 (from keyring<24.0.0,>=21.1->openconnect-sso)\n Downloading secretstorage-3.5.0-py3-none-any.whl.metadata (4.0 kB)\nCollecting jeepney>=0.4.2 (from keyring<24.0.0,>=21.1->openconnect-sso)\n Downloading jeepney-0.9.0-py3-none-any.whl.metadata (1.2 kB)\nCollecting wcwidth (from prompt-toolkit<4.0.0,>=3.0.3->openconnect-sso)\n Downloading wcwidth-0.6.0-py3-none-any.whl.metadata (30 kB)\nCollecting PyQt6-sip<14,>=13.8 (from PyQt6<7.0.0,>=6.3.0->openconnect-sso)\n Downloading pyqt6_sip-13.11.0-cp313-cp313-manylinux1_x86_64.manylinux_2_5_x86_64.whl.metadata (495 bytes)\nCollecting PyQt6-Qt6<6.11.0,>=6.10.0 (from PyQt6<7.0.0,>=6.3.0->openconnect-sso)\n Downloading pyqt6_qt6-6.10.2-py3-none-manylinux_2_34_x86_64.whl.metadata (535 bytes)\nCollecting PyQt6-WebEngine-Qt6<6.11.0,>=6.10.0 (from PyQt6-WebEngine<7.0.0,>=6.3.0->openconnect-sso)\n Downloading pyqt6_webengine_qt6-6.10.2-py3-none-manylinux_2_34_x86_64.whl.metadata (575 bytes)\nCollecting charset_normalizer<4,>=2 (from requests<3.0,>=2.22->openconnect-sso)\n Downloading charset_normalizer-3.4.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.metadata (37 kB)\nCollecting idna<4,>=2.5 (from requests<3.0,>=2.22->openconnect-sso)\n Downloading idna-3.11-py3-none-any.whl.metadata (8.4 kB)\nCollecting urllib3<3,>=1.21.1 (from requests<3.0,>=2.22->openconnect-sso)\n Downloading urllib3-2.6.3-py3-none-any.whl.metadata (6.9 kB)\nCollecting certifi>=2017.4.17 (from requests<3.0,>=2.22->openconnect-sso)\n Downloading certifi-2026.1.4-py3-none-any.whl.metadata (2.5 kB)\nCollecting cryptography>=2.0 (from SecretStorage>=3.2->keyring<24.0.0,>=21.1->openconnect-sso)\n Downloading cryptography-46.0.5-cp311-abi3-manylinux_2_34_x86_64.whl.metadata (5.7 kB)\nCollecting cffi>=2.0.0 (from cryptography>=2.0->SecretStorage>=3.2->keyring<24.0.0,>=21.1->openconnect-sso)\n Downloading cffi-2.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.metadata (2.6 kB)\nCollecting pycparser (from cffi>=2.0.0->cryptography>=2.0->SecretStorage>=3.2->keyring<24.0.0,>=21.1->openconnect-sso)\n Downloading pycparser-3.0-py3-none-any.whl.metadata (8.2 kB)\nCollecting more-itertools (from jaraco.classes->keyring<24.0.0,>=21.1->openconnect-sso)\n Downloading more_itertools-10.8.0-py3-none-any.whl.metadata (39 kB)\nDownloading openconnect_sso-0.8.1-py3-none-any.whl (30 kB)\nDownloading colorama-0.4.6-py2.py3-none-any.whl (25 kB)\nDownloading keyring-23.13.1-py3-none-any.whl (37 kB)\nDownloading prompt_toolkit-3.0.52-py3-none-any.whl (391 kB)\nDownloading pyotp-2.9.0-py3-none-any.whl (13 kB)\nDownloading pyqt6-6.10.2-cp39-abi3-manylinux_2_34_x86_64.whl (37.9 MB)\n ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 37.9/37.9 MB 5.9 MB/s 0:00:06\nDownloading pyqt6_qt6-6.10.2-py3-none-manylinux_2_34_x86_64.whl (84.0 MB)\n ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 84.0/84.0 MB 8.8 MB/s 0:00:09\nDownloading pyqt6_sip-13.11.0-cp313-cp313-manylinux1_x86_64.manylinux_2_5_x86_64.whl (301 kB)\nDownloading pyqt6_webengine-6.10.0-1-cp39-abi3-manylinux_2_34_x86_64.whl (1.3 MB)\n ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.3/1.3 MB 3.4 MB/s 0:00:00\nDownloading pyqt6_webengine_qt6-6.10.2-py3-none-manylinux_2_34_x86_64.whl (113.9 MB)\n ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 113.9/113.9 MB 7.3 MB/s 0:00:15\nDownloading PySocks-1.7.1-py3-none-any.whl (16 kB)\nDownloading pyxdg-0.28-py2.py3-none-any.whl (49 kB)\nDownloading requests-2.32.5-py3-none-any.whl (64 kB)\nDownloading charset_normalizer-3.4.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (153 kB)\nDownloading idna-3.11-py3-none-any.whl (71 kB)\nDownloading toml-0.10.2-py2.py3-none-any.whl (16 kB)\nDownloading urllib3-2.6.3-py3-none-any.whl (131 kB)\nDownloading attrs-25.4.0-py3-none-any.whl (67 kB)\nDownloading certifi-2026.1.4-py3-none-any.whl (152 kB)\nDownloading jeepney-0.9.0-py3-none-any.whl (49 kB)\nDownloading secretstorage-3.5.0-py3-none-any.whl (15 kB)\nDownloading cryptography-46.0.5-cp311-abi3-manylinux_2_34_x86_64.whl (4.5 MB)\n ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.5/4.5 MB 4.2 MB/s 0:00:01\nDownloading cffi-2.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (219 kB)\nDownloading structlog-25.5.0-py3-none-any.whl (72 kB)\nDownloading jaraco.classes-3.4.0-py3-none-any.whl (6.8 kB)\nDownloading more_itertools-10.8.0-py3-none-any.whl (69 kB)\nDownloading pycparser-3.0-py3-none-any.whl (48 kB)\nDownloading wcwidth-0.6.0-py3-none-any.whl (94 kB)\nBuilding wheels for collected packages: lxml\n Building wheel for lxml (pyproject.toml) ... error\n error: subprocess-exited-with-error\n \n × Building wheel for lxml (pyproject.toml) did not run successfully.\n │ exit code: 1\n ╰─> [424 lines of output]\n /tmp/pip-build-env-fa_u6yle/overlay/lib/python3.13/site-packages/setuptools/dist.py:765: SetuptoolsDeprecationWarning: License classifiers are deprecate\n /tmp/pip-build-env-fa_u6yle/overlay/lib/python3.13/site-packages/setuptools/dist.py:765: SetuptoolsDeprecationWarning: License classifiers are deprecated.\n !!\n \n ********************************************************************************\n Please consider removing the following classifiers in favor of a SPDX license expression:\n \n License :: OSI Approved :: BSD License\n \n See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details.\n ********************************************************************************\n \n !!\n self._finalize_license_expression()\n Building lxml version 4.9.4.\n Building without Cython.\n Building against libxml2 2.15.1 and libxslt 1.1.45\n running bdist_wheel\n running build\n running build_py\n creating build/lib.linux-x86_64-cpython-313/lxml\n copying src/lxml/usedoctest.py -> build/lib.linux-x86_64-cpython-313/lxml\n copying src/lxml/sax.py -> build/lib.linux-x86_64-cpython-313/lxml\n copying src/lxml/pyclasslookup.py -> build/lib.linux-x86_64-cpython-313/lxml\n copying src/lxml/doctestcompare.py -> build/lib.linux-x86_64-cpython-313/lxml\n copying src/lxml/cssselect.py -> build/lib.linux-x86_64-cpython-313/lxml\n copying src/lxml/builder.py -> build/lib.linux-x86_64-cpython-313/lxml\n copying src/lxml/_elementpath.py -> build/lib.linux-x86_64-cpython-313/lxml\n copying src/lxml/__init__.py -> build/lib.linux-x86_64-cpython-313/lxml\n copying src/lxml/ElementInclude.py -> build/lib.linux-x86_64-cpython-313/lxml\n creating build/lib.linux-x86_64-cpython-313/lxml/includes\n copying src/lxml/includes/__init__.py -> build/lib.linux-x86_64-cpython-313/lxml/includes\n creating build/lib.linux-x86_64-cpython-313/lxml/html\n copying src/lxml/html/usedoctest.py -> build/lib.linux-x86_64-cpython-313/lxml/html\n copying src/lxml/html/soupparser.py -> build/lib.linux-x86_64-cpython-313/lxml/html\n copying src/lxml/html/html5parser.py -> build/lib.linux-x86_64-cpython-313/lxml/html\n copying src/lxml/html/formfill.py -> build/lib.linux-x86_64-cpython-313/lxml/html\n copying src/lxml/html/diff.py -> build/lib.linux-x86_64-cpython-313/lxml/html\n copying src/lxml/html/defs.py -> build/lib.linux-x86_64-cpython-313/lxml/html\n copying src/lxml/html/clean.py -> build/lib.linux-x86_64-cpython-313/lxml/html\n copying src/lxml/html/builder.py -> build/lib.linux-x86_64-cpython-313/lxml/html\n copying src/lxml/html/_setmixin.py -> build/lib.linux-x86_64-cpython-313/lxml/html\n copying src/lxml/html/_html5builder.py -> build/lib.linux-x86_64-cpython-313/lxml/html\n copying src/lxml/html/_diffcommand.py -> build/lib.linux-x86_64-cpython-313/lxml/html\n copying src/lxml/html/__init__.py -> build/lib.linux-x86_64-cpython-313/lxml/html\n copying src/lxml/html/ElementSoup.py -> build/lib.linux-x86_64-cpython-313/lxml/html\n creating build/lib.linux-x86_64-cpython-313/lxml/isoschematron\n copying src/lxml/isoschematron/__init__.py -> build/lib.linux-x86_64-cpython-313/lxml/isoschematron\n copying src/lxml/etree.h -> build/lib.linux-x86_64-cpython-313/lxml\n copying src/lxml/etree_api.h -> build/lib.linux-x86_64-cpython-313/lxml\n copying src/lxml/lxml.etree.h -> build/lib.linux-x86_64-cpython-313/lxml\n copying src/lxml/lxml.etree_api.h -> build/lib.linux-x86_64-cpython-313/lxml\n copying src/lxml/objectify.pyx -> build/lib.linux-x86_64-cpython-313/lxml\n copying src/lxml/etree.pyx -> build/lib.linux-x86_64-cpython-313/lxml\n copying src/lxml/xsltext.pxi -> build/lib.linux-x86_64-cpython-313/lxml\n copying src/lxml/xslt.pxi -> build/lib.linux-x86_64-cpython-313/lxml\n copying src/lxml/xpath.pxi -> build/lib.linux-x86_64-cpython-313/lxml\n copying src/lxml/xmlschema.pxi -> build/lib.linux-x86_64-cpython-313/lxml\n copying src/lxml/xmlid.pxi -> build/lib.linux-x86_64-cpython-313/lxml\n copying src/lxml/xmlerror.pxi -> build/lib.linux-x86_64-cpython-313/lxml\n copying src/lxml/xinclude.pxi -> build/lib.linux-x86_64-cpython-313/lxml\n copying src/lxml/serializer.pxi -> build/lib.linux-x86_64-cpython-313/lxml\n copying src/lxml/schematron.pxi -> build/lib.linux-x86_64-cpython-313/lxml\n copying src/lxml/saxparser.pxi -> build/lib.linux-x86_64-cpython-313/lxml\n copying src/lxml/relaxng.pxi -> build/lib.linux-x86_64-cpython-313/lxml\n copying src/lxml/readonlytree.pxi -> build/lib.linux-x86_64-cpython-313/lxml\n copying src/lxml/public-api.pxi -> build/lib.linux-x86_64-cpython-313/lxml\n copying src/lxml/proxy.pxi -> build/lib.linux-x86_64-cpython-313/lxml\n copying src/lxml/parsertarget.pxi -> build/lib.linux-x86_64-cpython-313/lxml\n copying src/lxml/parser.pxi -> build/lib.linux-x86_64-cpython-313/lxml\n copying src/lxml/objectpath.pxi -> build/lib.linux-x86_64-cpython-313/lxml\n copying src/lxml/nsclasses.pxi -> build/lib.linux-x86_64-cpython-313/lxml\n copying src/lxml/iterparse.pxi -> build/lib.linux-x86_64-cpython-313/lxml\n copying src/lxml/extensions.pxi -> build/lib.linux-x86_64-cpython-313/lxml\n copying src/lxml/dtd.pxi -> build/lib.linux-x86_64-cpython-313/lxml\n copying src/lxml/docloader.pxi -> build/lib.linux-x86_64-cpython-313/lxml\n copying src/lxml/debug.pxi -> build/lib.linux-x86_64-cpython-313/lxml\n copying src/lxml/cleanup.pxi -> build/lib.linux-x86_64-cpython-313/lxml\n copying src/lxml/classlookup.pxi -> build/lib.linux-x86_64-cpython-313/lxml\n copying src/lxml/apihelpers.pxi -> build/lib.linux-x86_64-cpython-313/lxml\n copying src/lxml/includes/xslt.pxd -> build/lib.linux-x86_64-cpython-313/lxml/includes\n copying src/lxml/includes/xpath.pxd -> build/lib.linux-x86_64-cpython-313/lxml/includes\n copying src/lxml/includes/xmlschema.pxd -> build/lib.linux-x86_64-cpython-313/lxml/includes\n copying src/lxml/includes/xmlparser.pxd -> build/lib.linux-x86_64-cpython-313/lxml/includes\n copying src/lxml/includes/xmlerror.pxd -> build/lib.linux-x86_64-cpython-313/lxml/includes\n copying src/lxml/includes/xinclude.pxd -> build/lib.linux-x86_64-cpython-313/lxml/includes\n copying src/lxml/includes/uri.pxd -> build/lib.linux-x86_64-cpython-313/lxml/includes\n copying src/lxml/includes/tree.pxd -> build/lib.linux-x86_64-cpython-313/lxml/includes\n copying src/lxml/includes/schematron.pxd -> build/lib.linux-x86_64-cpython-313/lxml/includes\n copying src/lxml/includes/relaxng.pxd -> build/lib.linux-x86_64-cpython-313/lxml/includes\n copying src/lxml/includes/htmlparser.pxd -> build/lib.linux-x86_64-cpython-313/lxml/includes\n copying src/lxml/includes/etreepublic.pxd -> build/lib.linux-x86_64-cpython-313/lxml/includes\n copying src/lxml/includes/dtdvalid.pxd -> build/lib.linux-x86_64-cpython-313/lxml/includes\n copying src/lxml/includes/config.pxd -> build/lib.linux-x86_64-cpython-313/lxml/includes\n copying src/lxml/includes/c14n.pxd -> build/lib.linux-x86_64-cpython-313/lxml/includes\n copying src/lxml/includes/__init__.pxd -> build/lib.linux-x86_64-cpython-313/lxml/includes\n copying src/lxml/includes/lxml-version.h -> build/lib.linux-x86_64-cpython-313/lxml/includes\n copying src/lxml/includes/etree_defs.h -> build/lib.linux-x86_64-cpython-313/lxml/includes\n creating build/lib.linux-x86_64-cpython-313/lxml/isoschematron/resources/rng\n copying src/lxml/isoschematron/resources/rng/iso-schematron.rng -> build/lib.linux-x86_64-cpython-313/lxml/isoschematron/resources/rng\n creating build/lib.linux-x86_64-cpython-313/lxml/isoschematron/resources/xsl\n copying src/lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl -> build/lib.linux-x86_64-cpython-313/lxml/isoschematron/resources/xsl\n copying src/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl -> build/lib.linux-x86_64-cpython-313/lxml/isoschematron/resources/xsl\n creating build/lib.linux-x86_64-cpython-313/lxml/isoschematron/resources/xsl/iso-schematron-xslt1\n copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_svrl_for_xslt1.xsl -> build/lib.linux-x86_64-cpython-313/lxml/isoschematron/resour\n copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_svrl_for_xslt1.xsl -> build/lib.linux-x86_64-cpython-313/lxml/isoschematron/resources/xsl/iso-schematron-xslt1\n copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_skeleton_for_xslt1.xsl -> build/lib.linux-x86_64-cpython-313/lxml/isosc\n copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_skeleton_for_xslt1.xsl -> build/lib.linux-x86_64-cpython-313/lxml/isoschematron/resources/xsl/iso-schematron-xslt1\n copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_message.xsl -> build/lib.linux-x86_64-cpython-313/lxml/isoschematron/re\n copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_message.xsl -> build/lib.linux-x86_64-cpython-313/lxml/isoschematron/resources/xsl/iso-schematron-xslt1\n copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_dsdl_include.xsl -> build/lib.linux-x86_64-cpython-313/lxml/isoschematron/resource\n copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_dsdl_include.xsl -> build/lib.linux-x86_64-cpython-313/lxml/isoschematron/resources/xsl/iso-schematron-xslt1\n copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_abstract_expand.xsl -> build/lib.linux-x86_64-cpython-313/lxml/isoschematron/resou\n copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_abstract_expand.xsl -> build/lib.linux-x86_64-cpython-313/lxml/isoschematron/resources/xsl/iso-schematron-xslt1\n copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/readme.txt -> build/lib.linux-x86_64-cpython-313/lxml/isoschematron/resources/xsl/iso-\n copying src/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/readme.txt -> build/lib.linux-x86_64-cpython-313/lxml/isoschematron/resources/xsl/iso-schematron-xslt1\n running build_ext\n building 'lxml.etree' extension\n creating build/temp.linux-x86_64-cpython-313/src/lxml\n gcc -fno-strict-overflow -Wsign-compare -DNDEBUG -g -O3 -Wall -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong -fno-plt -march=x86-64 -mt\n gcc -fno-strict-overflow -Wsign-compare -DNDEBUG -g -O3 -Wall -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong -fno-plt -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong -fno-plt -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong -fno-plt -fPIC -DCYTHON_CLINE_IN_TRACE\n gcc -fno-strict-overflow -Wsign-compare -DNDEBUG -g -O3 -Wall -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong -fno-plt -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong -fno-plt -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong -fno-plt -fPIC -DCYTHON_CLINE_IN_TRACEBACK=0 -I/usr/include/libxml2 -Isrc -Isrc/lxml/includes -I/home/ruslanpi/.venvs/openconnect-sso/include -I/usr/include/python3.13 -c src/lxml/etree.c -o build\n gcc -fno-strict-overflow -Wsign-compare -DNDEBUG -g -O3 -Wall -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong -fno-plt -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong -fno-plt -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong -fno-plt -fPIC -DCYTHON_CLINE_IN_TRACEBACK=0 -I/usr/include/libxml2 -Isrc -Isrc/lxml/includes -I/home/ruslanpi/.venvs/openconnect-sso/include -I/usr/include/python3.13 -c src/lxml/etree.c -o build/temp.linux-x86_64-cpython-313/src/lxml/etree.o -w\n src/lxml/etree.c: In function ‘__Pyx_init_assertions_enabled’:\n src/lxml/etree.c:5988:39: error: implicit declaration of function ‘_PyInterpreterState_GetConfig’; did you mean ‘PyInterpreterState_GetID’? [-Wimplicit-\n src/lxml/etree.c:5988:39: error: implicit declaration of function ‘_PyInterpreterState_GetConfig’; did you mean ‘PyInterpreterState_GetID’? [-Wimplicit-function-declaration]\n 5988 | __pyx_assertions_enabled_flag = ! _PyInterpreterState_GetConfig(__Pyx_PyThreadState_Current->interp)->optimization_level;\n | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n | PyInterpreterState_GetID\n src/lxml/etree.c:5988:105: error: invalid type argument of ‘->’ (have ‘int’)\n 5988 | __pyx_assertions_enabled_flag = ! _PyInterpreterState_GetConfig(__Pyx_PyThreadState_Current->interp)->optimization_level;\n | ^~\n src/lxml/etree.c: In function ‘__pyx_f_4lxml_5etree_fixThreadDictNamesForDtd’:\n src/lxml/etree.c:19193:49: error: passing argument 1 of ‘__pyx_f_4lxml_5etree__fixThreadDictPtr’ from incompatible pointer type [-Wincompatible-pointer-\n src/lxml/etree.c:19193:49: error: passing argument 1 of ‘__pyx_f_4lxml_5etree__fixThreadDictPtr’ from incompatible pointer type [-Wincompatible-pointer-types]\n 19193 | __pyx_f_4lxml_5etree__fixThreadDictPtr((&__pyx_v_c_attribute->defaultValue), __pyx_v_c_src_dict, __pyx_v_c_dict);\n | ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n | |\n | xmlChar ** {aka unsigned char **}\n src/lxml/etree.c:18536:82: note: expected ‘const xmlChar **’ {aka ‘const unsigned char **’} but argument is of type ‘xmlChar **’ {aka ‘unsigned char **’\n src/lxml/etree.c:18536:82: note: expected ‘const xmlChar **’ {aka ‘const unsigned char **’} but argument is of type ‘xmlChar **’ {aka ‘unsigned char **’}\n 18536 | static CYTHON_INLINE void __pyx_f_4lxml_5etree__fixThreadDictPtr(const xmlChar **__pyx_v_c_ptr, xmlDict *__pyx_v_c_src_dict, xmlDict *__pyx_v_c_\n 18536 | static CYTHON_INLINE void __pyx_f_4lxml_5etree__fixThreadDictPtr(const xmlChar **__pyx_v_c_ptr, xmlDict *__pyx_v_c_src_dict, xmlDict *__pyx_v_c_dict) {\n | ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~\n src/lxml/etree.c: In function ‘__pyx_f_4lxml_5etree_14_ParserContext_prepare’:\n src/lxml/etree.c:113221:38: error: assignment to ‘xmlStructuredErrorFunc’ {aka ‘void (*)(void *, const struct _xmlError *)’} from incompatible pointer t\n src/lxml/etree.c:113221:38: error: assignment to ‘xmlStructuredErrorFunc’ {aka ‘void (*)(void *, const struct _xmlError *)’} from incompatible pointer type ‘void (*)(void *, xmlError *)’ {aka ‘void (*)(void *, struct _xmlError *)’} [-Wincompatible-pointer-types]\n 113221 | __pyx_v_self->_c_ctxt->sax->serror = __pyx_f_4lxml_5etree__receiveParserError;\n | ^\n src/lxml/etree.c:7472:13: note: ‘__pyx_f_4lxml_5etree__receiveParserError’ declared here\n 7472 | static void __pyx_f_4lxml_5etree__receiveParserError(void *, xmlError *); /*proto*/\n | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n In file included from /usr/include/libxml2/libxml/valid.h:19,\n from /usr/include/libxml2/libxml/parser.h:24,\n from /usr/include/libxml2/libxml/tree.h:20,\n from src/lxml/includes/etree_defs.h:189,\n from src/lxml/etree.c:864:\n /usr/include/libxml2/libxml/xmlerror.h:953:16: note: ‘xmlStructuredErrorFunc’ declared here\n 953 | typedef void (*xmlStructuredErrorFunc) (void *userData, const xmlError *error);\n | ^~~~~~~~~~~~~~~~~~~~~~\n src/lxml/etree.c: In function ‘__pyx_f_4lxml_5etree_11_BaseParser__registerHtmlErrorHandler’:\n src/lxml/etree.c:117709:25: error: assignment to ‘xmlStructuredErrorFunc’ {aka ‘void (*)(void *, const struct _xmlError *)’} from incompatible pointer t\n src/lxml/etree.c:117709:25: error: assignment to ‘xmlStructuredErrorFunc’ {aka ‘void (*)(void *, const struct _xmlError *)’} from incompatible pointer type ‘void (*)(void *, xmlError *)’ {aka ‘void (*)(void *, struct _xmlError *)’} [-Wincompatible-pointer-types]\n 117709 | __pyx_v_sax->serror = __pyx_f_4lxml_5etree__receiveParserError;\n | ^\n src/lxml/etree.c:113855:13: note: ‘__pyx_f_4lxml_5etree__receiveParserError’ declared here\n 113855 | static void __pyx_f_4lxml_5etree__receiveParserError(void *__pyx_v_c_context, xmlError *__pyx_v_error) {\n | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n /usr/include/libxml2/libxml/xmlerror.h:953:16: note: ‘xmlStructuredErrorFunc’ declared here\n 953 | typedef void (*xmlStructuredErrorFunc) (void *userData, const xmlError *error);\n | ^~~~~~~~~~~~~~~~~~~~~~\n src/lxml/etree.c: In function ‘__pyx_pf_4lxml_5etree_11TreeBuilder_4data’:\n src/lxml/etree.c:137976:66: error: passing argument 1 of ‘__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxData’ from incompatible pointer type [-Wincompati\n src/lxml/etree.c:137976:66: error: passing argument 1 of ‘__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxData’ from incompatible pointer type [-Wincompatible-pointer-types]\n 137976 | __pyx_t_1 = __pyx_f_4lxml_5etree_11TreeBuilder__handleSaxData(((struct __pyx_obj_4lxml_5etree__SaxParserTarget *)__pyx_v_self), __pyx_v_data)\n 137976 | __pyx_t_1 = __pyx_f_4lxml_5etree_11TreeBuilder__handleSaxData(((struct __pyx_obj_4lxml_5etree__SaxParserTarget *)__pyx_v_self), __pyx_v_data); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(3, 834, __pyx_L1_error)\n | ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n | |\n | struct __pyx_obj_4lxml_5etree__SaxParserTarget *\n src/lxml/etree.c:137352:105: note: expected ‘struct __pyx_obj_4lxml_5etree_TreeBuilder *’ but argument is of type ‘struct __pyx_obj_4lxml_5etree__SaxPar\n src/lxml/etree.c:137352:105: note: expected ‘struct __pyx_obj_4lxml_5etree_TreeBuilder *’ but argument is of type ‘struct __pyx_obj_4lxml_5etree__SaxParserTarget *’\n 137352 | static int __pyx_f_4lxml_5etree_11TreeBuilder__handleSaxData(struct __pyx_obj_4lxml_5etree_TreeBuilder *__pyx_v_self, PyObject *__pyx_v_data) {\n | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~\n src/lxml/etree.c: In function ‘__pyx_pf_4lxml_5etree_11TreeBuilder_6start’:\n src/lxml/etree.c:138137:67: error: passing argument 1 of ‘__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxStart’ from incompatible pointer type [-Wincompat\n src/lxml/etree.c:138137:67: error: passing argument 1 of ‘__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxStart’ from incompatible pointer type [-Wincompatible-pointer-types]\n 138137 | __pyx_t_3 = __pyx_f_4lxml_5etree_11TreeBuilder__handleSaxStart(((struct __pyx_obj_4lxml_5etree__SaxParserTarget *)__pyx_v_self), __pyx_v_tag,\n 138137 | __pyx_t_3 = __pyx_f_4lxml_5etree_11TreeBuilder__handleSaxStart(((struct __pyx_obj_4lxml_5etree__SaxParserTarget *)__pyx_v_self), __pyx_v_tag, __pyx_v_attrs, __pyx_v_nsmap); if (unlikely(!__pyx_t_3)) __PYX_ERR(3, 843, __pyx_L1_error)\n | ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n | |\n | struct __pyx_obj_4lxml_5etree__SaxParserTarget *\n src/lxml/etree.c:136951:112: note: expected ‘struct __pyx_obj_4lxml_5etree_TreeBuilder *’ but argument is of type ‘struct __pyx_obj_4lxml_5etree__SaxPar\n src/lxml/etree.c:136951:112: note: expected ‘struct __pyx_obj_4lxml_5etree_TreeBuilder *’ but argument is of type ‘struct __pyx_obj_4lxml_5etree__SaxParserTarget *’\n 136951 | static PyObject *__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxStart(struct __pyx_obj_4lxml_5etree_TreeBuilder *__pyx_v_self, PyObject *__pyx_v_\n 136951 | static PyObject *__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxStart(struct __pyx_obj_4lxml_5etree_TreeBuilder *__pyx_v_self, PyObject *__pyx_v_tag, PyObject *__pyx_v_attrib, PyObject *__pyx_v_nsmap) {\n | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~\n src/lxml/etree.c: In function ‘__pyx_pf_4lxml_5etree_11TreeBuilder_8end’:\n src/lxml/etree.c:138208:65: error: passing argument 1 of ‘__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxEnd’ from incompatible pointer type [-Wincompatib\n src/lxml/etree.c:138208:65: error: passing argument 1 of ‘__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxEnd’ from incompatible pointer type [-Wincompatible-pointer-types]\n 138208 | __pyx_t_1 = __pyx_f_4lxml_5etree_11TreeBuilder__handleSaxEnd(((struct __pyx_obj_4lxml_5etree__SaxParserTarget *)__pyx_v_self), __pyx_v_tag); \n 138208 | __pyx_t_1 = __pyx_f_4lxml_5etree_11TreeBuilder__handleSaxEnd(((struct __pyx_obj_4lxml_5etree__SaxParserTarget *)__pyx_v_self), __pyx_v_tag); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 850, __pyx_L1_error)\n | ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n | |\n | struct __pyx_obj_4lxml_5etree__SaxParserTarget *\n src/lxml/etree.c:137251:110: note: expected ‘struct __pyx_obj_4lxml_5etree_TreeBuilder *’ but argument is of type ‘struct __pyx_obj_4lxml_5etree__SaxPar\n src/lxml/etree.c:137251:110: note: expected ‘struct __pyx_obj_4lxml_5etree_TreeBuilder *’ but argument is of type ‘struct __pyx_obj_4lxml_5etree__SaxParserTarget *’\n 137251 | static PyObject *__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxEnd(struct __pyx_obj_4lxml_5etree_TreeBuilder *__pyx_v_self, CYTHON_UNUSED PyObje\n 137251 | static PyObject *__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxEnd(struct __pyx_obj_4lxml_5etree_TreeBuilder *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_tag) {\n | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~\n src/lxml/etree.c: In function ‘__pyx_pf_4lxml_5etree_11TreeBuilder_10pi’:\n src/lxml/etree.c:138409:64: error: passing argument 1 of ‘__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxPi’ from incompatible pointer type [-Wincompatibl\n src/lxml/etree.c:138409:64: error: passing argument 1 of ‘__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxPi’ from incompatible pointer type [-Wincompatible-pointer-types]\n 138409 | __pyx_t_1 = __pyx_f_4lxml_5etree_11TreeBuilder__handleSaxPi(((struct __pyx_obj_4lxml_5etree__SaxParserTarget *)__pyx_v_self), __pyx_v_target,\n 138409 | __pyx_t_1 = __pyx_f_4lxml_5etree_11TreeBuilder__handleSaxPi(((struct __pyx_obj_4lxml_5etree__SaxParserTarget *)__pyx_v_self), __pyx_v_target, __pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 861, __pyx_L1_error)\n | ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n | |\n | struct __pyx_obj_4lxml_5etree__SaxParserTarget *\n src/lxml/etree.c:137401:109: note: expected ‘struct __pyx_obj_4lxml_5etree_TreeBuilder *’ but argument is of type ‘struct __pyx_obj_4lxml_5etree__SaxPar\n src/lxml/etree.c:137401:109: note: expected ‘struct __pyx_obj_4lxml_5etree_TreeBuilder *’ but argument is of type ‘struct __pyx_obj_4lxml_5etree__SaxParserTarget *’\n 137401 | static PyObject *__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxPi(struct __pyx_obj_4lxml_5etree_TreeBuilder *__pyx_v_self, PyObject *__pyx_v_tar\n 137401 | static PyObject *__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxPi(struct __pyx_obj_4lxml_5etree_TreeBuilder *__pyx_v_self, PyObject *__pyx_v_target, PyObject *__pyx_v_data) {\n | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~\n src/lxml/etree.c: In function ‘__pyx_pf_4lxml_5etree_11TreeBuilder_12comment’:\n src/lxml/etree.c:138472:69: error: passing argument 1 of ‘__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxComment’ from incompatible pointer type [-Wincomp\n src/lxml/etree.c:138472:69: error: passing argument 1 of ‘__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxComment’ from incompatible pointer type [-Wincompatible-pointer-types]\n 138472 | __pyx_t_1 = __pyx_f_4lxml_5etree_11TreeBuilder__handleSaxComment(((struct __pyx_obj_4lxml_5etree__SaxParserTarget *)__pyx_v_self), __pyx_v_co\n 138472 | __pyx_t_1 = __pyx_f_4lxml_5etree_11TreeBuilder__handleSaxComment(((struct __pyx_obj_4lxml_5etree__SaxParserTarget *)__pyx_v_self), __pyx_v_comment); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 869, __pyx_L1_error)\n | ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n | |\n | struct __pyx_obj_4lxml_5etree__SaxParserTarget *\n src/lxml/etree.c:137607:114: note: expected ‘struct __pyx_obj_4lxml_5etree_TreeBuilder *’ but argument is of type ‘struct __pyx_obj_4lxml_5etree__SaxPar\n src/lxml/etree.c:137607:114: note: expected ‘struct __pyx_obj_4lxml_5etree_TreeBuilder *’ but argument is of type ‘struct __pyx_obj_4lxml_5etree__SaxParserTarget *’\n 137607 | static PyObject *__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxComment(struct __pyx_obj_4lxml_5etree_TreeBuilder *__pyx_v_self, PyObject *__pyx_\n 137607 | static PyObject *__pyx_f_4lxml_5etree_11TreeBuilder__handleSaxComment(struct __pyx_obj_4lxml_5etree_TreeBuilder *__pyx_v_self, PyObject *__pyx_v_comment) {\n | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~\n src/lxml/etree.c: In function ‘__pyx_f_4lxml_5etree_12_BaseContext__set_xpath_context’:\n src/lxml/etree.c:181971:28: error: assignment to ‘xmlStructuredErrorFunc’ {aka ‘void (*)(void *, const struct _xmlError *)’} from incompatible pointer t\n src/lxml/etree.c:181971:28: error: assignment to ‘xmlStructuredErrorFunc’ {aka ‘void (*)(void *, const struct _xmlError *)’} from incompatible pointer type ‘void (*)(void *, xmlError *)’ {aka ‘void (*)(void *, struct _xmlError *)’} [-Wincompatible-pointer-types]\n 181971 | __pyx_v_xpathCtxt->error = __pyx_f_4lxml_5etree__receiveXPathError;\n | ^\n src/lxml/etree.c:7546:13: note: ‘__pyx_f_4lxml_5etree__receiveXPathError’ declared here\n 7546 | static void __pyx_f_4lxml_5etree__receiveXPathError(void *, xmlError *); /*proto*/\n | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n /usr/include/libxml2/libxml/xmlerror.h:953:16: note: ‘xmlStructuredErrorFunc’ declared here\n 953 | typedef void (*xmlStructuredErrorFunc) (void *userData, const xmlError *error);\n | ^~~~~~~~~~~~~~~~~~~~~~\n src/lxml/etree.c: In function ‘__pyx_pf_4lxml_5etree_4XSLT_18__call__’:\n src/lxml/etree.c:203486:73: error: passing argument 1 of ‘__pyx_f_4lxml_5etree_12_XSLTContext__copy’ from incompatible pointer type [-Wincompatible-poin\n src/lxml/etree.c:203486:73: error: passing argument 1 of ‘__pyx_f_4lxml_5etree_12_XSLTContext__copy’ from incompatible pointer type [-Wincompatible-pointer-types]\n 203486 | __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree_12_XSLTContext__copy(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self->_context)))\n 203486 | __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree_12_XSLTContext__copy(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_self->_context))); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 550, __pyx_L9_error)\n | ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n | |\n | struct __pyx_obj_4lxml_5etree__BaseContext *\n src/lxml/etree.c:201169:138: note: expected ‘struct __pyx_obj_4lxml_5etree__XSLTContext *’ but argument is of type ‘struct __pyx_obj_4lxml_5etree__BaseC\n src/lxml/etree.c:201169:138: note: expected ‘struct __pyx_obj_4lxml_5etree__XSLTContext *’ but argument is of type ‘struct __pyx_obj_4lxml_5etree__BaseContext *’\n 201169 | static struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_f_4lxml_5etree_12_XSLTContext__copy(struct __pyx_obj_4lxml_5etree__XSLTContext *__pyx_\n 201169 | static struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_f_4lxml_5etree_12_XSLTContext__copy(struct __pyx_obj_4lxml_5etree__XSLTContext *__pyx_v_self) {\n | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~\n | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~\n src/lxml/etree.c: In function ‘__pyx_f_4lxml_5etree__copyXSLT’:\n src/lxml/etree.c:205311:71: error: passing argument 1 of ‘__pyx_f_4lxml_5etree_12_XSLTContext__copy’ from incompatible pointer type [-Wincompatible-poin\n src/lxml/etree.c:205311:71: error: passing argument 1 of ‘__pyx_f_4lxml_5etree_12_XSLTContext__copy’ from incompatible pointer type [-Wincompatible-pointer-types]\n 205311 | __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree_12_XSLTContext__copy(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_stylesheet->_contex\n 205311 | __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree_12_XSLTContext__copy(((struct __pyx_obj_4lxml_5etree__BaseContext *)__pyx_v_stylesheet->_context))); if (unlikely(!__pyx_t_1)) __PYX_ERR(4, 691, __pyx_L1_error)\n | ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n | ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n | |\n | struct __pyx_obj_4lxml_5etree__BaseContext *\n src/lxml/etree.c:201169:138: note: expected ‘struct __pyx_obj_4lxml_5etree__XSLTContext *’ but argument is of type ‘struct __pyx_obj_4lxml_5etree__BaseC\n src/lxml/etree.c:201169:138: note: expected ‘struct __pyx_obj_4lxml_5etree__XSLTContext *’ but argument is of type ‘struct __pyx_obj_4lxml_5etree__BaseContext *’\n 201169 | static struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_f_4lxml_5etree_12_XSLTContext__copy(struct __pyx_obj_4lxml_5etree__XSLTContext *__pyx_\n 201169 | static struct __pyx_obj_4lxml_5etree__BaseContext *__pyx_f_4lxml_5etree_12_XSLTContext__copy(struct __pyx_obj_4lxml_5etree__XSLTContext *__pyx_v_self) {\n | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~\n | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~\n src/lxml/etree.c: In function ‘__pyx_pf_4lxml_5etree_7RelaxNG_2__init__’:\n src/lxml/etree.c:219245:60: error: passing argument 2 of ‘xmlRelaxNGSetParserStructuredErrors’ from incompatible pointer type [-Wincompatible-pointer-ty\n src/lxml/etree.c:219245:60: error: passing argument 2 of ‘xmlRelaxNGSetParserStructuredErrors’ from incompatible pointer type [-Wincompatible-pointer-types]\n 219245 | xmlRelaxNGSetParserStructuredErrors(__pyx_v_parser_ctxt, __pyx_f_4lxml_5etree__receiveError, ((void *)__pyx_v_self->__pyx_base._error_log));\n | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n | |\n | void (*)(void *, xmlError *) {aka void (*)(void *, struct _xmlError *)}\n In file included from src/lxml/etree.c:905:\n /usr/include/libxml2/libxml/relaxng.h:154:65: note: expected ‘xmlStructuredErrorFunc’ {aka ‘void (*)(void *, const struct _xmlError *)’} but argument is\n /usr/include/libxml2/libxml/relaxng.h:154:65: note: expected ‘xmlStructuredErrorFunc’ {aka ‘void (*)(void *, const struct _xmlError *)’} but argument is of type ‘void (*)(void *, xmlError *)’ {aka ‘void (*)(void *, struct _xmlError *)’}\n 154 | xmlStructuredErrorFunc serror,\n | ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~\n src/lxml/etree.c:49484:13: note: ‘__pyx_f_4lxml_5etree__receiveError’ declared here\n 49484 | static void __pyx_f_4lxml_5etree__receiveError(void *__pyx_v_c_log_handler, xmlError *__pyx_v_error) {\n | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n /usr/include/libxml2/libxml/xmlerror.h:953:16: note: ‘xmlStructuredErrorFunc’ declared here\n 953 | typedef void (*xmlStructuredErrorFunc) (void *userData, const xmlError *error);\n | ^~~~~~~~~~~~~~~~~~~~~~\n src/lxml/etree.c: In function ‘__pyx_pf_4lxml_5etree_7RelaxNG_6__call__’:\n src/lxml/etree.c:219663:60: error: passing argument 2 of ‘xmlRelaxNGSetValidStructuredErrors’ from incompatible pointer type [-Wincompatible-pointer-typ\n src/lxml/etree.c:219663:60: error: passing argument 2 of ‘xmlRelaxNGSetValidStructuredErrors’ from incompatible pointer type [-Wincompatible-pointer-types]\n 219663 | xmlRelaxNGSetValidStructuredErrors(__pyx_v_valid_ctxt, __pyx_f_4lxml_5etree__receiveError, ((void *)__pyx_v_self->__pyx_base._error_log));\n | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n | |\n | void (*)(void *, xmlError *) {aka void (*)(void *, struct _xmlError *)}\n /usr/include/libxml2/libxml/relaxng.h:189:66: note: expected ‘xmlStructuredErrorFunc’ {aka ‘void (*)(void *, const struct _xmlError *)’} but argument is\n /usr/include/libxml2/libxml/relaxng.h:189:66: note: expected ‘xmlStructuredErrorFunc’ {aka ‘void (*)(void *, const struct _xmlError *)’} but argument is of type ‘void (*)(void *, xmlError *)’ {aka ‘void (*)(void *, struct _xmlError *)’}\n 189 | xmlStructuredErrorFunc serror, void *ctx);\n | ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~\n src/lxml/etree.c:49484:13: note: ‘__pyx_f_4lxml_5etree__receiveError’ declared here\n 49484 | static void __pyx_f_4lxml_5etree__receiveError(void *__pyx_v_c_log_handler, xmlError *__pyx_v_error) {\n | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n /usr/include/libxml2/libxml/xmlerror.h:953:16: note: ‘xmlStructuredErrorFunc’ declared here\n 953 | typedef void (*xmlStructuredErrorFunc) (void *userData, const xmlError *error);\n | ^~~~~~~~~~~~~~~~~~~~~~\n src/lxml/etree.c: In function ‘__pyx_pf_4lxml_5etree_9XMLSchema_2__init__’:\n src/lxml/etree.c:220552:59: error: passing argument 2 of ‘xmlSchemaSetParserStructuredErrors’ from incompatible pointer type [-Wincompatible-pointer-typ\n src/lxml/etree.c:220552:59: error: passing argument 2 of ‘xmlSchemaSetParserStructuredErrors’ from incompatible pointer type [-Wincompatible-pointer-types]\n 220552 | xmlSchemaSetParserStructuredErrors(__pyx_v_parser_ctxt, __pyx_f_4lxml_5etree__receiveError, ((void *)__pyx_v_self->__pyx_base._error_log));\n | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n | |\n | void (*)(void *, xmlError *) {aka void (*)(void *, struct _xmlError *)}\n In file included from src/lxml/etree.c:906:\n /usr/include/libxml2/libxml/xmlschemas.h:151:65: note: expected ‘xmlStructuredErrorFunc’ {aka ‘void (*)(void *, const struct _xmlError *)’} but argument\n /usr/include/libxml2/libxml/xmlschemas.h:151:65: note: expected ‘xmlStructuredErrorFunc’ {aka ‘void (*)(void *, const struct _xmlError *)’} but argument is of type ‘void (*)(void *, xmlError *)’ {aka ‘void (*)(void *, struct _xmlError *)’}\n 151 | xmlStructuredErrorFunc serror,\n | ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~\n src/lxml/etree.c:49484:13: note: ‘__pyx_f_4lxml_5etree__receiveError’ declared here\n 49484 | static void __pyx_f_4lxml_5etree__receiveError(void *__pyx_v_c_log_handler, xmlError *__pyx_v_error) {\n | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n /usr/include/libxml2/libxml/xmlerror.h:953:16: note: ‘xmlStructuredErrorFunc’ declared here\n 953 | typedef void (*xmlStructuredErrorFunc) (void *userData, const xmlError *error);\n | ^~~~~~~~~~~~~~~~~~~~~~\n src/lxml/etree.c: In function ‘__pyx_pf_4lxml_5etree_9XMLSchema_6__call__’:\n src/lxml/etree.c:221095:59: error: passing argument 2 of ‘xmlSchemaSetValidStructuredErrors’ from incompatible pointer type [-Wincompatible-pointer-type\n src/lxml/etree.c:221095:59: error: passing argument 2 of ‘xmlSchemaSetValidStructuredErrors’ from incompatible pointer type [-Wincompatible-pointer-types]\n 221095 | xmlSchemaSetValidStructuredErrors(__pyx_v_valid_ctxt, __pyx_f_4lxml_5etree__receiveError, ((void *)__pyx_v_self->__pyx_base._error_log));\n | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n | |\n | void (*)(void *, xmlError *) {aka void (*)(void *, struct _xmlError *)}\n /usr/include/libxml2/libxml/xmlschemas.h:184:65: note: expected ‘xmlStructuredErrorFunc’ {aka ‘void (*)(void *, const struct _xmlError *)’} but argument\n /usr/include/libxml2/libxml/xmlschemas.h:184:65: note: expected ‘xmlStructuredErrorFunc’ {aka ‘void (*)(void *, const struct _xmlError *)’} but argument is of type ‘void (*)(void *, xmlError *)’ {aka ‘void (*)(void *, struct _xmlError *)’}\n 184 | xmlStructuredErrorFunc serror,\n | ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~\n src/lxml/etree.c:49484:13: note: ‘__pyx_f_4lxml_5etree__receiveError’ declared here\n 49484 | static void __pyx_f_4lxml_5etree__receiveError(void *__pyx_v_c_log_handler, xmlError *__pyx_v_error) {\n | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n /usr/include/libxml2/libxml/xmlerror.h:953:16: note: ‘xmlStructuredErrorFunc’ declared here\n 953 | typedef void (*xmlStructuredErrorFunc) (void *userData, const xmlError *error);\n | ^~~~~~~~~~~~~~~~~~~~~~\n src/lxml/etree.c: In function ‘__pyx_f_4lxml_5etree_30_ParserSchemaValidationContext_connect’:\n src/lxml/etree.c:221860:66: error: passing argument 2 of ‘xmlSchemaSetValidStructuredErrors’ from incompatible pointer type [-Wincompatible-pointer-type\n src/lxml/etree.c:221860:66: error: passing argument 2 of ‘xmlSchemaSetValidStructuredErrors’ from incompatible pointer type [-Wincompatible-pointer-types]\n 221860 | xmlSchemaSetValidStructuredErrors(__pyx_v_self->_valid_ctxt, __pyx_f_4lxml_5etree__receiveError, ((void *)__pyx_v_error_log));\n | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n | |\n | void (*)(void *, xmlError *) {aka void (*)(void *, struct _xmlError *)}\n /usr/include/libxml2/libxml/xmlschemas.h:184:65: note: expected ‘xmlStructuredErrorFunc’ {aka ‘void (*)(void *, const struct _xmlError *)’} but argument\n /usr/include/libxml2/libxml/xmlschemas.h:184:65: note: expected ‘xmlStructuredErrorFunc’ {aka ‘void (*)(void *, const struct _xmlError *)’} but argument is of type ‘void (*)(void *, xmlError *)’ {aka ‘void (*)(void *, struct _xmlError *)’}\n 184 | xmlStructuredErrorFunc serror,\n | ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~\n src/lxml/etree.c:49484:13: note: ‘__pyx_f_4lxml_5etree__receiveError’ declared here\n 49484 | static void __pyx_f_4lxml_5etree__receiveError(void *__pyx_v_c_log_handler, xmlError *__pyx_v_error) {\n | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n /usr/include/libxml2/libxml/xmlerror.h:953:16: note: ‘xmlStructuredErrorFunc’ declared here\n 953 | typedef void (*xmlStructuredErrorFunc) (void *userData, const xmlError *error);\n | ^~~~~~~~~~~~~~~~~~~~~~\n src/lxml/etree.c: In function ‘__pyx_pf_4lxml_5etree_10Schematron_6__call__’:\n src/lxml/etree.c:223037:63: error: passing argument 2 of ‘xmlSchematronSetValidStructuredErrors’ from incompatible pointer type [-Wincompatible-pointer-\n src/lxml/etree.c:223037:63: error: passing argument 2 of ‘xmlSchematronSetValidStructuredErrors’ from incompatible pointer type [-Wincompatible-pointer-types]\n 223037 | xmlSchematronSetValidStructuredErrors(__pyx_v_valid_ctxt, __pyx_f_4lxml_5etree__receiveError, ((void *)__pyx_v_self->__pyx_base._error_log)\n 223037 | xmlSchematronSetValidStructuredErrors(__pyx_v_valid_ctxt, __pyx_f_4lxml_5etree__receiveError, ((void *)__pyx_v_self->__pyx_base._error_log));\n | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n | |\n | void (*)(void *, xmlError *) {aka void (*)(void *, struct _xmlError *)}\n In file included from src/lxml/etree.c:907:\n /usr/include/libxml2/libxml/schematron.h:114:66: note: expected ‘xmlStructuredErrorFunc’ {aka ‘void (*)(void *, const struct _xmlError *)’} but argument\n /usr/include/libxml2/libxml/schematron.h:114:66: note: expected ‘xmlStructuredErrorFunc’ {aka ‘void (*)(void *, const struct _xmlError *)’} but argument is of type ‘void (*)(void *, xmlError *)’ {aka ‘void (*)(void *, struct _xmlError *)’}\n 114 | xmlStructuredErrorFunc serror,\n | ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~\n src/lxml/etree.c:49484:13: note: ‘__pyx_f_4lxml_5etree__receiveError’ declared here\n 49484 | static void __pyx_f_4lxml_5etree__receiveError(void *__pyx_v_c_log_handler, xmlError *__pyx_v_error) {\n | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n /usr/include/libxml2/libxml/xmlerror.h:953:16: note: ‘xmlStructuredErrorFunc’ declared here\n 953 | typedef void (*xmlStructuredErrorFunc) (void *userData, const xmlError *error);\n | ^~~~~~~~~~~~~~~~~~~~~~\n src/lxml/etree.c: In function ‘__pyx_pymod_exec_etree’:\n src/lxml/etree.c:6652:38: error: implicit declaration of function ‘_PyDict_SetItem_KnownHash’; did you mean ‘_PyDict_GetItem_KnownHash’? [-Wimplicit-fun\n src/lxml/etree.c:6652:38: error: implicit declaration of function ‘_PyDict_SetItem_KnownHash’; did you mean ‘_PyDict_GetItem_KnownHash’? [-Wimplicit-function-declaration]\n 6652 | (likely(PyDict_CheckExact(ns)) ? _PyDict_SetItem_KnownHash(ns, name, value, ((PyASCIIObject *) name)->hash) : PyObject_SetItem(ns, name, val\n 6652 | (likely(PyDict_CheckExact(ns)) ? _PyDict_SetItem_KnownHash(ns, name, value, ((PyASCIIObject *) name)->hash) : PyObject_SetItem(ns, name, value))\n | ^~~~~~~~~~~~~~~~~~~~~~~~~\n src/lxml/etree.c:255376:7: note: in expansion of macro ‘__Pyx_SetNameInClass’\n 255376 | if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_n_s_getitem, __pyx_t_9) < 0) __PYX_ERR(0, 97, __pyx_L1_error)\n | ^~~~~~~~~~~~~~~~~~~~\n src/lxml/etree.c: In function ‘__Pyx_PyUnicode_Join’:\n src/lxml/etree.c:264446:13: error: implicit declaration of function ‘_PyUnicode_FastCopyCharacters’; did you mean ‘PyUnicode_CopyCharacters’? [-Wimplici\n src/lxml/etree.c:264446:13: error: implicit declaration of function ‘_PyUnicode_FastCopyCharacters’; did you mean ‘PyUnicode_CopyCharacters’? [-Wimplicit-function-declaration]\n 264446 | _PyUnicode_FastCopyCharacters(result_uval, char_pos, uval, 0, ulength);\n | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n | PyUnicode_CopyCharacters\n src/lxml/etree.c: In function ‘__Pyx_PyIter_Next2’:\n src/lxml/etree.c:265182:35: error: ‘_PyObject_NextNotImplemented’ undeclared (first use in this function); did you mean ‘PyObject_HashNotImplemented’?\n 265182 | if (unlikely(iternext == &_PyObject_NextNotImplemented))\n | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~\n src/lxml/etree.c:1096:43: note: in definition of macro ‘unlikely’\n 1096 | #define unlikely(x) __builtin_expect(!!(x), 0)\n | ^\n src/lxml/etree.c:265182:35: note: each undeclared identifier is reported only once for each function it appears in\n 265182 | if (unlikely(iternext == &_PyObject_NextNotImplemented))\n | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~\n src/lxml/etree.c:1096:43: note: in definition of macro ‘unlikely’\n 1096 | #define unlikely(x) __builtin_expect(!!(x), 0)\n | ^\n src/lxml/etree.c: In function ‘__Pyx_PyGen_Send’:\n src/lxml/etree.c:265973:13: error: implicit declaration of function ‘_PyGen_SetStopIterationValue’; did you mean ‘__Pyx_PyGen__FetchStopIterationValue’?\n src/lxml/etree.c:265973:13: error: implicit declaration of function ‘_PyGen_SetStopIterationValue’; did you mean ‘__Pyx_PyGen__FetchStopIterationValue’? [-Wimplicit-function-declaration]\n 265973 | _PyGen_SetStopIterationValue(result);\n | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~\n | __Pyx_PyGen__FetchStopIterationValue\n src/lxml/etree.c: In function ‘__Pyx_Coroutine_AwaitableIterError’:\n src/lxml/etree.c:267806:5: error: implicit declaration of function ‘_PyErr_FormatFromCause’ [-Wimplicit-function-declaration]\n 267806 | _PyErr_FormatFromCause(\n | ^~~~~~~~~~~~~~~~~~~~~~\n src/lxml/etree.c: In function ‘__Pyx_set_iter_next’:\n src/lxml/etree.c:268071:19: error: implicit declaration of function ‘_PySet_NextEntry’ [-Wimplicit-function-declaration]\n 268071 | int ret = _PySet_NextEntry(iter_obj, ppos, value, &hash);\n | ^~~~~~~~~~~~~~~~\n src/lxml/etree.c: In function ‘__Pyx_PyInt_As_int’:\n src/lxml/etree.c:269066:27: error: too few arguments to function ‘_PyLong_AsByteArray’; expected 6, have 5\n 269066 | int ret = _PyLong_AsByteArray((PyLongObject *)v,\n | ^~~~~~~~~~~~~~~~~~~\n In file included from /usr/include/python3.13/longobject.h:107,\n from /usr/include/python3.13/Python.h:82,\n from src/lxml/etree.c:96:\n /usr/include/python3.13/cpython/longobject.h:111:17: note: declared here\n 111 | PyAPI_FUNC(int) _PyLong_AsByteArray(PyLongObject* v,\n | ^~~~~~~~~~~~~~~~~~~\n src/lxml/etree.c: In function ‘__Pyx_PyInt_As_size_t’:\n src/lxml/etree.c:269375:27: error: too few arguments to function ‘_PyLong_AsByteArray’; expected 6, have 5\n 269375 | int ret = _PyLong_AsByteArray((PyLongObject *)v,\n | ^~~~~~~~~~~~~~~~~~~\n /usr/include/python3.13/cpython/longobject.h:111:17: note: declared here\n 111 | PyAPI_FUNC(int) _PyLong_AsByteArray(PyLongObject* v,\n | ^~~~~~~~~~~~~~~~~~~\n src/lxml/etree.c: In function ‘__Pyx_PyInt_As_unsigned_int’:\n src/lxml/etree.c:269571:27: error: too few arguments to function ‘_PyLong_AsByteArray’; expected 6, have 5\n 269571 | int ret = _PyLong_AsByteArray((PyLongObject *)v,\n | ^~~~~~~~~~~~~~~~~~~\n /usr/include/python3.13/cpython/longobject.h:111:17: note: declared here\n 111 | PyAPI_FUNC(int) _PyLong_AsByteArray(PyLongObject* v,\n | ^~~~~~~~~~~~~~~~~~~\n src/lxml/etree.c: In function ‘__Pyx_PyInt_As_signed__char’:\n src/lxml/etree.c:269767:27: error: too few arguments to function ‘_PyLong_AsByteArray’; expected 6, have 5\n 269767 | int ret = _PyLong_AsByteArray((PyLongObject *)v,\n | ^~~~~~~~~~~~~~~~~~~\n /usr/include/python3.13/cpython/longobject.h:111:17: note: declared here\n 111 | PyAPI_FUNC(int) _PyLong_AsByteArray(PyLongObject* v,\n | ^~~~~~~~~~~~~~~~~~~\n src/lxml/etree.c: In function ‘__Pyx_PyInt_As_unsigned_short’:\n src/lxml/etree.c:270001:27: error: too few arguments to function ‘_PyLong_AsByteArray’; expected 6, have 5\n 270001 | int ret = _PyLong_AsByteArray((PyLongObject *)v,\n | ^~~~~~~~~~~~~~~~~~~\n /usr/include/python3.13/cpython/longobject.h:111:17: note: declared here\n 111 | PyAPI_FUNC(int) _PyLong_AsByteArray(PyLongObject* v,\n | ^~~~~~~~~~~~~~~~~~~\n src/lxml/etree.c: In function ‘__Pyx_PyInt_As_xmlChar’:\n src/lxml/etree.c:270235:27: error: too few arguments to function ‘_PyLong_AsByteArray’; expected 6, have 5\n 270235 | int ret = _PyLong_AsByteArray((PyLongObject *)v,\n | ^~~~~~~~~~~~~~~~~~~\n /usr/include/python3.13/cpython/longobject.h:111:17: note: declared here\n 111 | PyAPI_FUNC(int) _PyLong_AsByteArray(PyLongObject* v,\n | ^~~~~~~~~~~~~~~~~~~\n src/lxml/etree.c: In function ‘__Pyx_PyInt_As_long’:\n src/lxml/etree.c:270438:27: error: too few arguments to function ‘_PyLong_AsByteArray’; expected 6, have 5\n 270438 | int ret = _PyLong_AsByteArray((PyLongObject *)v,\n | ^~~~~~~~~~~~~~~~~~~\n /usr/include/python3.13/cpython/longobject.h:111:17: note: declared here\n 111 | PyAPI_FUNC(int) _PyLong_AsByteArray(PyLongObject* v,\n | ^~~~~~~~~~~~~~~~~~~\n Compile failed: command '/usr/bin/gcc' failed with exit code 1\n creating tmp\n cc -I/usr/include/libxml2 -I/usr/include/libxml2 -c /tmp/xmlXPathInit9wtshkjk.c -o tmp/xmlXPathInit9wtshkjk.o\n /tmp/xmlXPathInit9wtshkjk.c: In function ‘main’:\n /tmp/xmlXPathInit9wtshkjk.c:3:5: warning: ‘xmlXPathInit’ is deprecated: See https://gnome.pages.gitlab.gnome.org/libxml2/html/deprecated.html [-Wdepreca\n /tmp/xmlXPathInit9wtshkjk.c:3:5: warning: ‘xmlXPathInit’ is deprecated: See https://gnome.pages.gitlab.gnome.org/libxml2/html/deprecated.html [-Wdeprecated-declarations]\n 3 | xmlXPathInit();\n | ^~~~~~~~~~~~\n In file included from /tmp/xmlXPathInit9wtshkjk.c:1:\n /usr/include/libxml2/libxml/xpath.h:561:21: note: declared here\n 561 | xmlXPathInit (void);\n | ^~~~~~~~~~~~\n cc tmp/xmlXPathInit9wtshkjk.o -lxml2 -o a.out\n error: command '/usr/bin/gcc' failed with exit code 1\n [end of output]\n \n note: This error originates from a subprocess, and is likely not a problem with pip.\n ERROR: Failed building wheel for lxml\nFailed to build lxml\nerror: failed-wheel-build-for-install\n\n× Failed to build installable wheels for some pyproject.toml based projects\n╰─> lxml\n\n\n\n\n@/home/ruslanpi/.cursor/projects/home-ruslanpi-Documents-repos-lmru-devops-argocd-apps/terminals/1.txt:406-1028 \n"}]}}
{"role":"assistant","message":{"content":[{"type":"text","text":"В этом логе видно, что ты уткнулся уже не в `openconnect-sso`, а в зависимость `lxml`.\n\nКлючевая ошибка: `Failed building wheel for lxml` при установке `lxml-4.9.4` на `python3.13`. \n`openconnect-sso==0.8.1` требует `lxml<5`, а для твоего стека (`python3.13` + свежие заголовки) эта версия `lxml` не собирается.\n\n### Что делать дальше (самый практичный путь)\nСделать `venv` на `python3.12` (не 3.13 и не 3.14):\n\n```bash\nsudo pacman -S --needed python312\npython3.12 -m venv ~/.venvs/openconnect-sso312\nsource ~/.venvs/openconnect-sso312/bin/activate\npython -m pip install -U pip setuptools wheel\npip install openconnect-sso\n```\n\nПотом запуск:\n\n```bash\n~/.venvs/openconnect-sso312/bin/openconnect-sso --server vpn.lemanapro.ru --authgroup Default-K\n```\n\n### Почему это должно сработать\n- На `3.14` падает сам `openconnect-sso` (asyncio loop).\n- На `3.13` падает сборка `lxml 4.9.4`.\n- `3.12` сейчас самый совместимый компромисс для `openconnect-sso 0.8.1`.\n\nЕсли хочешь, дам сразу короткий one-liner для проверки, что в этом venv действительно поставился `lxml` и команда стартует без traceback.\n\n**Explaining lxml build failure and solutions**"}]}}
{"role":"user","message":{"content":[{"type":"text","text":"\n\n\n~/.venvs/openconnect-sso312/bin/openconnect-sso --server vpn.lemanapro.ru --authgroup Default-K\nTraceback (most recent call last):\n File \"/home/ruslanpi/.venvs/openconnect-sso312/bin/openconnect-sso\", line 3, in \n from openconnect_sso.cli import main\n File \"/home/ruslanpi/.venvs/openconnect-sso312/lib/python3.12/site-packages/openconnect_sso/cli.py\", line 10, in \n from openconnect_sso import app, config, __version__\n File \"/home/ruslanpi/.venvs/openconnect-sso312/lib/python3.12/site-packages/openconnect_sso/app.py\", line 17, in \n from openconnect_sso.authenticator import Authenticator, AuthResponseError\n File \"/home/ruslanpi/.venvs/openconnect-sso312/lib/python3.12/site-packages/openconnect_sso/authenticator.py\", line 6, in \n from openconnect_sso.saml_authenticator import authenticate_in_browser\n File \"/home/ruslanpi/.venvs/openconnect-sso312/lib/python3.12/site-packages/openconnect_sso/saml_authenticator.py\", line 3, in \n from openconnect_sso.browser import Browser\n File \"/home/ruslanpi/.venvs/openconnect-sso312/lib/python3.12/site-packages/openconnect_sso/browser/__init__.py\", line 1, in \n from .browser import Browser, DisplayMode, Terminated\n File \"/home/ruslanpi/.venvs/openconnect-sso312/lib/python3.12/site-packages/openconnect_sso/browser/browser.py\", line 5, in \n from . import webengine_process as web\n File \"/home/ruslanpi/.venvs/openconnect-sso312/lib/python3.12/site-packages/openconnect_sso/browser/webengine_process.py\", line 9, in \n import pkg_resources\nModuleNotFoundError: No module named 'pkg_resources'\n\n\n\n\n@/home/ruslanpi/.cursor/projects/home-ruslanpi-Documents-repos-lmru-devops-argocd-apps/terminals/3.txt:7-26 \n"}]}}
{"role":"assistant","message":{"content":[{"type":"text","text":"Это уже почти финиш: теперь падает из-за отсутствия `pkg_resources`, который нужен `openconnect-sso`.\n\n`pkg_resources` historically идет из `setuptools`, но в новых версиях/сборках может отсутствовать для такого старого пакета. \nРешение: в этом `venv` поставить совместимый `setuptools` (обычно `<81`), и проверить импорт.\n\n```bash\nsource ~/.venvs/openconnect-sso312/bin/activate\n\npython -m pip install -U \"setuptools<81\"\npython -c \"import pkg_resources; print('ok', pkg_resources.__file__)\"\n```\n\nПосле этого снова:\n\n```bash\n~/.venvs/openconnect-sso312/bin/openconnect-sso --server vpn.lemanapro.ru --authgroup Default-K\n```\n\nЕсли вдруг `pkg_resources` все еще не находится, сделай переустановку в этом же venv:\n\n```bash\npython -m pip uninstall -y setuptools\npython -m pip install \"setuptools<81\"\n```\n\nИ повтори запуск. \nС высокой вероятностью это закроет текущую ошибку.\n\n**Advising setuptools and pkg_resources fix**"}]}}
{"role":"user","message":{"content":[{"type":"text","text":"\nделал вот скрипт для ДНС. без него при обычном запуске не пробрасывается корпоративный днс\n\ncat /home/ruslanpi/.local/bin/openconnect-sso-vpnc.sh\n#!/bin/sh\nset -eu\n\nVPNC_SCRIPT=\"/home/ruslanpi/.local/bin/vpnc-wrapper.sh\"\nDNS_DOMAIN=\"${VPN_DNS_DOMAIN:-lmru.tech}\"\n\nif [ ! -x \"$VPNC_SCRIPT\" ]; then\n echo \"vpnc-script not found at $VPNC_SCRIPT\"\n echo \"Install: sudo pacman -S vpnc\"\n exit 1\nfi\n\nif [ -n \"$DNS_DOMAIN\" ]; then\n export CISCO_SPLIT_DNS=\"$DNS_DOMAIN\"\n export CISCO_DEF_DOMAIN=\"$DNS_DOMAIN\"\nfi\n\nexec ~/.venvs/openconnect-sso312/bin/openconnect-sso \"$@\" -- --script \"$VPNC_SCRIPT\"\n ✘ ruslanpi@ruslan-hpprobook450 ~ vi /home/ruslanpi/.local/bin/openconnect-sso-vpnc.sh \n ruslanpi@ruslan-hpprobook450 ~ vpn-up \n/home/ruslanpi/.venvs/openconnect-sso312/lib/python3.12/site-packages/openconnect_sso/browser/webengine_process.py:9: UserWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html. The pkg_resources package is slated for removal as early as 2025-11-30. Refrain from using this package or pin to Setuptools<81.\n import pkg_resources\n[info ] Authenticating to VPN endpoint [openconnect_sso.app] address=vpn.lemanapro.ru name=Default-K\n[info ] Response received [openconnect_sso.authenticator] id=main message='Please complete the authentication process in the AnyConnect Login window.' title=Login\n[info ] Browser started [webengine] startup_info=StartupInfo(url='https://sslvpna.lemanapro.ru/+CSCOE+/saml/sp/login?ctx=3696442382&acsamlcap=v2', credentials=None)\n[info ] Loading page [webengine] url='https://sslvpna.lemanapro.ru/+CSCOE+/saml/sp/login?ctx=3696442382&acsamlcap=v2'\nlibva error: /usr/lib/dri/i965_drv_video.so init failed\njs: guard: guard is deprecated, use sample instead\njs: guard: guard is deprecated, use sample instead\njs: guard: guard is deprecated, use sample instead\njs: guard: guard is deprecated, use sample instead\njs: guard: guard is deprecated, use sample instead\njs: guard: guard is deprecated, use sample instead\njs: guard: guard is deprecated, use sample instead\njs: guard: guard is deprecated, use sample instead\njs: guard: guard is deprecated, use sample instead\n[info ] Terminate requested. [webengine]\n[info ] Exiting browser [webengine]\n[info ] Browser exited [openconnect_sso.browser.browser]\n[info ] Response received [openconnect_sso.authenticator] id=success message=\nToo many arguments on command line\nUsage: openconnect [options] \nOpen client for multiple VPN protocols, version v9.12\n\nUsing GnuTLS 3.8.11. Features present: TPMv2, PKCS#11, RSA software token, HOTP software token, TOTP software token, Yubikey OATH, System keys, DTLS, ESP\n --config=CONFIGFILE Read options from config file\n -V, --version Report version number\n -h, --help Display help text\n\nSet VPN protocol:\n --protocol=anyconnect Compatible with Cisco AnyConnect SSL VPN, as well as ocserv (default)\n --protocol=nc Compatible with Juniper Network Connect\n --protocol=gp Compatible with Palo Alto Networks (PAN) GlobalProtect SSL VPN\n --protocol=pulse Compatible with Pulse Connect Secure SSL VPN\n --protocol=f5 Compatible with F5 BIG-IP SSL VPN\n --protocol=fortinet Compatible with FortiGate SSL VPN\n --protocol=array Compatible with Array Networks SSL VPN\n\nAuthentication:\n -u, --user=NAME Set login username\n --no-passwd Disable password/SecurID authentication\n --non-inter Do not expect user input; exit if it is required\n --passwd-on-stdin Read password from standard input\n --authgroup=GROUP Select GROUP from authentication dropdown (may be known\n as \"realm\", \"domain\", \"gateway\"; protocol-dependent)\n -F, --form-entry=FORM:OPT=VALUE Provide authentication form responses\n -c, --certificate=CERT Use SSL client certificate CERT\n -k, --sslkey=KEY Use SSL private key file KEY\n -e, --cert-expire-warning=DAYS Warn when certificate lifetime < DAYS\n -g, --usergroup=GROUP Set path of initial request URL\n -p, --key-password=PASS Set key passphrase or TPM SRK PIN\n --external-browser=BROWSER Set external browser executable\n --key-password-from-fsid Key passphrase is fsid of file system\n --token-mode=MODE Software token type: rsa, totp, hotp or oidc\n --token-secret=STRING Software token secret or oidc token\n\nServer validation:\n --servercert=FINGERPRINT Accept only server certificate with this fingerprint\n --no-system-trust Disable default system certificate authorities\n --cafile=FILE Cert file for server verification\n\nInternet connectivity:\n --server=SERVER Set VPN server\n -P, --proxy=URL Set proxy server\n --proxy-auth=METHODS Set proxy authentication methods\n --no-proxy Disable proxy\n --libproxy Use libproxy to automatically configure proxy\n --reconnect-timeout=SECONDS Reconnection retry timeout (default is 300 seconds)\n --resolve=HOST:IP Use IP when connecting to HOST\n --sni=HOST Always send HOST as TLS client SNI (domain fronting)\n --passtos Copy TOS / TCLASS field into DTLS and ESP packets\n --dtls-local-port=PORT Set local port for DTLS and ESP datagrams\n\nAuthentication (two-phase):\n -C, --cookie=COOKIE Use authentication cookie COOKIE\n --cookie-on-stdin Read cookie from standard input\n --authenticate Authenticate only and print login info\n --cookieonly Fetch and print cookie only; don't connect\n --printcookie Print cookie before connecting\n\nProcess control:\n -b, --background Continue in background after startup\n --pid-file=PIDFILE Write the daemon's PID to this file\n -U, --setuid=USER Drop privileges after connecting\n\nLogging (two-phase):\n -l, --syslog Use syslog for progress messages\n -v, --verbose More output\n -q, --quiet Less output\n --dump-http-traffic Dump HTTP authentication traffic (implies --verbose)\n --timestamp Prepend timestamp to progress messages\n\nVPN configuration script:\n -i, --interface=IFNAME Use IFNAME for tunnel interface\n -s, --script=SCRIPT Shell command line for using a vpnc-compatible config script\n default: \"/etc/vpnc/vpnc-script\"\n -S, --script-tun Pass traffic to 'script' program, not tun\n\nTunnel control:\n --disable-ipv6 Do not ask for IPv6 connectivity\n -x, --xmlconfig=CONFIG XML config file\n -m, --mtu=MTU Request MTU from server (legacy servers only)\n --base-mtu=MTU Indicate path MTU to/from server\n -d, --deflate Enable stateful compression (default is stateless only)\n -D, --no-deflate Disable all compression\n --force-dpd=INTERVAL Set Dead Peer Detection interval (in seconds)\n --pfs Require perfect forward secrecy\n --no-dtls Disable DTLS and ESP\n --dtls-ciphers=LIST OpenSSL ciphers to support for DTLS\n -Q, --queue-len=LEN Set packet queue limit to LEN pkts\n\nLocal system information:\n --useragent=STRING HTTP header User-Agent: field\n --local-hostname=STRING Local hostname to advertise to server\n --os=STRING OS type to report. Allowed values are the following:\n linux, linux-64, win, mac-intel, android, apple-ios\n --version-string=STRING reported version string during authentication\n (default: v9.12)\n\nTrojan binary (CSD) execution:\n --csd-user=USER Drop privileges during trojan execution\n --csd-wrapper=SCRIPT Run SCRIPT instead of trojan binary\n --force-trojan=INTERVAL Set minimum interval between trojan runs (in seconds)\n\nServer bugs:\n --no-external-auth Do not offer or use auth methods requiring external browser\n --no-http-keepalive Disable HTTP connection re-use\n --no-xmlpost Do not attempt XML POST authentication\n --allow-insecure-crypto Allow use of the ancient, insecure 3DES and RC4 ciphers\n\nMultiple certificate authentication (MCA):\n --mca-certificate=MCACERT Use MCA certificate MCACERT\n --mca-key=MCAKEY Use MCA key MCAKEY\n --mca-key-password=MCAPASS Passphrase MCAPASS for MCACERT/MCAKEY\n\nFor assistance with OpenConnect, please see the web page at\n https://www.infradead.org/openconnect/mail.html\n ✘ ruslanpi@ruslan-hpprobook450 ~ vi /home/ruslanpi/.local/bin/openconnect-sso-vpnc.sh\n\n"}]}}
{"role":"assistant","message":{"content":[{"type":"text","text":"Понял проблему: `openconnect-sso` проходит SAML, но потом падает на запуске `openconnect` из-за неверной передачи аргументов в обертке. Сейчас проверю точный формат CLI для `openconnect-sso` и дам/внесу корректный вариант скрипта.\n\n**Preparing to diagnose script argument issue**"}]}}
{"role":"assistant","message":{"content":[{"type":"text","text":"**Analyzing argument parsing errors**"}]}}
{"role":"assistant","message":{"content":[{"type":"text","text":"Нашел точную причину: в `openconnect-sso 0.8.1` есть баг парсера, который отбрасывает **первый** аргумент из блока `openconnect_args`, поэтому твой `--script` теряется и в `openconnect` уходит голый путь (отсюда `Too many arguments`). Сейчас поправлю обертку безопасным workaround.\n\n**Adjusting argument parsing workaround**"}]}}
{"role":"assistant","message":{"content":[{"type":"text","text":"**Validating script syntax**"}]}}
{"role":"assistant","message":{"content":[{"type":"text","text":"Исправил твой wrapper в `~/.local/bin/openconnect-sso-vpnc.sh`.\n\nЧто поменял:\n- В конце команды добавил dummy-аргумент `_` перед `--script`:\n - было: `... \"$@\" -- --script \"$VPNC_SCRIPT\"`\n - стало: `... \"$@\" -- _ --script \"$VPNC_SCRIPT\"`\n\nПочему это нужно:\n- В `openconnect-sso 0.8.1` есть баг парсинга passthrough-аргументов — первый аргумент после `--` теряется.\n- Раньше терялся `--script`, и в `openconnect` прилетал только путь к скрипту как лишний positional, из-за чего было `Too many arguments on command line`.\n- Теперь теряется `_`, а `--script \"$VPNC_SCRIPT\"` доходит корректно.\n\nТакже проверил синтаксис скрипта (`sh -n`) — ошибок нет.\n\nЗапусти снова `vpn-up`. \nЕсли будет новый traceback/ошибка DNS — скинь вывод, добьем до рабочего состояния.\n\n**Summarizing troubleshooting steps**"}]}}