Repository: streamlink/streamlink

Issue:
python 3.10: missing lxml wheel on Windows and macOS (streamlink install fails)
### Checklist

- [X] This is a bug report and not a different kind of issue
- [X] [I have read the contribution guidelines](https://github.com/streamlink/streamlink/blob/master/CONTRIBUTING.md#contributing-to-streamlink)
- [X] [I have checked the list of open and recently closed bug reports](https://github.com/streamlink/streamlink/issues?q=is%3Aissue+label%3A%22bug%22)
- [X] [I have checked the commit log of the master branch](https://github.com/streamlink/streamlink/commits/master)

### Streamlink version

Latest build from the master branch

### Description

pip install streamlink 
and 
pip3 install --upgrade streamlink


### Debug log

```text
E:\Software\Fresh Install\Software>pip --version
pip 21.3 from C:\Python310\lib\site-packages\pip (python 3.10)

E:\Software\Fresh Install\Software>pip3 install --upgrade streamlink
Requirement already satisfied: streamlink in c:\python310\lib\site-packages (1.4.0)
Collecting streamlink
  Using cached streamlink-2.4.0-py3-none-win_amd64.whl (360 kB)
Requirement already satisfied: PySocks!=1.5.7,>=1.5.6 in c:\python310\lib\site-packages (from streamlink) (1.7.1)
Requirement already satisfied: iso3166 in c:\python310\lib\site-packages (from streamlink) (2.0.2)
Requirement already satisfied: isodate in c:\python310\lib\site-packages (from streamlink) (0.6.0)
Requirement already satisfied: pycryptodome<4,>=3.4.3 in c:\python310\lib\site-packages (from streamlink) (3.11.0)
Requirement already satisfied: iso-639 in c:\python310\lib\site-packages (from streamlink) (0.4.5)
Requirement already satisfied: requests<3.0,>=2.26.0 in c:\python310\lib\site-packages (from streamlink) (2.26.0)
Collecting lxml>=4.6.3
  Using cached lxml-4.6.3.tar.gz (3.2 MB)
  Preparing metadata (setup.py) ... done
Requirement already satisfied: websocket-client>=0.58.0 in c:\python310\lib\site-packages (from streamlink) (1.2.1)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in c:\python310\lib\site-packages (from requests<3.0,>=2.26.0->streamlink) (1.26.7)
Requirement already satisfied: charset-normalizer~=2.0.0 in c:\python310\lib\site-packages (from requests<3.0,>=2.26.0->streamlink) (2.0.7)
Requirement already satisfied: idna<4,>=2.5 in c:\python310\lib\site-packages (from requests<3.0,>=2.26.0->streamlink) (3.3)
Requirement already satisfied: certifi>=2017.4.17 in c:\python310\lib\site-packages (from requests<3.0,>=2.26.0->streamlink) (2021.10.8)
Requirement already satisfied: six in c:\python310\lib\site-packages (from isodate->streamlink) (1.16.0)
Building wheels for collected packages: lxml
  Building wheel for lxml (setup.py) ... error
  ERROR: Command errored out with exit status 1:
   command: 'C:\Python310\python.exe' -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\PC\\AppData\\Local\\Temp\\pip-install-vgglfm9y\\lxml_3f64fc9669184ac5a35c4d89e9659721\\setup.py'"'"'; __file__='"'"'C:\\Users\\PC\\AppData\\Local\\Temp\\pip-install-vgglfm9y\\lxml_3f64fc9669184ac5a35c4d89e9659721\\setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d 'C:\Users\PC\AppData\Local\Temp\pip-wheel-n93rpids'
       cwd: C:\Users\PC\AppData\Local\Temp\pip-install-vgglfm9y\lxml_3f64fc9669184ac5a35c4d89e9659721\
  Complete output (74 lines):
  Building lxml version 4.6.3.
  Building without Cython.
  Building against pre-built libxml2 andl libxslt libraries
  running bdist_wheel
  running build
  running build_py
  creating build
  creating build\lib.win-amd64-3.10
  creating build\lib.win-amd64-3.10\lxml
  copying src\lxml\builder.py -> build\lib.win-amd64-3.10\lxml
  copying src\lxml\cssselect.py -> build\lib.win-amd64-3.10\lxml
  copying src\lxml\doctestcompare.py -> build\lib.win-amd64-3.10\lxml
  copying src\lxml\ElementInclude.py -> build\lib.win-amd64-3.10\lxml
  copying src\lxml\pyclasslookup.py -> build\lib.win-amd64-3.10\lxml
  copying src\lxml\sax.py -> build\lib.win-amd64-3.10\lxml
  copying src\lxml\usedoctest.py -> build\lib.win-amd64-3.10\lxml
  copying src\lxml\_elementpath.py -> build\lib.win-amd64-3.10\lxml
  copying src\lxml\__init__.py -> build\lib.win-amd64-3.10\lxml
  creating build\lib.win-amd64-3.10\lxml\includes
  copying src\lxml\includes\__init__.py -> build\lib.win-amd64-3.10\lxml\includes
  creating build\lib.win-amd64-3.10\lxml\html
  copying src\lxml\html\builder.py -> build\lib.win-amd64-3.10\lxml\html
  copying src\lxml\html\clean.py -> build\lib.win-amd64-3.10\lxml\html
  copying src\lxml\html\defs.py -> build\lib.win-amd64-3.10\lxml\html
  copying src\lxml\html\diff.py -> build\lib.win-amd64-3.10\lxml\html
  copying src\lxml\html\ElementSoup.py -> build\lib.win-amd64-3.10\lxml\html
  copying src\lxml\html\formfill.py -> build\lib.win-amd64-3.10\lxml\html
  copying src\lxml\html\html5parser.py -> build\lib.win-amd64-3.10\lxml\html
  copying src\lxml\html\soupparser.py -> build\lib.win-amd64-3.10\lxml\html
  copying src\lxml\html\usedoctest.py -> build\lib.win-amd64-3.10\lxml\html
  copying src\lxml\html\_diffcommand.py -> build\lib.win-amd64-3.10\lxml\html
  copying src\lxml\html\_html5builder.py -> build\lib.win-amd64-3.10\lxml\html
  copying src\lxml\html\_setmixin.py -> build\lib.win-amd64-3.10\lxml\html
  copying src\lxml\html\__init__.py -> build\lib.win-amd64-3.10\lxml\html
  creating build\lib.win-amd64-3.10\lxml\isoschematron
  copying src\lxml\isoschematron\__init__.py -> build\lib.win-amd64-3.10\lxml\isoschematron
  copying src\lxml\etree.h -> build\lib.win-amd64-3.10\lxml
  copying src\lxml\etree_api.h -> build\lib.win-amd64-3.10\lxml
  copying src\lxml\lxml.etree.h -> build\lib.win-amd64-3.10\lxml
  copying src\lxml\lxml.etree_api.h -> build\lib.win-amd64-3.10\lxml
  copying src\lxml\includes\c14n.pxd -> build\lib.win-amd64-3.10\lxml\includes
  copying src\lxml\includes\config.pxd -> build\lib.win-amd64-3.10\lxml\includes
  copying src\lxml\includes\dtdvalid.pxd -> build\lib.win-amd64-3.10\lxml\includes
  copying src\lxml\includes\etreepublic.pxd -> build\lib.win-amd64-3.10\lxml\includes
  copying src\lxml\includes\htmlparser.pxd -> build\lib.win-amd64-3.10\lxml\includes
  copying src\lxml\includes\relaxng.pxd -> build\lib.win-amd64-3.10\lxml\includes
  copying src\lxml\includes\schematron.pxd -> build\lib.win-amd64-3.10\lxml\includes
  copying src\lxml\includes\tree.pxd -> build\lib.win-amd64-3.10\lxml\includes
  copying src\lxml\includes\uri.pxd -> build\lib.win-amd64-3.10\lxml\includes
  copying src\lxml\includes\xinclude.pxd -> build\lib.win-amd64-3.10\lxml\includes
  copying src\lxml\includes\xmlerror.pxd -> build\lib.win-amd64-3.10\lxml\includes
  copying src\lxml\includes\xmlparser.pxd -> build\lib.win-amd64-3.10\lxml\includes
  copying src\lxml\includes\xmlschema.pxd -> build\lib.win-amd64-3.10\lxml\includes
  copying src\lxml\includes\xpath.pxd -> build\lib.win-amd64-3.10\lxml\includes
  copying src\lxml\includes\xslt.pxd -> build\lib.win-amd64-3.10\lxml\includes
  copying src\lxml\includes\__init__.pxd -> build\lib.win-amd64-3.10\lxml\includes
  copying src\lxml\includes\etree_defs.h -> build\lib.win-amd64-3.10\lxml\includes
  copying src\lxml\includes\lxml-version.h -> build\lib.win-amd64-3.10\lxml\includes
  creating build\lib.win-amd64-3.10\lxml\isoschematron\resources
  creating build\lib.win-amd64-3.10\lxml\isoschematron\resources\rng
  copying src\lxml\isoschematron\resources\rng\iso-schematron.rng -> build\lib.win-amd64-3.10\lxml\isoschematron\resources\rng
  creating build\lib.win-amd64-3.10\lxml\isoschematron\resources\xsl
  copying src\lxml\isoschematron\resources\xsl\RNG2Schtrn.xsl -> build\lib.win-amd64-3.10\lxml\isoschematron\resources\xsl
  copying src\lxml\isoschematron\resources\xsl\XSD2Schtrn.xsl -> build\lib.win-amd64-3.10\lxml\isoschematron\resources\xsl
  creating build\lib.win-amd64-3.10\lxml\isoschematron\resources\xsl\iso-schematron-xslt1
  copying src\lxml\isoschematron\resources\xsl\iso-schematron-xslt1\iso_abstract_expand.xsl -> build\lib.win-amd64-3.10\lxml\isoschematron\resources\xsl\iso-schematron-xslt1
  copying src\lxml\isoschematron\resources\xsl\iso-schematron-xslt1\iso_dsdl_include.xsl -> build\lib.win-amd64-3.10\lxml\isoschematron\resources\xsl\iso-schematron-xslt1
  copying src\lxml\isoschematron\resources\xsl\iso-schematron-xslt1\iso_schematron_message.xsl -> build\lib.win-amd64-3.10\lxml\isoschematron\resources\xsl\iso-schematron-xslt1
  copying src\lxml\isoschematron\resources\xsl\iso-schematron-xslt1\iso_schematron_skeleton_for_xslt1.xsl -> build\lib.win-amd64-3.10\lxml\isoschematron\resources\xsl\iso-schematron-xslt1
  copying src\lxml\isoschematron\resources\xsl\iso-schematron-xslt1\iso_svrl_for_xslt1.xsl -> build\lib.win-amd64-3.10\lxml\isoschematron\resources\xsl\iso-schematron-xslt1
  copying src\lxml\isoschematron\resources\xsl\iso-schematron-xslt1\readme.txt -> build\lib.win-amd64-3.10\lxml\isoschematron\resources\xsl\iso-schematron-xslt1
  running build_ext
  building 'lxml.etree' extension
  error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/
  ----------------------------------------
  ERROR: Failed building wheel for lxml
  Running setup.py clean for lxml
Failed to build lxml
Installing collected packages: lxml, streamlink
    Running setup.py install for lxml ... error
    ERROR: Command errored out with exit status 1:
     command: 'C:\Python310\python.exe' -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\PC\\AppData\\Local\\Temp\\pip-install-vgglfm9y\\lxml_3f64fc9669184ac5a35c4d89e9659721\\setup.py'"'"'; __file__='"'"'C:\\Users\\PC\\AppData\\Local\\Temp\\pip-install-vgglfm9y\\lxml_3f64fc9669184ac5a35c4d89e9659721\\setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record 'C:\Users\PC\AppData\Local\Temp\pip-record-6dzbzm0n\install-record.txt' --single-version-externally-managed --compile --install-headers 'C:\Python310\Include\lxml'
         cwd: C:\Users\PC\AppData\Local\Temp\pip-install-vgglfm9y\lxml_3f64fc9669184ac5a35c4d89e9659721\
    Complete output (74 lines):
    Building lxml version 4.6.3.
    Building without Cython.
    Building against pre-built libxml2 andl libxslt libraries
    running install
    running build
    running build_py
    creating build
    creating build\lib.win-amd64-3.10
    creating build\lib.win-amd64-3.10\lxml
    copying src\lxml\builder.py -> build\lib.win-amd64-3.10\lxml
    copying src\lxml\cssselect.py -> build\lib.win-amd64-3.10\lxml
    copying src\lxml\doctestcompare.py -> build\lib.win-amd64-3.10\lxml
    copying src\lxml\ElementInclude.py -> build\lib.win-amd64-3.10\lxml
    copying src\lxml\pyclasslookup.py -> build\lib.win-amd64-3.10\lxml
    copying src\lxml\sax.py -> build\lib.win-amd64-3.10\lxml
    copying src\lxml\usedoctest.py -> build\lib.win-amd64-3.10\lxml
    copying src\lxml\_elementpath.py -> build\lib.win-amd64-3.10\lxml
    copying src\lxml\__init__.py -> build\lib.win-amd64-3.10\lxml
    creating build\lib.win-amd64-3.10\lxml\includes
    copying src\lxml\includes\__init__.py -> build\lib.win-amd64-3.10\lxml\includes
    creating build\lib.win-amd64-3.10\lxml\html
    copying src\lxml\html\builder.py -> build\lib.win-amd64-3.10\lxml\html
    copying src\lxml\html\clean.py -> build\lib.win-amd64-3.10\lxml\html
    copying src\lxml\html\defs.py -> build\lib.win-amd64-3.10\lxml\html
    copying src\lxml\html\diff.py -> build\lib.win-amd64-3.10\lxml\html
    copying src\lxml\html\ElementSoup.py -> build\lib.win-amd64-3.10\lxml\html
    copying src\lxml\html\formfill.py -> build\lib.win-amd64-3.10\lxml\html
    copying src\lxml\html\html5parser.py -> build\lib.win-amd64-3.10\lxml\html
    copying src\lxml\html\soupparser.py -> build\lib.win-amd64-3.10\lxml\html
    copying src\lxml\html\usedoctest.py -> build\lib.win-amd64-3.10\lxml\html
    copying src\lxml\html\_diffcommand.py -> build\lib.win-amd64-3.10\lxml\html
    copying src\lxml\html\_html5builder.py -> build\lib.win-amd64-3.10\lxml\html
    copying src\lxml\html\_setmixin.py -> build\lib.win-amd64-3.10\lxml\html
    copying src\lxml\html\__init__.py -> build\lib.win-amd64-3.10\lxml\html
    creating build\lib.win-amd64-3.10\lxml\isoschematron
    copying src\lxml\isoschematron\__init__.py -> build\lib.win-amd64-3.10\lxml\isoschematron
    copying src\lxml\etree.h -> build\lib.win-amd64-3.10\lxml
    copying src\lxml\etree_api.h -> build\lib.win-amd64-3.10\lxml
    copying src\lxml\lxml.etree.h -> build\lib.win-amd64-3.10\lxml
    copying src\lxml\lxml.etree_api.h -> build\lib.win-amd64-3.10\lxml
    copying src\lxml\includes\c14n.pxd -> build\lib.win-amd64-3.10\lxml\includes
    copying src\lxml\includes\config.pxd -> build\lib.win-amd64-3.10\lxml\includes
    copying src\lxml\includes\dtdvalid.pxd -> build\lib.win-amd64-3.10\lxml\includes
    copying src\lxml\includes\etreepublic.pxd -> build\lib.win-amd64-3.10\lxml\includes
    copying src\lxml\includes\htmlparser.pxd -> build\lib.win-amd64-3.10\lxml\includes
    copying src\lxml\includes\relaxng.pxd -> build\lib.win-amd64-3.10\lxml\includes
    copying src\lxml\includes\schematron.pxd -> build\lib.win-amd64-3.10\lxml\includes
    copying src\lxml\includes\tree.pxd -> build\lib.win-amd64-3.10\lxml\includes
    copying src\lxml\includes\uri.pxd -> build\lib.win-amd64-3.10\lxml\includes
    copying src\lxml\includes\xinclude.pxd -> build\lib.win-amd64-3.10\lxml\includes
    copying src\lxml\includes\xmlerror.pxd -> build\lib.win-amd64-3.10\lxml\includes
    copying src\lxml\includes\xmlparser.pxd -> build\lib.win-amd64-3.10\lxml\includes
    copying src\lxml\includes\xmlschema.pxd -> build\lib.win-amd64-3.10\lxml\includes
    copying src\lxml\includes\xpath.pxd -> build\lib.win-amd64-3.10\lxml\includes
    copying src\lxml\includes\xslt.pxd -> build\lib.win-amd64-3.10\lxml\includes
    copying src\lxml\includes\__init__.pxd -> build\lib.win-amd64-3.10\lxml\includes
    copying src\lxml\includes\etree_defs.h -> build\lib.win-amd64-3.10\lxml\includes
    copying src\lxml\includes\lxml-version.h -> build\lib.win-amd64-3.10\lxml\includes
    creating build\lib.win-amd64-3.10\lxml\isoschematron\resources
    creating build\lib.win-amd64-3.10\lxml\isoschematron\resources\rng
    copying src\lxml\isoschematron\resources\rng\iso-schematron.rng -> build\lib.win-amd64-3.10\lxml\isoschematron\resources\rng
    creating build\lib.win-amd64-3.10\lxml\isoschematron\resources\xsl
    copying src\lxml\isoschematron\resources\xsl\RNG2Schtrn.xsl -> build\lib.win-amd64-3.10\lxml\isoschematron\resources\xsl
    copying src\lxml\isoschematron\resources\xsl\XSD2Schtrn.xsl -> build\lib.win-amd64-3.10\lxml\isoschematron\resources\xsl
    creating build\lib.win-amd64-3.10\lxml\isoschematron\resources\xsl\iso-schematron-xslt1
    copying src\lxml\isoschematron\resources\xsl\iso-schematron-xslt1\iso_abstract_expand.xsl -> build\lib.win-amd64-3.10\lxml\isoschematron\resources\xsl\iso-schematron-xslt1
    copying src\lxml\isoschematron\resources\xsl\iso-schematron-xslt1\iso_dsdl_include.xsl -> build\lib.win-amd64-3.10\lxml\isoschematron\resources\xsl\iso-schematron-xslt1
    copying src\lxml\isoschematron\resources\xsl\iso-schematron-xslt1\iso_schematron_message.xsl -> build\lib.win-amd64-3.10\lxml\isoschematron\resources\xsl\iso-schematron-xslt1
    copying src\lxml\isoschematron\resources\xsl\iso-schematron-xslt1\iso_schematron_skeleton_for_xslt1.xsl -> build\lib.win-amd64-3.10\lxml\isoschematron\resources\xsl\iso-schematron-xslt1
    copying src\lxml\isoschematron\resources\xsl\iso-schematron-xslt1\iso_svrl_for_xslt1.xsl -> build\lib.win-amd64-3.10\lxml\isoschematron\resources\xsl\iso-schematron-xslt1
    copying src\lxml\isoschematron\resources\xsl\iso-schematron-xslt1\readme.txt -> build\lib.win-amd64-3.10\lxml\isoschematron\resources\xsl\iso-schematron-xslt1
    running build_ext
    building 'lxml.etree' extension
    error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/
    ----------------------------------------
ERROR: Command errored out with exit status 1: 'C:\Python310\python.exe' -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\PC\\AppData\\Local\\Temp\\pip-install-vgglfm9y\\lxml_3f64fc9669184ac5a35c4d89e9659721\\setup.py'"'"'; __file__='"'"'C:\\Users\\PC\\AppData\\Local\\Temp\\pip-install-vgglfm9y\\lxml_3f64fc9669184ac5a35c4d89e9659721\\setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record 'C:\Users\PC\AppData\Local\Temp\pip-record-6dzbzm0n\install-record.txt' --single-version-externally-managed --compile --install-headers 'C:\Python310\Include\lxml' Check the logs for full command output.
```



Discussion:
`lxml` is still lacking `cp310` wheels for Windows and macOS and pip will try to install lxml from source (tar-ball). When you don't have the lxml build dependencies installed, the install will fail.

- https://pypi.org/project/lxml/#files
- https://lxml.de/installation.html#building-lxml-from-dev-sources

Check this lxml mailing list message for a request for adding the missing wheels:
https://mail.python.org/archives/list/lxml@python.org/thread/ZMEVOLHJJDMZOFRFYOEWAK5Q3HO7RB75/
I've also already contacted the maintainers but haven't received an answer yet.

- https://github.com/streamlink/streamlink/pull/4009
- https://github.com/streamlink/streamlink/pull/4071#issuecomment-935945903
- https://gitter.im/streamlink/streamlink?at=616c531838377967f4595415
- https://gitter.im/streamlink/streamlink?at=616c5497f2cedf67f98ddc55
As you can see in in the commit message of 6943bf173cfed9173f5ef3b84aad6644131f9924, Streamlink currently installs unofficial wheels of lxml in the Windows Python 3.10 CI runners, which were downloaded from here:
https://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml

Windows AMD64 / x86_64
```sh
pip install -U "https://download.lfd.uci.edu/pythonlibs/y2rycu7g/lxml-4.6.3-cp310-cp310-win_amd64.whl; python_version>=3.10 and platform_system=='Windows' and (platform_machine=='AMD64' or platform_machine=='x86_64')" --hash=sha256:556433cadf982a578ee74e989883a07aa9d2a59a04eb2b9f6397c0b4b471ecad
```

Windows x86
```sh
pip install -U "https://download.lfd.uci.edu/pythonlibs/y2rycu7g/lxml-4.6.3-cp310-cp310-win32.whl; python_version>=3.10 and platform_system=='Windows' and platform_machine!='AMD64' and platform_machine!='x86_64')" --hash=sha256:f756d973f89dd0715b5e93301afb9ebdd612ef53ac8986516c1eb0bc6518d85f
```
I got it working by grabbing his commit from the history, I guess it was removed from the github, as I tried sourcing directly and it still failed earlier. 
```
pushd "E:\Software\Fresh Install\Software"
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python get-pip.py
python -m pip install --disable-pip-version-check --upgrade pip setuptools
python -m pip install pycountry
python -m pip install "https://github.com/back-to/tmp_wheel/raw/b237059b18110ca298e191340eebb6eb0aef8827/lxml-4.6.3-cp310-cp310-win_amd64.whl
python -m pip install "https://github.com/back-to/tmp_wheel/raw/b237059b18110ca298e191340eebb6eb0aef8827/lxml-4.6.3-cp310-cp310-win32.whl
python -m pip install streamlink
del /q /s "get-pip.py"
```
cleaned it a bit due to running it independently. 

According to one of the lxml devs, lxml 4.6.4 will presumably be out next week, which will then include wheels for all missing platforms on cp310, which currently (4.6.3) are
- win32
- win_amd64
- macosx_x86_64
- manylinux2014_aarch64

Bumping the min version requirement here is probably not necessary, but could be done to ensure that nobody will run into any issues.

Then we can also finally add the python 3.10 entry to the package classifiers list and resolve this blocking issue for the next release.

Resolving patch:
diff --git a/setup.py b/setup.py
--- a/setup.py
+++ b/setup.py
@@ -41,7 +41,7 @@ def format_msg(text, *args, **kwargs):
 deps = [
     "requests>=2.26.0,<3.0",
     "isodate",
-    "lxml>=4.6.3",
+    "lxml>=4.6.4,<5.0",
     "websocket-client>=0.58.0",
     # Support for SOCKS proxies
     "PySocks!=1.5.7,>=1.5.6",


Test patch: