Closed davelab6 closed 7 months ago
I think that the time it takes to install is longer than usual because lxml is built from C sources. On a second installation it goes faster because the built package is saved on the local pip cache.
This issue does not seem to be specific to fontbakery, as the lxml module is also a dependency of a few other projects that are also among fontbakery's dependencies, such as:
This is our current dependency tree, as listed out using the johnnydep
tool:
name summary
------------------------------------------------------- -------------------------------------------------------------------------------------------------------
fontbakery Well designed Font QA tool, written in Python 3
├── PyYAML YAML parser and emitter for Python
├── axisregistry A python API to access data from the Google Fonts variable fonts axis registry.
│ ├── fonttools Tools to manipulate font files
│ └── protobuf==3.19.4 Protocol Buffers
├── beautifulsoup4 Screen-scraping library
│ └── soupsieve>1.2 A modern CSS selector implementation for Beautiful Soup.
├── beziers Bezier curve manipulation library
│ └── pyclipper Cython wrapper for the C++ translation of the Angus Johnson's Clipper library (ver. 6.4.2)
├── cmarkgfm Minimal bindings to GitHub's fork of cmark
│ └── cffi>=1.15.0 Foreign Function Interface for Python calling C code.
│ └── pycparser C parser in Python
├── collidoscope>=0.4.1 Brute force detection of glyph collisions
│ ├── beziers>=0.0.3 Bezier curve manipulation library
│ │ └── pyclipper Cython wrapper for the C++ translation of the Angus Johnson's Clipper library (ver. 6.4.2)
│ ├── fonttools Tools to manipulate font files
│ ├── glyphtools Routines for extracting information from fontTools glyphs
│ │ ├── babelfont>0.2.0 Abstract interface to font source files based on fontParts
│ │ │ ├── defcon A set of flexible objects for representing UFO data.
│ │ │ │ └── fonttools[ufo,unicode]>=4.10.0 Tools to manipulate font files
│ │ │ │ ├── fs<3,>=2.2.0 Python's filesystem abstraction layer
│ │ │ │ │ ├── appdirs~=1.4.3 A small Python module for determining appropriate platform-specific dirs, e.g. a "user data dir".
│ │ │ │ │ ├── setuptools Easily download, build, install, upgrade, and uninstall Python packages
│ │ │ │ │ └── six~=1.10 Python 2 and 3 compatibility utilities
│ │ │ │ └── unicodedata2>=14.0.0 Unicodedata backport updated to the latest Unicode version.
│ │ │ ├── fontParts An API for interacting with the parts of fonts during the font development process.
│ │ │ │ ├── FontTools[lxml,ufo,unicode]>=3.32.0 Tools to manipulate font files
│ │ │ │ │ ├── fs<3,>=2.2.0 Python's filesystem abstraction layer
│ │ │ │ │ │ ├── appdirs~=1.4.3 A small Python module for determining appropriate platform-specific dirs, e.g. a "user data dir".
│ │ │ │ │ │ ├── setuptools Easily download, build, install, upgrade, and uninstall Python packages
│ │ │ │ │ │ └── six~=1.10 Python 2 and 3 compatibility utilities
│ │ │ │ │ ├── lxml<5,>=4.0 Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API.
│ │ │ │ │ └── unicodedata2>=14.0.0 Unicodedata backport updated to the latest Unicode version.
│ │ │ │ ├── booleanOperations>=0.9.0 Boolean operations on paths.
│ │ │ │ │ ├── fonttools>=4.0.2 Tools to manipulate font files
│ │ │ │ │ └── pyclipper>=1.1.0.post1 Cython wrapper for the C++ translation of the Angus Johnson's Clipper library (ver. 6.4.2)
│ │ │ │ ├── defcon[pens]>=0.6.0 A set of flexible objects for representing UFO data.
│ │ │ │ │ ├── fontPens>=0.1.0 A collection of classes implementing the pen protocol for manipulating glyphs.
│ │ │ │ │ │ └── FontTools>=3.32.0 Tools to manipulate font files
│ │ │ │ │ └── fonttools[ufo,unicode]>=4.10.0 Tools to manipulate font files
│ │ │ │ │ ├── fs<3,>=2.2.0 Python's filesystem abstraction layer
│ │ │ │ │ │ ├── appdirs~=1.4.3 A small Python module for determining appropriate platform-specific dirs, e.g. a "user data dir".
│ │ │ │ │ │ ├── setuptools Easily download, build, install, upgrade, and uninstall Python packages
│ │ │ │ │ │ └── six~=1.10 Python 2 and 3 compatibility utilities
│ │ │ │ │ └── unicodedata2>=14.0.0 Unicodedata backport updated to the latest Unicode version.
│ │ │ │ └── fontMath>=0.4.8 A set of objects for performing math operations on font data.
│ │ │ │ └── fonttools>=3.32.0 Tools to manipulate font files
│ │ │ ├── fontTools[ufo] Tools to manipulate font files
│ │ │ │ └── fs<3,>=2.2.0 Python's filesystem abstraction layer
│ │ │ │ ├── appdirs~=1.4.3 A small Python module for determining appropriate platform-specific dirs, e.g. a "user data dir".
│ │ │ │ ├── setuptools Easily download, build, install, upgrade, and uninstall Python packages
│ │ │ │ └── six~=1.10 Python 2 and 3 compatibility utilities
│ │ │ └── glyphsLib A bridge from Glyphs source files (.glyphs) to UFOs
│ │ │ ├── fonttools[ufo,unicode]>=4.27.1 Tools to manipulate font files
│ │ │ │ ├── fs<3,>=2.2.0 Python's filesystem abstraction layer
│ │ │ │ │ ├── appdirs~=1.4.3 A small Python module for determining appropriate platform-specific dirs, e.g. a "user data dir".
│ │ │ │ │ ├── setuptools Easily download, build, install, upgrade, and uninstall Python packages
│ │ │ │ │ └── six~=1.10 Python 2 and 3 compatibility utilities
│ │ │ │ └── unicodedata2>=14.0.0 Unicodedata backport updated to the latest Unicode version.
│ │ │ ├── openstep-plist>=0.3.0 ASCII plist parser written in Cython
│ │ │ └── ufoLib2>=0.6.2 ufoLib2 is a UFO font processing library.
│ │ │ ├── attrs>=20.1.0 Classes Without Boilerplate
│ │ │ └── fonttools[ufo]>=4.0.0 Tools to manipulate font files
│ │ │ └── fs<3,>=2.2.0 Python's filesystem abstraction layer
│ │ │ ├── appdirs~=1.4.3 A small Python module for determining appropriate platform-specific dirs, e.g. a "user data dir".
│ │ │ ├── setuptools Easily download, build, install, upgrade, and uninstall Python packages
│ │ │ └── six~=1.10 Python 2 and 3 compatibility utilities
│ │ ├── beziers Bezier curve manipulation library
│ │ │ └── pyclipper Cython wrapper for the C++ translation of the Angus Johnson's Clipper library (ver. 6.4.2)
│ │ ├── glyphsLib A bridge from Glyphs source files (.glyphs) to UFOs
│ │ │ ├── fonttools[ufo,unicode]>=4.27.1 Tools to manipulate font files
│ │ │ │ ├── fs<3,>=2.2.0 Python's filesystem abstraction layer
│ │ │ │ │ ├── appdirs~=1.4.3 A small Python module for determining appropriate platform-specific dirs, e.g. a "user data dir".
│ │ │ │ │ ├── setuptools Easily download, build, install, upgrade, and uninstall Python packages
│ │ │ │ │ └── six~=1.10 Python 2 and 3 compatibility utilities
│ │ │ │ └── unicodedata2>=14.0.0 Unicodedata backport updated to the latest Unicode version.
│ │ │ ├── openstep-plist>=0.3.0 ASCII plist parser written in Cython
│ │ │ └── ufoLib2>=0.6.2 ufoLib2 is a UFO font processing library.
│ │ │ ├── attrs>=20.1.0 Classes Without Boilerplate
│ │ │ └── fonttools[ufo]>=4.0.0 Tools to manipulate font files
│ │ │ └── fs<3,>=2.2.0 Python's filesystem abstraction layer
│ │ │ ├── appdirs~=1.4.3 A small Python module for determining appropriate platform-specific dirs, e.g. a "user data dir".
│ │ │ ├── setuptools Easily download, build, install, upgrade, and uninstall Python packages
│ │ │ └── six~=1.10 Python 2 and 3 compatibility utilities
│ │ └── numpy NumPy is the fundamental package for array computing with Python.
│ └── uharfbuzz Streamlined Cython bindings for the harfbuzz shaping engine
├── defcon A set of flexible objects for representing UFO data.
│ └── fonttools[ufo,unicode]>=4.10.0 Tools to manipulate font files
│ ├── fs<3,>=2.2.0 Python's filesystem abstraction layer
│ │ ├── appdirs~=1.4.3 A small Python module for determining appropriate platform-specific dirs, e.g. a "user data dir".
│ │ ├── setuptools Easily download, build, install, upgrade, and uninstall Python packages
│ │ └── six~=1.10 Python 2 and 3 compatibility utilities
│ └── unicodedata2>=14.0.0 Unicodedata backport updated to the latest Unicode version.
├── dehinter>=3.1.0 A tool for the removal of TrueType instruction sets (hints) in fonts
│ └── fontTools Tools to manipulate font files
├── font-v Font version reporting and modification tool
│ ├── fonttools Tools to manipulate font files
│ └── gitpython GitPython is a python library used to interact with Git repositories
│ └── gitdb<5,>=4.0.1 Git Object Database
│ └── smmap<6,>=3.0.1 A pure Python implementation of a sliding window memory map manager
├── fontTools[lxml,ufo,unicode]>=3.34 Tools to manipulate font files
│ ├── fs<3,>=2.2.0 Python's filesystem abstraction layer
│ │ ├── appdirs~=1.4.3 A small Python module for determining appropriate platform-specific dirs, e.g. a "user data dir".
│ │ ├── setuptools Easily download, build, install, upgrade, and uninstall Python packages
│ │ └── six~=1.10 Python 2 and 3 compatibility utilities
│ ├── lxml<5,>=4.0 Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API.
│ └── unicodedata2>=14.0.0 Unicodedata backport updated to the latest Unicode version.
├── gflanguages>=0.3.0 A python API for evaluating language support in the Google Fonts collection.
│ └── protobuf
├── glyphsets>=0.5.0 A python API for evaluating coverage of glyph sets in font projects.
│ ├── FontTools[ufo] Tools to manipulate font files
│ │ └── fs<3,>=2.2.0 Python's filesystem abstraction layer
│ │ ├── appdirs~=1.4.3 A small Python module for determining appropriate platform-specific dirs, e.g. a "user data dir".
│ │ ├── setuptools Easily download, build, install, upgrade, and uninstall Python packages
│ │ └── six~=1.10 Python 2 and 3 compatibility utilities
│ ├── defcon A set of flexible objects for representing UFO data.
│ │ └── fonttools[ufo,unicode]>=4.10.0 Tools to manipulate font files
│ │ ├── fs<3,>=2.2.0 Python's filesystem abstraction layer
│ │ │ ├── appdirs~=1.4.3 A small Python module for determining appropriate platform-specific dirs, e.g. a "user data dir".
│ │ │ ├── setuptools Easily download, build, install, upgrade, and uninstall Python packages
│ │ │ └── six~=1.10 Python 2 and 3 compatibility utilities
│ │ └── unicodedata2>=14.0.0 Unicodedata backport updated to the latest Unicode version.
│ ├── glyphsLib A bridge from Glyphs source files (.glyphs) to UFOs
│ │ ├── fonttools[ufo,unicode]>=4.27.1 Tools to manipulate font files
│ │ │ ├── fs<3,>=2.2.0 Python's filesystem abstraction layer
│ │ │ │ ├── appdirs~=1.4.3 A small Python module for determining appropriate platform-specific dirs, e.g. a "user data dir".
│ │ │ │ ├── setuptools Easily download, build, install, upgrade, and uninstall Python packages
│ │ │ │ └── six~=1.10 Python 2 and 3 compatibility utilities
│ │ │ └── unicodedata2>=14.0.0 Unicodedata backport updated to the latest Unicode version.
│ │ ├── openstep-plist>=0.3.0 ASCII plist parser written in Cython
│ │ └── ufoLib2>=0.6.2 ufoLib2 is a UFO font processing library.
│ │ ├── attrs>=20.1.0 Classes Without Boilerplate
│ │ └── fonttools[ufo]>=4.0.0 Tools to manipulate font files
│ │ └── fs<3,>=2.2.0 Python's filesystem abstraction layer
│ │ ├── appdirs~=1.4.3 A small Python module for determining appropriate platform-specific dirs, e.g. a "user data dir".
│ │ ├── setuptools Easily download, build, install, upgrade, and uninstall Python packages
│ │ └── six~=1.10 Python 2 and 3 compatibility utilities
│ └── setuptools Easily download, build, install, upgrade, and uninstall Python packages
├── lxml Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API.
├── opentype-sanitizer>=7.1.9 Python wrapper for the OpenType Sanitizer
├── opentypespec Data derived from the OpenType specification
├── pip-api An unofficial, importable pip API
│ └── pip The PyPA recommended tool for installing Python packages.
├── protobuf>=3.7.0
├── requests Python HTTP for Humans.
│ ├── certifi>=2017.4.17 Python package for providing Mozilla's CA Bundle.
│ ├── charset-normalizer<3,>=2 The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet.
│ ├── idna<4,>=2.5 Internationalized Domain Names in Applications (IDNA)
│ └── urllib3<1.27,>=1.21.1 HTTP library with thread-safe connection pooling, file post, and more.
├── rich Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal
│ ├── commonmark<0.10.0,>=0.9.0 Python parser for the CommonMark Markdown spec
│ └── pygments<3.0.0,>=2.6.0 Pygments is a syntax highlighting package written in Python.
├── stringbrewer Generate random strings matching a pattern
│ ├── rstr Generate random strings in Python
│ └── sre-yield Expands a regular expression to its possible matches
├── toml Python Library for Tom's Obvious, Minimal Language
├── ufo2ft>=2.25.2 A bridge between UFOs and FontTools.
│ ├── booleanOperations>=0.9.0 Boolean operations on paths.
│ │ ├── fonttools>=4.0.2 Tools to manipulate font files
│ │ └── pyclipper>=1.1.0.post1 Cython wrapper for the C++ translation of the Angus Johnson's Clipper library (ver. 6.4.2)
│ ├── cffsubr>=0.2.8 Standalone CFF subroutinizer based on the AFDKO tx tool
│ │ └── fontTools>=4.10.2 Tools to manipulate font files
│ ├── cu2qu>=1.6.7 Cubic-to-quadratic bezier curve conversion
│ │ └── fonttools[ufo]>=3.32.0 Tools to manipulate font files
│ │ └── fs<3,>=2.2.0 Python's filesystem abstraction layer
│ │ ├── appdirs~=1.4.3 A small Python module for determining appropriate platform-specific dirs, e.g. a "user data dir".
│ │ ├── setuptools Easily download, build, install, upgrade, and uninstall Python packages
│ │ └── six~=1.10 Python 2 and 3 compatibility utilities
│ └── fonttools[ufo]>=4.34.0 Tools to manipulate font files
│ └── fs<3,>=2.2.0 Python's filesystem abstraction layer
│ ├── appdirs~=1.4.3 A small Python module for determining appropriate platform-specific dirs, e.g. a "user data dir".
│ ├── setuptools Easily download, build, install, upgrade, and uninstall Python packages
│ └── six~=1.10 Python 2 and 3 compatibility utilities
├── ufolint UFO source file linter
│ ├── commandlines Command line argument to object parsing library for command line application development
│ └── fontTools[ufo]>=4.18.0 Tools to manipulate font files
│ └── fs<3,>=2.2.0 Python's filesystem abstraction layer
│ ├── appdirs~=1.4.3 A small Python module for determining appropriate platform-specific dirs, e.g. a "user data dir".
│ ├── setuptools Easily download, build, install, upgrade, and uninstall Python packages
│ └── six~=1.10 Python 2 and 3 compatibility utilities
├── unicodedata2 Unicodedata backport updated to the latest Unicode version.
└── vharfbuzz A user-friendlier way to use Harfbuzz in Python
├── fontTools Tools to manipulate font files
└── uharfbuzz Streamlined Cython bindings for the harfbuzz shaping engine
Moving to #3874 for the final "remove lxml" piece.
Observed behaviour
Expected behaviour
Fontbakery pip installs quickly