- 2 Posts
- 3 Comments
shape_warrior_t@programming.devto Programmer Humor@programming.dev•Gambling with LainEnglish1·7 days agoYou can get the exclusive behaviour with
random.randrange
. (Relevant Stack Overflow question with a somewhat interesting answer)
Interesting way of handling project vs global scope:
Some package managers (e.g.
npm
) use per-project scope by default, but also allow you to install packages globally using flags (npm install -g
). Others (e.g.brew
) use global scope.I like the idea of allowing both project and global scope, but I do not like the flags approach. Why don’t we apply a heuristic:
If there is a
.sqlpkg
folder in the current directory, use project scope. Otherwise, use global scope.This way, if users don’t need separate project environments, they will just run
sqlpkg
as is and install packages in their home folder (e.g.~/.sqlpkg
). Otherwise, they’ll create a separate.sqlpkg
for each project (we can provide a helperinit
command for this).Seems rather implicit, though, especially if the command output doesn’t specify which scope a package was installed in. If a user moves to a subdirectory, forgets they are there, and then tries to install a package, the package will unexpectedly install in global scope (though this particular version of the problem can be solved by also looking in parent directories).
Even regular Rust code is more “exciting” than Python in this regard, since you have a choice between
self
,&self
, and&mut self
. And occasionallymut self
,&'a self
, and evenself: Box<Self>
. All of which offer different semantics depending on what exactly you’re trying to do.