[PATCH 2 of 3 v3] policy: add cffi policy for PyPy

Maciej Fijalkowski fijall at gmail.com
Thu Jul 7 09:14:04 EDT 2016


hi, can I have review on that patch? (it's independent from 1 of 3)

On Mon, Jul 4, 2016 at 11:16 AM, Maciej Fijalkowski <fijall at gmail.com> wrote:
> # HG changeset patch
> # User Maciej Fijalkowski <fijall at gmail.com>
> # Date 1465306558 -7200
> #      Tue Jun 07 15:35:58 2016 +0200
> # Node ID 2752064613b03fb4c8dd636b173f5bfb64f4cfba
> # Parent  5c7e2b441d644a544c8fd26dfa3d0d50cb966307
> policy: add cffi policy for PyPy
>
> This adds cffi policy in the case where we don't want to use C modules,
> but instead we're happy to rely on cffi (bundled with pypy)
>
> diff -r 5c7e2b441d64 -r 2752064613b0 mercurial/__init__.py
> --- a/mercurial/__init__.py     Tue Jun 07 14:44:04 2016 +0200
> +++ b/mercurial/__init__.py     Tue Jun 07 15:35:58 2016 +0200
> @@ -59,7 +59,7 @@
>                  return zl
>
>              try:
> -                if modulepolicy == 'py':
> +                if modulepolicy in policy.policynoc:
>                      raise ImportError()
>
>                  zl = ziploader('mercurial')
> @@ -86,7 +86,7 @@
>          stem = name.split('.')[-1]
>
>          try:
> -            if modulepolicy == 'py':
> +            if modulepolicy in policy.policynoc:
>                  raise ImportError()
>
>              modinfo = imp.find_module(stem, mercurial.__path__)
> diff -r 5c7e2b441d64 -r 2752064613b0 mercurial/policy.py
> --- a/mercurial/policy.py       Tue Jun 07 14:44:04 2016 +0200
> +++ b/mercurial/policy.py       Tue Jun 07 15:35:58 2016 +0200
> @@ -14,10 +14,15 @@
>  #
>  #    c - require C extensions
>  #    allow - allow pure Python implementation when C loading fails
> +#    cffi - required cffi versions (implemented within pure module)
> +#    cffi-allow - allow pure Python implementation if cffi version is missing
>  #    py - only load pure Python modules
>  #
>  # By default, require the C extensions for performance reasons.
>  policy = 'c'
> +policynoc = ('cffi', 'cffi-allow', 'py')
> +policynocffi = ('c', 'py')
> +
>  try:
>      from . import __modulepolicy__
>      policy = __modulepolicy__.modulepolicy
> @@ -29,7 +34,7 @@
>  # The canonical way to do this is to test platform.python_implementation().
>  # But we don't import platform and don't bloat for it here.
>  if '__pypy__' in sys.builtin_module_names:
> -    policy = 'py'
> +    policy = 'cffi'
>
>  # Our C extensions aren't yet compatible with Python 3. So use pure Python
>  # on Python 3 for now.


More information about the Mercurial-devel mailing list