[Distutils] PEP-426 environment markers [was: Re: Support for condition to include or exclude a buildout sections based on a Python expression]
Jim Fulton
jim at zope.com
Wed Jan 30 15:36:55 CET 2013
On Wed, Jan 30, 2013 at 9:00 AM, Philippe Ombredanne
<pombredanne at nexb.com> wrote:
> On Wed, Jan 30, 2013 at 1:39 PM, Jim Fulton <jim at zope.com> wrote:
>> On Tue, Jan 29, 2013 at 6:25 PM, Nick Coghlan <ncoghlan at gmail.com> wrote:
>>> On Wed, Jan 30, 2013 at 12:02 AM, Philippe Ombredanne
>>> <pombredanne at nexb.com> wrote:
>>>> All:
>>>>
>>>> I prepared a pull request https://github.com/buildout/buildout/pull/51
>>>> to add support in Buildout 2 for conditional sections expressions.
>>>
>>> If you're going to do something like this, it would be good to base it
>>> on PEP 345/426 style "environment markers", which are basically the
>>> same idea applied to dependency definitions in the package metadata:
>>> http://www.python.org/dev/peps/pep-0426/#environment-markers
>>
>> I think it makes sense to support these markers.
>
> This is rather easy with a caveat:
> http://www.python.org/dev/peps/pep-0426/#environment-markers
> defines markers EXPR as one of these:
>
> python_version = '%s.%s' % (sys.version_info[0], sys.version_info[1])
> python_full_version = sys.version.split()[0]
> os.name = os.name
> sys.platform = sys.platform
> platform.version = platform.version()
> platform.machine = platform.machine()
> platform.python_implementation = platform.python_implementation()
> a free string, like '2.4', or 'win32'
> extra = (name of requested feature) or None
>
> A python implementation of the proposed draft would have to monkey
> patch standard functions (platform.version, platform.machine and
> platform.python_implementation) with their invocation results or would
> require rather complex parsing.....
I hadn't noticed that you were exposing the platform module already.
Sorry. I should have checked.
The PEP's treatment of the platform module is unfortunate.
I was going to mention this before, but I didn't think we were
exposing platform module and though "whatever".
> Since this is a draft, could we instead avoid a module-like syntax for
> all EXPR and instead use this:
>
> python_version = '%s.%s' % (sys.version_info[0], sys.version_info[1])
> python_full_version = sys.version.split()[0]
> os_name = os.name
> sys_platform = sys.platform
> platform_version = platform.version()
> platform_machine = platform.machine()
> platform_python_implementation = platform.python_implementation()
> a free string, like '2.4', or 'win32'
> extra = (name of requested feature) or None
>
> This sounds more consistent to me to replace the dots with _
> consistently the same way the original python_version has been
> specified
I have no interest in supporting a Python expression subset.
I'd rather stick with what you did originally and just expose the
modules. This is simpler and easier for people to remember.
Jim
--
Jim Fulton
http://www.linkedin.com/in/jimfulton
Jerky is better than bacon! http://zo.pe/Kqm
More information about the Distutils-SIG
mailing list