示例#1
0
文件: remote.py 项目: alimills/stacks
  def definition_package(cls):
    """Get package for service.

    Returns:
      Package name for service.
    """
    try:
      return cls.__definition_package
    except AttributeError:
      cls.__definition_package = util.get_package_for_module(cls.__module__)

    return cls.__definition_package
示例#2
0
  def definition_package(cls):
    """Get package for service.

    Returns:
      Package name for service.
    """
    try:
      return cls.__definition_package
    except AttributeError:
      cls.__definition_package = util.get_package_for_module(cls.__module__)

    return cls.__definition_package
示例#3
0
def describe_file(module):
    """Build a file from a specified Python module.

  Args:
    module: Python module to describe.

  Returns:
    Initialized FileDescriptor instance describing the module.
  """
    # May not import remote at top of file because remote depends on this
    # file
    # TODO(rafek): Straighten out this dependency.  Possibly move these functions
    # from descriptor to their own module.
    from protorpc import remote

    descriptor = FileDescriptor()
    descriptor.package = util.get_package_for_module(module)

    if not descriptor.package:
        descriptor.package = None

    message_descriptors = []
    enum_descriptors = []
    service_descriptors = []

    # Need to iterate over all top level attributes of the module looking for
    # message, enum and service definitions.  Each definition must be itself
    # described.
    for name in sorted(dir(module)):
        value = getattr(module, name)

        if isinstance(value, type):
            if issubclass(value, messages.Message):
                message_descriptors.append(describe_message(value))

            elif issubclass(value, messages.Enum):
                enum_descriptors.append(describe_enum(value))

            elif issubclass(value, remote.Service):
                service_descriptors.append(describe_service(value))

    if message_descriptors:
        descriptor.message_types = message_descriptors

    if enum_descriptors:
        descriptor.enum_types = enum_descriptors

    if service_descriptors:
        descriptor.service_types = service_descriptors

    return descriptor
示例#4
0
def describe_file(module):
  """Build a file from a specified Python module.

  Args:
    module: Python module to describe.

  Returns:
    Initialized FileDescriptor instance describing the module.
  """
  # May not import remote at top of file because remote depends on this
  # file
  # TODO(rafek): Straighten out this dependency.  Possibly move these functions
  # from descriptor to their own module.
  from protorpc import remote

  descriptor = FileDescriptor()
  descriptor.package = util.get_package_for_module(module)

  if not descriptor.package:
    descriptor.package = None

  message_descriptors = []
  enum_descriptors = []
  service_descriptors = []

  # Need to iterate over all top level attributes of the module looking for
  # message, enum and service definitions.  Each definition must be itself
  # described.
  for name in sorted(dir(module)):
    value = getattr(module, name)

    if isinstance(value, type):
      if issubclass(value, messages.Message):
        message_descriptors.append(describe_message(value))

      elif issubclass(value, messages.Enum):
        enum_descriptors.append(describe_enum(value))

      elif issubclass(value, remote.Service):
        service_descriptors.append(describe_service(value))

  if message_descriptors:
    descriptor.message_types = message_descriptors

  if enum_descriptors:
    descriptor.enum_types = enum_descriptors

  if service_descriptors:
    descriptor.service_types = service_descriptors

  return descriptor
示例#5
0
 def testPackageMappingsWithPackage(self):
     this_module_name = util.get_package_for_module(__name__)
     full_type_name = 'MessageWithEnum.ThisEnum'
     full_key = '%s.%s' % (this_module_name, full_type_name)
     this_module = sys.modules[__name__]
     new_package = 'new_package'
     try:
         setattr(this_module, 'package', new_package)
         new_key = '%s.%s' % (new_package, full_type_name)
         self.assertEqual(
             new_key, encoding._GetTypeKey(MessageWithEnum.ThisEnum, ''))
         self.assertEqual(
             full_key,
             encoding._GetTypeKey(MessageWithEnum.ThisEnum, new_package))
     finally:
         delattr(this_module, 'package')
示例#6
0
 def testPackageMappingsWithPackage(self):
     this_module_name = util.get_package_for_module(__name__)
     full_type_name = 'MessageWithEnum.ThisEnum'
     full_key = '%s.%s' % (this_module_name, full_type_name)
     this_module = sys.modules[__name__]
     new_package = 'new_package'
     try:
         setattr(this_module, 'package', new_package)
         new_key = '%s.%s' % (new_package, full_type_name)
         self.assertEqual(
             new_key,
             encoding._GetTypeKey(MessageWithEnum.ThisEnum, ''))
         self.assertEqual(
             full_key,
             encoding._GetTypeKey(MessageWithEnum.ThisEnum, new_package))
     finally:
         delattr(this_module, 'package')
 def testIsMainCompiled(self):
   module = self.CreateModule('__main__')
   module.__file__ = '/bing/blam/bloom/blarm/my_file.pyc'
   self.assertPackageEquals('my_file', util.get_package_for_module(module))
 def testHasModuleName(self):
   module = self.CreateModule('service_module')
   self.assertPackageEquals('service_module',
                            util.get_package_for_module(module))
 def testHasPackage(self):
   module = self.CreateModule('service_module')
   module.package = 'my_package'
   self.assertPackageEquals('my_package', util.get_package_for_module(module))
 def testModuleNameNotInSys(self):
   self.assertPackageEquals(None,
                            util.get_package_for_module('service_module'))
示例#11
0
 def testIsMainCompiled(self):
   module = self.CreateModule('__main__')
   module.__file__ = '/bing/blam/bloom/blarm/my_file.pyc'
   self.assertPackageEquals('my_file', util.get_package_for_module(module))
示例#12
0
 def testHasModuleName(self):
   module = self.CreateModule('service_module')
   self.assertPackageEquals('service_module',
                            util.get_package_for_module(module))
示例#13
0
 def testHasPackage(self):
   module = self.CreateModule('service_module')
   module.package = 'my_package'
   self.assertPackageEquals('my_package', util.get_package_for_module(module))
示例#14
0
 def testModuleNameNotInSys(self):
   self.assertPackageEquals(None,
                            util.get_package_for_module('service_module'))
示例#15
0
 def testPackageMappingsNoPackage(self):
     this_module_name = util.get_package_for_module(__name__)
     full_type_name = 'MessageWithEnum.ThisEnum'
     full_key = '%s.%s' % (this_module_name, full_type_name)
     self.assertEqual(full_key,
                      encoding._GetTypeKey(MessageWithEnum.ThisEnum, ''))
 def testNoExtension(self):
   module = self.CreateModule('__main__')
   module.__file__ = '/bing/blam/bloom/blarm/my_file'
   self.assertPackageEquals('my_file', util.get_package_for_module(module))
 def testNoPackageAtAll(self):
   module = self.CreateModule('__main__')
   self.assertPackageEquals('__main__', util.get_package_for_module(module))
示例#18
0
 def testNoExtension(self):
   module = self.CreateModule('__main__')
   module.__file__ = '/bing/blam/bloom/blarm/my_file'
   self.assertPackageEquals('my_file', util.get_package_for_module(module))
示例#19
0
 def testNoPackageAtAll(self):
   module = self.CreateModule('__main__')
   self.assertPackageEquals('__main__', util.get_package_for_module(module))
示例#20
0
 def testPackageMappingsNoPackage(self):
     this_module_name = util.get_package_for_module(__name__)
     full_type_name = 'MessageWithEnum.ThisEnum'
     full_key = '%s.%s' % (this_module_name, full_type_name)
     self.assertEqual(full_key,
                      encoding._GetTypeKey(MessageWithEnum.ThisEnum, ''))