pastelmind / d2animdata Goto Github PK
View Code? Open in Web Editor NEW(De)compiles AnimData.D2 to JSON and tabbed text
License: MIT License
(De)compiles AnimData.D2 to JSON and tabbed text
License: MIT License
Let's add support for more file formats. I can leverage the extras_require
feature of setuptools (or the requires-extra
option of flit, if I switch over to it) to add conditional dependencies. I can then detect which optional dependencies are available, and make related features selectively available.
json5
.Currently, the entire CI/CD Workflow (see .github/workflows/build.yml
) takes about 2 minutes, not including the publish Job). This is too long for a simple one-file distribution.
A significant amount of time is spent on installing dependencies. Windows runners in particular spend inordinate amounts of time on pip install
. See the stats for run 52035558, which ran on the current HEAD (79e4191):
Job | Installing Dependencies (s) | Total (s) | Percentage |
---|---|---|---|
build | 8 | 14 | 57.1% |
lint (black) | 14 | 23 | 60.9% |
lint (isort) | 16 | 23 | 69.6% |
lint (pylint) | 11 | 19 | 57.9% |
test (ubuntu, py37) | 12 | 23 | 52.2% |
test (ubuntu, py38) | 11 | 20 | 55.0% |
test (windows, py37) | 48 | 67 | 71.6% |
test (windows, py38) | 34 | 52 | 65.4% |
Only install dependencies required for each job. The lint jobs don't need tox. The test jobs don't need Pylint. No job needs pipdeptree, as I use it for examining dependencies.
To do so, split requirements-dev.txt
into multiple files: linting, building-and-testing, and miscellaneous development tools. More fine-grained splitting is possible (requirements-lint-black.txt
, requirements-lint-pylint.txt
, etc.), but it would make managing dependencies a nightmare.
Unfortunately, the dependencies for building wheels (setuptools, wheel, etc.) must be installed on both the build and test jobs. This is because I want to test both sdists and wheels.
Since building sdists and wheels take a trivial amount of time, we could reduce the overall time spent by building them directly in each test job. This eliminates the need for a separate build job.
However, this means that make each test job would uses sdists and wheels built on its own platform and Python runtime, not the ones published to PyPI. The status quo ensures that I am actually testing what is published. Hence, this idea is rejected.
The goal is to reduce the number of config files as much as possible.
legacy_tox_ini
format is supported. This is an ugly trick that stores the entire INI as a TOML string. I'd rather store the config using a proper TOML syntax. That said, the documentation states that "there is a plan to add a pure TOML one soon". I can sit and wait.pyproject.toml
. I am looking forward to its release, since it also includes several desirable fixes.A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.