Comments (4)
parse: detect and parse VCS Urls
- Modify individual parts
- Extensible
cmd:
-
Tightly integrated to vcs system
Git.clone()
Svn.checkout()
Mercurial.clone() -
Typed
-
Executor:
- subprocess (Default)
- SubprocessCommand (return Dataclass object for fine-grained control)
sync: High-level VCS syncing
-
Uniform base API across VCS Systems
Implement the same functions:
.obtain()
.update()
from libvcs.
Design spec
-
Dictionary-based:
Everything should be operable via a JSON dictionary (yes, encoding class is allowed)Every of consequence should really be an object literal / hashmap / whatever.
-
Doctest everything
-
Pytest w/ parametrize everything
-
Test infrastructure and tooling - make it so convenient that exceptions can create a pytest of the crash
-
Everything that matters be introspectable, and lazy to maximize test capability
-
Everything should be namedtuple, typeddict, or dataclass
Dataclass is nice simply because dot notation is easier to type, complete, and read
-
Easy immutability / freezing to make it easier for jobs / async / parallelism
- If immutable, make it easy to clone a copy with alterations
-
Easy to mutate? Allow easy way to mutate in single case scenarios?
-
-
Document everything
- Go back every quarter and reread the docs, actively think about the optics, highlighting the value, examples, documentations to make sure everything is there and minimize frustration. Think in the shoes of a new user unfamiliar with the API and seeing if the package fits or not
-
Annotate and mypy everything
-
Keep APIs unstable until you get right
-
CI for lint and run tests
from libvcs.
Are you at a Mercurial shop? Can you help make us jimmy this module into the next Sunbeam toaster of python modules? We need this patch and shimmy this module into shape but seek a skilled tradesperson to give it - in Robert M. Pirsig's sense - care. Connect with us on the tracker.
Subversion is rare to come by, but there's mechanics who get by just servicing Audis. Do you have the Mike Rowe tradeskill to tape this module up, even if the OEM parts aren't around anymore? Apply in the issues thread. The API will stay frozen until we're satisfied this puppy is safe to drive.
from libvcs.
- allow weighting / ordering matchers. lower
weight
, higher precedence is_explicit
/is_narrow
(e.g. vcs match)is_distinct
(only matches against one matcher, only used onis_valid()
)
from libvcs.
Related Issues (20)
- Parser: Test and examples of pip-style URLs
- Allow injecting `Executor` class to control how commands are made / ran
- Parser: Make interoperable with `Cmd`, `Project`, `create_project`
- `GitPipURL`: `to_pip_url()`
- Create `libvcs.testing` module as a pytest plugin
- docs: Comparison with...
- Move types and structures to `_internal/types/{git,hg,svn}.py`, e.g. `GitRemote`
- Git update_repo fails when there are only untracked files HOT 17
- docs: See if ToC works with `sphinx.ext.autodoc` + gist > sphinx-autoapi HOT 1
- Parse: Should be able to register parsers, detect vcs
- Rename `parse` package to `url` HOT 1
- Move to `src/`
- pytest_plugin: Create `pytester`
- pytest_plugin: Move faker to an optional dependency or remove it
- `QueryList`: Support `pathlib.Path`
- urls: The API is BROKE (I did it) and I need to make a solution HOT 1
- GitSync: Remotes are broke in vcspull HOT 2
- AWS CodeCommit support
- `pytest`: Test initialization takes 10+ seconds to warmup
- Flakey test: `src/libvcs/sync/base.py::libvcs.sync.base.BaseSync.__init__`
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from libvcs.