Structures.py :  » XML » 4Suite » 4Suite-XML-1.0.2 » Ft » Lib » DistExt » Python Open Source

Home
Python Open Source
1.3.1.2 Python
2.Ajax
3.Aspect Oriented
4.Blog
5.Build
6.Business Application
7.Chart Report
8.Content Management Systems
9.Cryptographic
10.Database
11.Development
12.Editor
13.Email
14.ERP
15.Game 2D 3D
16.GIS
17.GUI
18.IDE
19.Installer
20.IRC
21.Issue Tracker
22.Language Interface
23.Log
24.Math
25.Media Sound Audio
26.Mobile
27.Network
28.Parser
29.PDF
30.Project Management
31.RSS
32.Search
33.Security
34.Template Engines
35.Test
36.UML
37.USB Serial
38.Web Frameworks
39.Web Server
40.Web Services
41.Web Unit
42.Wiki
43.Windows
44.XML
Python Open Source » XML » 4Suite 
4Suite » 4Suite XML 1.0.2 » Ft » Lib » DistExt » Structures.py
"""
Data structures that are to be used in a pkg file.
"""

from distutils.errors import DistutilsSetupError

__all__ = ['Localization', 'FileList', 'Script', 'Executable',
           'File', 'ModulesDocument', 'ExtensionsDocument', 'Document']

# -- utility functions for verifying values to constructors ------------

def _string_check(arg):
    return isinstance(arg, str)

def _string_sequence_check(arg):
    return (isinstance(arg, (list, tuple)) and
            reduce(lambda a, b: a + isinstance(b, str), arg, 0) == len(arg))

# -- class for the l10n parameter to distribution ----------------------

class Localization:
    """Defines a message catalog for a particular language"""
    def __init__(self, language, source):
        # Verify the values
        assert _string_check(language), "'language' must be a string"
        assert _string_check(source), "'source' must be a string"

        # Store the values
        self.language = language
        self.source = source

    def __repr__(self):
        return 'Localization(%r, %r)' % (self.language, self.source)

# -- class for the l10n parameter to distribution ----------------------

from distutils import filelist
class FileList(filelist.FileList):
    """
    Defines a collection of files.
    """
    def __init__(self, dest, sources, recursive=False, excludes=None):
        filelist.FileList.__init__(self)
        assert _string_check(dest), "'dest' must be a string"
        assert _string_sequence_check(sources), \
               "'sources' must be a sequence of strings"
        self.dest = dest
        self.sources = sources
        self.recursive = recursive
        self.excludes = excludes or ()
        return

# -- classes for the scripts parameter to distribution -----------------

class Script:
    def __init__(self, name, module, function=None, application=None):
        assert _string_check(name), "'name' must be a string"
        assert _string_check(module), "'module' must be a string"
        assert function is None or _string_check(function), \
            "'function' must be a string or None"
        assert application is None or _string_check(application), \
            "'application' must be a string or None"
        if function is not None and application is not None:
            raise DistutilsSetupError(
                "only one of 'function' or 'application' allowed")
        elif function is None and application is None:
            raise DistutilsSetupError(
                "one of 'function' or 'application' is required")
        elif application:
            function = application + '.main'

        self.name = name
        self.module = module
        self.function = function
        self.application = application

    def __repr__(self):
        return 'Script(%r, %r, %r, %r)' % (
            self.name, self.module, self.function, self.application)


class Executable:
    """
    Just a collection of attributes that describes an executable
    and everything needed to build it (hopefully in a portable way,
    but there are hooks that let you be as unportable as you need).

    Instance attributes:
      name : string
        the full name of the extension, including any packages -- ie.
        *not* a filename or pathname, but Python dotted name
      sources : [string]
        list of source filenames, relative to the distribution root
        (where the setup script lives), in Unix form (slash-separated)
        for portability.  Source files may be C, C++, SWIG (.i),
        platform-specific resource files, or whatever else is recognized
        by the "build_ext" command as source for a Python extension.
      include_dirs : [string]
        list of directories to search for C/C++ header files (in Unix
        form for portability)
      define_macros : [(name : string, value : string|None)]
        list of macros to define; each macro is defined using a 2-tuple,
        where 'value' is either the string to define it to or None to
        define it without a particular value (equivalent of "#define
        FOO" in source or -DFOO on Unix C compiler command line)
      undef_macros : [string]
        list of macros to undefine explicitly
      library_dirs : [string]
        list of directories to search for C/C++ libraries at link time
      libraries : [string]
        list of library names (not filenames or paths) to link against
      runtime_library_dirs : [string]
        list of directories to search for C/C++ libraries at run time
        (for shared extensions, this is when the extension is loaded)
      extra_objects : [string]
        list of extra files to link with (eg. object files not implied
        by 'sources', static library that must be explicitly specified,
        binary resource files, etc.)
      extra_compile_args : [string]
        any extra platform- and compiler-specific information to use
        when compiling the source files in 'sources'.  For platforms and
        compilers where "command line" makes sense, this is typically a
        list of command-line arguments, but for other platforms it could
        be anything.
      extra_link_args : [string]
        any extra platform- and compiler-specific information to use
        when linking object files together to create the extension (or
        to create a new static Python interpreter).  Similar
        interpretation as for 'extra_compile_args'.
    """

    def __init__ (self, name, sources,
                  include_dirs=None,
                  define_macros=None,
                  undef_macros=None,
                  library_dirs=None,
                  libraries=None,
                  runtime_library_dirs=None,
                  extra_objects=None,
                  extra_compile_args=None,
                  extra_link_args=None,
                 ):

        assert _string_check(name), "'name' must be a string"
        assert _string_sequence_check(sources), \
               "'sources' must be a sequence of strings"

        self.name = name
        self.sources = sources
        self.include_dirs = include_dirs or []
        self.define_macros = define_macros or []
        self.undef_macros = undef_macros or []
        self.library_dirs = library_dirs or []
        self.libraries = libraries or []
        self.runtime_library_dirs = runtime_library_dirs or []
        self.extra_objects = extra_objects or []
        self.extra_compile_args = extra_compile_args or []
        self.extra_link_args = extra_link_args or []
        return

    def __repr__(self):
        return 'Executable(%r, %r)' % (self.name, self.sources)

# -- classes for the doc_files parameter to the distribution -----------


class File:
    """
    A collection of attributes that describes a file on the filesystem.
    Instances of File are used as members of the doc_files argument to
    setup().
    """
    def __init__(self, source, outdir='', flags=None):
        assert _string_check(source), "'source' must be a string"
        assert _string_check(outdir), "'outdir' must be a string"

        self.source = source
        self.outdir = outdir
        self.flags = flags or []
        return

    def get_source_files(self):
        return [self.source]

    def __repr__(self):
        return '%s(%r, %r, %r)' % (self.__class__.__name__,
                                   self.source, self.outdir, self.flags)


class GeneratedDocument:
    def get_source_files(self):
        # The modules are assumed to be installed elsewhere
        return []


class ModulesDocument(GeneratedDocument):
    def __init__(self, title, packages):
        assert _string_check(title), "'title' must be a string"
        assert _string_sequence_check(packages), \
               "'packages' must be a sequence of strings"

        self.title = title
        self.packages = packages

        # Filled in later by build_docs
        self.modules = []
        return

    def __repr__(self):
        return '%s(%r, %r)' % (self.__class__.__name__,
                               self.title, self.packages)


class ExtensionsDocument(GeneratedDocument):
    """
    A collection of attributes that describes a set of Python modules that
    implement 4Suite's XPath/XSLT extension API. Instances of File are
    used as members of the doc_files argument to setup().
    """
    def __init__(self, name, modules, title):
        assert _string_check(name), "'name' must be a string"
        assert _string_sequence_check(modules), \
               "'modules' must be a sequence of strings"
        assert _string_check(title), "'title' must be a string"

        self.name = name
        self.modules = modules
        self.title = title
        return

    def __repr__(self):
        return '%s(%r, %r, %r)' % (self.__class__.__name__,
                                   self.name, self.modules, self.title)


class Document:
    """
    An XSLT rendered document. It creates both a XML, HTML and Text version
    of the document (if desired)
    """
    def __init__(self, source, stylesheet, params=None, title=None,
                 category=None, flags=None, mtime=None, outfile=None):
        assert _string_check(source), "'source' must be a string"
        assert _string_check(stylesheet), "'stylesheet' must be a string"

        self.source = source
        self.stylesheet = stylesheet
        self.params = params or {}
        self.title = title or ''
        self.category = category or 'general'
        self.flags = flags or []
        self.mtime = mtime
        self.outfile = outfile

    def __repr__(self):
        return 'Document(%r, %r, %r, %r, %r, %r, %r, %r)' % (
            self.source, self.stylesheet, self.params, self.title,
            self.category, self.flags, self.mtime, self.outfile)
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.