Comments (1)
The current CLI design follows (loosely) Sam Boyer’s map-sync-memo proposal, but with naming tweaks (to match Pipenv).
There are conceptually four representations that need to be kept in sync. They are defined as
p
Project intentm
Manifest (Pipfile)l
Lock file (Pipfile.lock)d
Dependency code (actually installed packages)
And the three sync operations are
M(p,m)
Modify the Pipfile to add/remove/modify package declarations.L(m,l)
Execute the locker to generate a new Pipfile.lock.D(l,d)
Synchronize the environment based on Pipfile.lock, installing needed, uninstalling superfluous.
Mapping them to commands in Passa:
add
isM∘L∘D
;add --no-sync
isM∘L
.clean
is a partialD
.freeze
is not related to this process.install
isL∘D
with a special hash check.lock
isL
.remove
isM∘L∘D
(D
is partial; only cleaning);remove --no-clean
isM∘L
.sync
isS
.upgrade
isL∘D
;upgrade --no-sync
isM∘L
.
Note that the meanings of install and sync are flipped to match Pipenv.
Compared to Boyer’s method, D(l,d)
is actually split into two parts in Passa. sync
can be logically separated into sync --no-clean
and clean
. remove
only does D
halfway, and both add
and upgrade
also have a switch to achieve this halfway state. This special feature is designed to fit a common Python app development use case, allowing the user to keep stray, untracked packages in the virtual environment.
from passa.
Related Issues (20)
- Better error messaging if the Pipfile is invalid
- Better error messaging (or more eager validation) for invalid requirement lines
- Allow prereleases if the specifier contains a prerelease version HOT 4
- Prerelease fallback when no versions are found is broken
- Requirement conflicts when mixing named and non-named specification for a package HOT 4
- [Future] Investigate replacing pip internals HOT 3
- freeze result should order packages by (normalized) name, not the formatted line
- Review how non-named requirements are locked into candidates HOT 1
- Support non-setuptools-backed editable setup HOT 5
- Maybe project should not require Pipfile? HOT 2
- Better error reporting when wheel building fails
- [Future] PEP 517 support HOT 1
- [Future] Investigate dependency graph implementation in distlib HOT 2
- Hash-fetching needs to reuse connections better HOT 1
- Running `add` against projects with no lockfile fails
- Write some integration tests HOT 3
- Packing tests are failing HOT 6
- Warn about invalid extras during locking HOT 2
- Passa lock fails due to KeyError HOT 1
- Support both & and | for metasets merging.
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 passa.