[Distutils] oneget python provider?

Vincent Povirk madewokherd at gmail.com
Mon Jan 12 06:48:48 CET 2015


Hey everyone,

Microsoft is working on a thing called OneGet to be shipped in new
versions of Windows, which will essentially be a standard interface
for accessing whatever package managers are on the system (and
bootstrapping new ones).

Currently users of OneGet access it using PowerShell (but an API is
planned and other interfaces will be available), and package managers
interact with it through libraries called "Providers" (which currently
must be implemented in .NET or PowerShell, but the system is
extensible to other environments).

The idea is that you'll be able to point OneGet at some sort of
package file, or url, or the name of some project you vaguely remember
hearing about, and it'll figure out how to install it and keep it
updated. The ultimate goal is to make package management on Windows at
least as easy as it is on Linux, while taking advantage of existing
systems, rather than imposing a new unified package manager.

It has a github repo at https://github.com/oneget/oneget and someone
wrote a more detailed introduction (which hopefully makes some sense)
here: http://www.howtogeek.com/200334/windows-10-includes-a-linux-style-package-manager-named-oneget/

Sorry if this doesn't make sense, I've been immersed in this and
related projects for a long time, and I've internalized so much of it
that I don't know what the important points are for an introduction.
So, if you can ask questions to help me clarify those things, I'd
appreciate it.

I've been working on a OneGet provider for Python, written in C#,
which would basically be a frontend for PyPI/pip, but would avoid
calling out to python for certain operations like searching PyPI, and
would bootstrap python/pip as needed.

However, the project lead asked at a meeting last week how useful it
would be to be able to implement providers in other languages (by
writing what we're calling a "meta-provider"). I could use the work
I've done so far to make this happen for Python. So that would mean
that any package manager written in Python could have providers that
are also written in Python.

To get an idea of what a provider for a package manager looks like,
this is the interface in C#:
https://github.com/OneGet/oneget/blob/master/OneGet/Providers/IPackageProvider.cs
and here's a builtin provider that only implements
"GetInstalledPackages" and "UninstallPackage":
https://github.com/OneGet/oneget/blob/master/OneGet/Builtin/ArpProvider.cs.
All the methods except for "GetPackageProviderName" are optional.
There might also be some metadata required, I'd need to work out some
details of how this would work for Python.

So, is this interesting to anyone? Would anyone want to work on making
a Python package manager available through this system (especially
pip, as that would save me a lot of work), assuming I can provide some
good documentation/sample code and no C# or PowerShell coding is
required? Did I even explain this well enough for the question to make
sense?


More information about the Distutils-SIG mailing list