libvcs
Kaitai Struct
libvcs | Kaitai Struct | |
---|---|---|
3 | 44 | |
47 | 3,839 | |
- | 1.1% | |
9.4 | 7.5 | |
5 days ago | 18 days ago | |
Python | Shell | |
MIT License | GPL-3.0-or-later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
libvcs
-
Using Mypy in Production
I am moving all my open source projects to `mypy --strict`. Here's the diff of adding basic / --strict mypy types:
libvcs: https://github.com/vcs-python/libvcs/pull/362/files, https://github.com/vcs-python/libvcs/pull/390/files
libtmux: https://github.com/tmux-python/libtmux/pull/382/files, https://github.com/tmux-python/libtmux/pull/383/files
unihan-etl: https://github.com/cihai/unihan-etl/pull/255/files, https://github.com/cihai/unihan-etl/pull/257/files
As for return on investment - not sure yet. What I like about it is:
- completions (through annotating)
- typings can be used downstream (since the above are all now typed python libraries)
- maintainability and bug finding. Easy to wire into CI and run locally.
There's a thread on mypy, "--strict is too strict to be useful", https://github.com/python/mypy/issues/7767. I'm not sure if I walked away with that impression. If I have a function that could potentially return `None` (`Optional[str]` or `str | None`) - it makes sense for the user to handle such a case. They could:
assert response is not None
-
libvcs 0.14 - Python library for VCS systems supporting Git / Mercurial / Subversion (Dusting this off after a few years of inactivity, wow is mypy nice)
GitHub (docs) - Git URL parser, commands, project syncing
Kaitai Struct
- Reverse-engineering an encrypted IoT protocol
-
Parsing an Undocumented File Format
- ImHex [2], which has a pattern language [3] which allows parsing, and it seems more powerful than what Kaitai offers. I stumbled upon some limitations with it but it was still useful.
[1]: https://kaitai.io/
- Kaitai Struct – a declarative language used to describe binary data structures
-
HTTPie Desktop: cross-platform API testing client for humans
Beautiful. Didn't know something like this exists. Reminds me of Katai[0]
[0]. https://kaitai.io/
-
Hacking the LG Monitor's EDID
An EDID override like this would be helpful for macOS as well, where the monitors swapping around after standby is a real annoyance [0] [1]
EDID rewrites are 99% of the time blocked by the monitor firmware: https://notes.alinpanaitiu.com/Decoding-monitor-EDID-on-macO...
By the way, one helpful tool that helped me navigate the EDID dump was Kaitai Struct [2]. It shows a side by side view with the hex view and the EDID structure, and it highlights the hex values in real time as you navigate the structure. Unfortunately [3] it doesn't support the extension blocks that the author needs.
[0] https://notes.alinpanaitiu.com/Weird-monitor-bugs
[1] https://forums.macrumors.com/threads/external-displays-swapp...
[2] https://kaitai.io/
[3] https://github.com/kaitai-io/edid.ksy
- Kaitai Struct: new way to develop parsers for binary structures
-
Fq: Jq for Binary Formats
Kaitai Struct might be a good choice for that: https://kaitai.io/
-
Ingesting, parsing and making sense of device log data
For binary log format, there's the excellent Kaitai Struct frameworks, that make it very easy to generate parsers from a declarative schema
-
What is this tool? More info in comments
kaitai
-
Visual Programming with Elixir: Learning to Write Binary Parsers (2019)
https://kaitai.io/
Worth a look if you are writing binary parsers.
What are some alternatives?
PyYAML
Protobuf - Protocol Buffers - Google's data interchange format
vcspull - 🔄 Synchronize projects via yaml/json manifest. Built using `libvcs`.
csvkit - A suite of utilities for converting to and working with CSV, the king of tabular file formats.
pymorphy2 - Morphological analyzer / inflection engine for Russian and Ukrainian languages.
Camelot - A Python library to extract tabular data from PDFs
libtmux - ⚙️ Python API / wrapper for tmux
tablib - Python Module for Tabular Datasets in XLS, CSV, JSON, YAML, &c.
obs-service-tar_scm - An OBS source service: fetches code from any SCM and archives it
PDFMiner - Python PDF Parser (Not actively maintained). Check out pdfminer.six.
flakeheaven - flakeheaven is a python linter built around flake8 to enable inheritable and complex toml configuration.