"""Miscellaneous utilities that don't fit anywhere else."""

from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

import importlib
import sys
import types

import six


class BasicRef(object):
  """This shim emulates the nonlocal keyword in Py2-compatible source."""

  def __init__(self, init_value):
    self.value = init_value


def deprecated_py2_support(module_name):
  """Swaps calling module with a Py2-specific implementation. Noop in Py3."""
  if six.PY2:
    legacy_module = importlib.import_module(module_name + '_deprecated_py2')
    current_module = sys.modules[module_name]
    for name, target_val in legacy_module.__dict__.items():
      if isinstance(target_val, types.FunctionType):
        replacement = types.FunctionType(
            target_val.__code__, current_module.__dict__, target_val.__name__,
            target_val.__defaults__, target_val.__closure__)
        current_module.__dict__[name] = replacement

"""Miscellaneous utilities that don't fit anywhere else."""

from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

import importlib
import sys

import six


class BasicRef(object):
  """This shim emulates the nonlocal keyword in Py2-compatible source."""

  def __init__(self, init_value):
    self.value = init_value


def deprecated_py2_support(module_name):
  """Swaps calling module with a Py2-specific implementation. Noop in Py3."""
  if six.PY2:
    legacy_module = importlib.import_module(module_name + '_deprecated_py2')
    sys.modules[module_name] = legacy_module

Swap out modules in py2 mode in a cleaner fashion.
Swap out modules in py2 mode in a cleaner fashion.

PiperOrigin-RevId: 288526813
Change-Id: I86efd4d804c0c873856307cf4a969270eb7bbae8

  """Miscellaneous utilities that don't fit anywhere else."""
  
  from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  
  import importlib
  import sys
- import types
  
  import six
  
  
  class BasicRef(object):
    """This shim emulates the nonlocal keyword in Py2-compatible source."""
  
    def __init__(self, init_value):
      self.value = init_value
  
  
  def deprecated_py2_support(module_name):
    """Swaps calling module with a Py2-specific implementation. Noop in Py3."""
    if six.PY2:
      legacy_module = importlib.import_module(module_name + '_deprecated_py2')
+     sys.modules[module_name] = legacy_module
-     current_module = sys.modules[module_name]
-     for name, target_val in legacy_module.__dict__.items():
-       if isinstance(target_val, types.FunctionType):
-         replacement = types.FunctionType(
-             target_val.__code__, current_module.__dict__, target_val.__name__,
-             target_val.__defaults__, target_val.__closure__)
-         current_module.__dict__[name] = replacement
  
Swap out modules in py2 mode in a cleaner fashion.
## Code Before:
"""Miscellaneous utilities that don't fit anywhere else."""

from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

import importlib
import sys
import types

import six


class BasicRef(object):
  """This shim emulates the nonlocal keyword in Py2-compatible source."""

  def __init__(self, init_value):
    self.value = init_value


def deprecated_py2_support(module_name):
  """Swaps calling module with a Py2-specific implementation. Noop in Py3."""
  if six.PY2:
    legacy_module = importlib.import_module(module_name + '_deprecated_py2')
    current_module = sys.modules[module_name]
    for name, target_val in legacy_module.__dict__.items():
      if isinstance(target_val, types.FunctionType):
        replacement = types.FunctionType(
            target_val.__code__, current_module.__dict__, target_val.__name__,
            target_val.__defaults__, target_val.__closure__)
        current_module.__dict__[name] = replacement

## Instruction:
Swap out modules in py2 mode in a cleaner fashion.
## Code After:
"""Miscellaneous utilities that don't fit anywhere else."""

from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

import importlib
import sys

import six


class BasicRef(object):
  """This shim emulates the nonlocal keyword in Py2-compatible source."""

  def __init__(self, init_value):
    self.value = init_value


def deprecated_py2_support(module_name):
  """Swaps calling module with a Py2-specific implementation. Noop in Py3."""
  if six.PY2:
    legacy_module = importlib.import_module(module_name + '_deprecated_py2')
    sys.modules[module_name] = legacy_module
