Modules and Classes
Version: 1.2 Last Updated: 07/07/10 12:55:17
View: Paged  |  One Page
Module myghty.request

The request package and its primary class, Request, provide the "m" object in Myghty templates. The Request is instantiated by the Interpreter and handles component execution state as well as buffered state. It provides the interface to all actions taken by components, such as writing output, calling other components, calling subrequests, and controllling request state. Also provides the programmatic interface to key objects such as caches and sessions.

Module Functions
def instance()

returns the Request instance corresponding to the current thread

def threadlocal(value=None)

returns a thread local container, with initial value that of the given variable

back to section top
Class Request(object)

request object, calls components and directs output. also is the primary programmatic interface presented to a template's environment.

def __init__(self, interpreter, component=None, request_impl=None, max_recursion=32, auto_flush=False, use_dhandlers=True, dont_auto_flush_filters=False, resolver_context='request', parent_request=None, request_depth=0, request_path=None, raise_error=False, disable_wrapping=False, output_encoding='ascii', encoding_errors='strict', disable_unicode=False, **params)

init is called internally by the Interpreter.

def abort(self, status_code=None, reason=None)

raises an abort exception.

def apply_escapes(self, text, escapes)

applies the given escape flags to the given text. escapes is a list of escape flags, such as 'h', 'u', and 'x'.

attributes = property()

A dictionary where arbitrary attributes can be stored and retrieved. Inherits data from its parent request, if any.

def base_comp(self)

deprecated. use the base_component property.

base_component = property()

Returns the "base component" for the current stack frame, which is either the top level component or the owning component of a method component.

def cache(self, **params)

a synonym for get_cache().

def cache_self(self, key='_self', component=None, retval=None, **params)

caches this component's output. this is called in a "reentrant" fashion; if it returns False, component execution should continue. If it returns True, component execution should cease.

def call_content(self, **kwargs)

calls the "captured content" function within a component call with content

def call_next(self, **params)

used within an inheritance chain to call the next component in the chain. If **params are given, each parameter will override the arguments sent to this component when calling the next component.

def call_self(self, output_buffer, return_buffer)

calls this component and places its output and return value in the given buffers. This component is called in a "reentrant" fashion, where a return value of False means to continue component execution and a return value of True means to halt execution and return.

def call_stack(self, index=None)

returns the current execution stack, which consists of StackFrame objects. if an integer index is given, returns the StackFrame object at that position in the current call stack.

caller = property()

returns the calling component for the currently executing component.

def caller_args(self, index=None)

returns the list of component arguments in the current call stack. if an integer index is given, returns the component arguments at that position in the current call stack.

def callers(self, index=None)

returns the list of components in the current call stack. if an integer index is given, returns the component at that position in the current call stack.

def clear_buffer(self)

clears all content from the current output buffer.

def clone(self, **params)

creates a copy of this Request. Normally used to create subrequests.

def closure_with_content(self, func, content=None, args=None)

given a function, will execute it with the given arguments, after pushing the given content function onto the call stack via a new StackFrame, enabling the function to call it via the content() method.

def comp(self, component, **params)

component calling method which takes a simple parameter list. this method is meant to be the default method to call when calling components programmatically. compare to scomp().

component_args = property()

returns the argument dictionary from the current stack frame, corresponding to the arguments sent to the currently executing component.

def component_exists(self, path, **params)

returns True if the given component path exists.

def content(self, **kwargs)

when inside a component call with content, this method calls the "captured content" function and buffers the content, returning the string value.

content_args = property()

returns the component-call-with-content argument dictionary from the current stack frame, corresponding to the arguments sent in an m.content() call.

def create_subrequest(self, component, resolver_context='subrequest', **params)

base subrequest-creation method. A subrequest is a request that is a child to this one, enabling execution of a component and its full inheritance chain within this request.

def current_comp(self)

deprecated. use the current_component property.

current_component = property()

returns the component currently executing from the current stack frame.

def decline(self, returnval=None)

used by dhandlers to decline handling the current request. Control will be passed to the next enclosing dhandler, or if none is found a ComponentNotFound (and possibly 404 error) is raised.

depth = property()

Returns the current depth of the execution stack.

def dhandler_arg(self)

deprecated. use the request_path or dhandler_argument property.

dhandler_argument = property()

returns the current dhandler_argument, which corresopnds to the remaining path tokens in the request URI when executing a dhandler.

encoding_errors = property()

The encoding error handling strategy for the request

This is the error handling strategy used when encoding text writtent to the output buffer of the top-level request.

This is a read-only attribute, though you can change its value using the `set_output_encoding`_ method.

def execute(self)

executes this request after constructed. This is the first method called, and can only be called once per request.

def execute_component(self, component, args={}, base_component=None, content=None, store=None, is_call_self=False)

component calling method which takes parameter list as a dictionary, and allows special execution options. This method is used by component call tags and internally within the Request object.

def fetch_all(self)

pops off the entire remaining list of components in the inheritance chain.

def fetch_component(self, path, resolver_context='component', **params)

Given a component path (absolute or relative), returns a component. Handles SELF, PARENT, REQUEST, comp:method, relative->absolute conversion, MODULE, and local subcomponents.

def fetch_lead_component(self, path)

fetches the top level (initial) component to be executed by this request. Differs from fetch_component in that the resolver context is "request" or "subrequest" and the dhandler flag is enabled when resolving. Also does not support method calls.

def fetch_module_component(self, moduleorpath, classname=None, raise_error=True)

fetches a module-based component. Usually called by fetch_component when the 'MODULE' keyword is given as a prefix.

def fetch_next(self)

in an inheritance chain (i.e. of autohandlers), returns the next component in the chain

def flush_buffer(self)

flushes the current output buffer to its destination.

def get_attribute(self, key)

deprecated. use the attributes property.

def get_attributes(self)

deprecated. use the attributes property.

def get_base_component(self)

deprecated. use the base_component property.

def get_cache(self, component=None, **params)

returns the given component's cache. **params is a dictionary of options used as the default options for individually cached elements.

def get_component_args(self)

deprecated. use the component_args property.

def get_current_component(self)

deprecated. use the current_component property.

def get_depth(self)

deprecated. use the depth property.

def get_dhandler_argument(self)

deprecated. use the request_path or dhandler_argument property.

def get_encoding_errors(self)

def get_interpreter(self)

deprecated. use the interpreter property.

def get_log(self)

deprecated. use the logger property.

def get_output_encoding(self)

def get_request_args(self)

deprecated. use the request_args property.

def get_request_component(self)

deprecated. use the request_component property.

def get_request_path(self)

deprecated. use the request_path property.

def get_session(self, *args, **params)

returns the Session object used by this request. If the session has not been created it will be created when this method is called. Once the session is created, this method will return the same session object repeatedly. **params is a dictionary of options used when the session is first constructed; if it already exists, the parameters are ignored.

def get_start_time(self)

deprecated. use the starttime property.

def has_content(self)

returns whether or not the current component call was called with captured content specified

def has_current_component(self)

returns if this request has a currently executing component. This could return false if the request's top-level-component is in the loading stage.

def is_subrequest(self)

returns True if this request is a subrequest.

def load_component(self, path, raise_error=True, resolver_context=None, **params)

a mirror of interpreter.load() which caches its results in a request-local dictionary, thereby bypassing all the filesystem checks that interp does for a repeated file-based request.

def log(self, message)

writes a message to the request log. The log is RequestImpl-specific and can be standard error, a webserver error log, or a user-defined file object.

logger = property()

returns the logger for this Request, which is a file-like object.

def make_subrequest(self, component, **params)

creates a subrequest with the given component and request parameters. see create_subrequest().

notes = property()

A synonym for m.attributes

def out(self, string)

a synonym for write

output_encoding = property()

The ouput encoding for the request

This is the encoding of the output written to the output buffer of the top-level request. (I.e. the encoding delivered to the user.)

This is a read-only attribute, though you can change its value using the `set_output_encoding`_ method.

def request_comp(self)

deprecated. use the request_component property.

root_request_args = property()

The request argument dictionary sent to the ultimate root request of this Request.

root_request_path = property()

The URI sent to the ultimate root request of this Request.

def scomp(self, component, **params)

component calling method which returns output as a string

def send_redirect(self, path, hard=True)

sends a redirect to the given path. If hard is True, sends an HTTP 302 redirect via the underlying RequestImpl being used. If False, clears out the current output buffer and executes a subrequest with the given path. The path can also contain url encoded query string arguments with a question mark which will be converted to key/value arguments for the next request, even if hard=False.

def set_attribute(self, key, value)

deprecated. use the attributes property.

def set_output_encoding(self, encoding, errors='strict')

Change the output_encoding. Note that in most cases you do not want to change it after you have written any output (as then your output will be in two different encodings --- probably not what you wanted unless, perhaps, you are generating Mime multipart output.)

def subexec(self, component, **params)

creates a subrequest with the given component and request parameters and executes it. see create_subrequest().

def write(self, string)

writes textual content to the current output buffer.

back to section top
Module myghty.component

the component package defines the Component class and several subclasses. FileComponent serves as the base class for template style-components, and ModuleComponent the base for module-based components.

Class Component(object)

Base class for all components. the primary method is the run() method which executes the Component in the context of a particular request. A Component instance is usually cached in memory based on its component ID and can execute many requests simultaneously.

def __init__(self, interpreter, component_source, **params)

initializes a new Component. this method is called by the Interpreter.

def attribute_exists(self, key)

attributes = property()

def call_method(self, method_name, **params)

calls a method SubComponent of the given name on this component. This amounts to locating it via locate_inherited_method, retrieving the current request via request.instance(), and then calling execute_component on that request.

See also m.comp("component:methodname")

def component_init(self)

initializes the component after construction. Calls the do_component_init() method before setting up the component's arguments.

dir_name = property()

relative directory name of the component

def do_component_init(self)

overridden by subclasses to perform per-instance initialization steps.

def do_run_component(self, m, ARGS, **params)

overridden by subclasses to provide the main execution body of the component.

def do_thread_init(self)

overridden by subclasses to provide a per-thread initialization routine.

file = property()

the actual filename of the component, if one exists

def get_attribute(self, key, inherit=True)

def get_attributes(self)

def get_dir_name(self)

def get_file(self)

def get_flag(self, key, inherit=False)

returns a flag defines in this component's <%flags> section.

def get_id(self)

def get_name(self)

def get_owner(self)

def get_parent_component(self)

def get_path(self)

def get_source_id(self)

def get_sub_component(self, name)

returns a SubComponent of the given name, represented within the source of this Component.

def has_filter(self)

returns True if this component defines a <%filter> section.

id = property()

unique identifier for this component

def is_file_component(self)

def is_method_component(self)

def is_module_component(self)

def is_sub_component(self)

def locate_inherited_method(self, method_name)

returns a method SubComponent of the given name, represented either within the source of this Component or within the source of an inherited Component, i.e. the inheritance hierarchy will be searched for the approrpriate method call.

name = property()

name of this component

path = property()

relative full path of the component

def run(self, request, **params)

runs this component in the context of the given request. **params are the arguments sent to the component, which become ARGS in the context of the component's runtime environment.

def scall_method(self, method_name, **params)

same as call_method, but returns the component output as a string See also m.scomp("component:methodname")

def set_attribute(self, key, value)

source_id = property()

unique identifier for the ComponentSource of this component

def use_auto_flush(self)

returns True if this component defines the "autoflush" flag as True, or if an inherited component defines this flag.

back to section top
Class FileComponent(Component)

a component that corresponds to a Myghty template file

def __init__(self, interpreter, component_source, **params)

def get_sub_component(self, name)

def is_file_component(self)

def locate_inherited_method(self, method_name)

parent_component = property()

returns the parent component of this component, taking into account the component's inherit flag as well as the interpreter's autohandler properties

def uses_request_local(self)

def uses_thread_local(self)

back to section top
Class HTTPModuleComponent(ModuleComponent)

A ModuleComponent that contains methods specific to a generic HTTP request.

def do_get(self, m, r, **params)

def do_post(self, m, r, **params)

def do_run_component(self, m, r, **params)

back to section top
Class ModuleComponent(Component)

A component that is a regular Python class inside of a plain Python module.

def __init__(self, interp, component_source, owner=None, do_init=True)

def component_init(self)

def do_component_init(self)

def do_run_component(self, m, ARGS, **params)

def is_module_component(self)

def locate_inherited_method(self, method_name)

name = property()

owner = property()

back to section top
Class SubComponent(Component)

a component that corresponds to a <%def> or <%method> tag inside a file-based component.

def __init__(self, name, owner, is_method, **params)

def call_method(self, *args, **params)

def get_sub_component(self, name)

id = property()

def locate_inherited_method(self, method_name)

name = property()

owner = property()

parent_component = property()

def scall_method(self, *args, **params)

back to section top
Module myghty.interp

The interp package and its primary class, Interpreter, represents the runtime environment for Myghty components. It serves as a "home base" for configuration information and request construction, and also assists the Request object in locating components. The Interpreter maintains a pool of component objects and handles, at a high level, their compilation and filesystem representation.

Class Interpreter

Represents an environment in which to create requests, compile and execute components.

def __init__(self, attributes=None, data_dir=None, compiler=None, resolver=None, request=None, code_cache_size=16777216, use_auto_handlers=True, use_object_files=True, debug_file=BufferDecorator, enclosing ', mode 'w' at 0x100283270>., debug_threads=False, debug_elements=[], escapes={}, global_args=None, auto_handler_name='autohandler', **params)

constructs a new Interpreter object. All Myghty configuration parameters are sent to this method as keyword parameters. Those parameters that are used directly by this Interpreter are consumed. Remaining arguments are sent off to other constructed objects, which include a Compiler, a Resolver, and a Request prototype object.

def component_exists(self, path, **params)

returns True if the given path can be resolved to a ComponentSource instance, i.e. if a component can be loaded for this path.

def debug(self, message, type=None)

writes a debug message to the debug file. the optional type string refers to a "debug_element" type, i.e. 'resolution', 'cache', etc. which will only write a message if that debug_element was enabled with this Interpreter.

def execute(self, component, **params)

executes the given component with the given request construction arguments. The component can be a string path which will be resolved, or a Component object.

def get_attribute(self, key)

gets an attribute from this Interpreter. deprecated, use the "attributes" member directly instead.

def get_attributes(self)

returns the attributes dictionary for this Interpreter. deprecated, use the "attributes" member directly instead.

def get_compiled_component(self, csource, always_recompile=False, recompile_newer=True, use_file=True)

used by load_component to deliver a new Component object from a ComponentSource.

def get_component_object_files(self, component_source)

returns a tuple containing the full paths to the .py, .pyc, and .pyo files corresponding to the given FileComponentSource object.

def load(self, path, **params)

resolves and loads the component specified by the given path. **params is a set of keyword arguments passed to the resolution system.

def load_component(self, csource)

loads the component corresponding to the given ComponentSource object. This can be any subclass of ComponentSource. If the component was already loaded and exists within this Interpreter's code cache, returns the existing Component. If the Component has been modified at its source, it will re-load or re-compile the Component as needed. If this Component has not been loaded, it will import or compile the Component as needed. This operation is also synchronized against other threads. On systems that support file-locking it is synchronized against other processes as well.

def load_module_component(self, raise_error=True, **params)

resolves and loads a module component specified within the given keyword parameters. The keyword parameters are passed directly to myghty.csource.ModuleComponentSource. The easiest way to use this method is to pass the keyword parameter "arg", which references a string in the form "<modulename>:<callable_or_class>", where <modulename> is a regular Python module to be loaded via __import__, and <callable_or_class> is the dotted path to either a callable object inside the module or a class inside the module which subclasses myghty.component.ModuleComponent.

def make_component(self, source, id=None)

creates an in-memory template Component given its source as a string...this can be any Myghty template that would ordinarily be compiled from the filesystem. the optional "id" string parameter is used to identify this component within this Interpreter's code cache. If not given, one will be generated.

def make_request(self, component, **params)

creates a new request with the given component and request construction arguments. The request is copied from an existing request instance, overriding its parameters with those given. The returned request is executed by calling its execute() method. The component can be a string path which will be resolved when the request is executed, or a Component object.

def raise_error(self, error)

raises an Interpreter error with the given message string.

def resolve_component(self, path, **params)

resolves the component specified by the given path. a myghty.resolver.Resolution object is returned containing a myghty.csource.ComponentSource reference. Raises ComponentNotFound by default if the path cannot be resolved. **params is a set of keyword parameters sent directly to the resolve() method on myghty.resolver.Resolver.

def set_attribute(self, key, value)

sets an attribute on this Interpreter. deprecated, use the "attributes" member directly instead.

back to section top
Module myghty.resolver

Class AdjustedResolveFile(ResolveFile)

a ResolveFile rule that adds a pre-path-concatenation adjustment step, so the uri can be translated before determining the file path. unlike path_translate, this translated uri is only used to determine a filesystem path, and is not propigated anywhere else.

def __init__(self, adjust, *component_roots)

back to section top
Class Conditional(ResolverRule)

conditionally executes a rule, only executes if the uri matches a certain regexp, or a passed-in context string matches one of the contexts set up for this rule.

def __init__(self, rule, regexp=None, context=None)

def do(self, uri, remaining, resolution_detail, resolver_context=None, **params)

def do_init_resolver(self, resolver, remaining_rules, **params)

def test_condition(self, uri, resolver_context, **params)

back to section top
Class ConditionalGroup(Conditional)

combines a Conditional and a Group to make a conditionally-executing Group.

def __init__(self, regexp=None, context=None, rules=[])

back to section top
Class Group(ResolverRule)

creates a subgroup of resolver strategies.

def __init__(self, rules=[])

def do(self, uri, remaining, resolution_detail, **params)

def do_init_resolver(self, resolver, remaining_rules, **params)

back to section top
Class NotFound(ResolverRule)

returns not found. place at the bottom of Group and Match chains to have them terminate.

def __init__(self, silent=False)

silent = True indicates that a resulting TopLevelNotFound exception should be 'silent', i.e. not logged. this is used when a 404 error is being propigated to another application layer.

def do(self, uri, remaining, resolution_detail, **params)

back to section top
Class PathTranslate(ResolverRule)

performs path translation rules on the given uri and sends control off to the next rule.

def __init__(self, *translations)

def do(self, uri, remaining, resolution_detail, **params)

def do_init_resolver(self, resolver, remaining_rules, path_translate=None, **params)

def modifies_uri(self)

back to section top
Class ResolveDhandler(ResolverRule)

collects all the resolver rules below it and runs them for the requested uri, and if not found re-runs them again for the "dhandler" filename, pruning off path tokens until the root is reached.

def __init__(self, dhandler_name='dhandler')

def do(self, uri, remaining, resolution_detail, enable_dhandler=False, declined_components=None, **params)

back to section top
Class ResolveFile(ResolverRule)

performs file based resolution. looks up files within one or more component roots.

def __init__(self, *component_roots, **params)

def do(self, uri, remaining, resolution_detail, **params)

def do_init_resolver(self, resolver, remaining_rules, component_root=None, **params)

back to section top
Class ResolveModule(ResolverRule)

resolves a Module Component based on information in a given list of dictionaries, containing regular expressions for keys which are matched against the URI. The value for each key references either a class, a callable object or function, or a string in the form "<module>:<path.to.callable>".

def __init__(self, *module_components)

def do(self, uri, remaining, resolution_detail, context=None, **params)

def do_init_resolver(self, resolver, remaining_rules, module_components=None, **params)

back to section top
Class ResolvePathModule(ResolverRule)

resolves a callable object or class instance inside a module, based on a traversal of path tokens corresponding to the module's file location, and then of the object paths defined within the module.

def __init__(self, *module_roots, **params)

def do(self, uri, remaining, resolution_detail, dhandler_path=None, **params)

def do_init_resolver(self, resolver, remaining_rules, module_root=None, **params)

back to section top
Class ResolveUpwards(ResolverRule)

takes the rules below it and applies "search upwards" logic to them, where it iteratively breaks off path tokens behind the filename and searches upwards until the root path is reached. if require_context is True, then this rule only takes effect if "search_upwards" is sent within the resolution options. this indicates that the upwards resolve is context-sensitive, and therefore should not be cached based on a URI alone. however, by default it allows its results to be cached since in practice its used strictly for autohandlers, which are always searched upwards.

def __init__(self, require_context=True)

def do(self, uri, remaining, resolution_detail, search_upwards=False, **params)

back to section top
Class Resolver(object)

resolves incoming URIs against a list of rules, and returns Resolution objects and/or raises ComponentNotFound exceptions.

def __init__(self, resolver_strategy=None, request_resolver=None, use_static_source=False, source_cache_size=1000, track_resolution_detail=True, debug_file=None, **params)

def resolve(self, uri, raise_error=True, **params)

back to section top
Class ResolverRule(object)

base class for a single rule that attempts to resolve a uri into a Resolution object. acts inside a chain of ResolverRules where when a uri cannot be resolved, the next rule in the chain is called in a continuation pattern.

def do(self, uri, remaining, resolution_detail, **params)

performs resolution or translation on the given path. "remaining" is an Iterator referencing an element in the full list of ResolverRule objects. the method either returns a Resolution object, or passes control to the next ResolverRule in the iterator.

def do_init_resolver(self, resolver, remaining_rules, **params)

called when the resolver first receives the new rule. objects usually will want to do most of their initialization at this stage.

def init_resolver(self, resolver, remaining_rules, **params)

def modifies_uri(self)

returns True if the rule makes a modification to the URI. if so, the URICache rule wont allow this rule to be cached as a single rule, since it becomes ineffective. As part of a cached chain is still OK.

back to section top
Class URICache(ResolverRule)

caches the result of either a given nested rule, or the remaining rules in its chain, based on the incoming URI.

def __init__(self, source_cache_size=None, rule=None)

rule is a single ResolverRule (or Group) whos results will be cached on a per-uri basis. if rule is None, then the result of remaining rules in the current chain will be cached based on the incoming URI. This rule cannot be a PathTranslation rule or other uri-modifying rule, since the translated uri is not stored. source_cache_size is the size of the LRUCache to create. if source_cache_size is None, it will use the Resolver's source cache, sharing it with any other URICaches that also use the Resolver's source cache. When using the Resolver's source cache, if the Resolver has use_static_source disabled, then caching is disabled in this URICache.

def do(self, uri, remaining, resolution_detail, **params)

def do_init_resolver(self, resolver, remaining_rules, **params)

back to section top
Module myghty.csource

Class ComponentSource(object)

a time-sensitive descriptor object for a Myghty component.

def __init__(self, id, last_modified=None)

unique identifier of the component.

def can_compile(self)

def get_component_source(self)

def get_component_source_file(self)

def get_object_code(self, compiler, file)

compiles the source of this component using the given compiler, sending output to the given file

back to section top
Class FileComponentSource(ComponentSource)

def __init__(self, id, path_id, path, file_path, last_modified=None)

def get_component_source(self)

def get_component_source_file(self)

back to section top
Class MemoryComponentSource(ComponentSource)

def __init__(self, source, id=None, last_modified=None)

def get_component_source(self)

def get_component_source_file(self)

back to section top
Class ModuleComponentSource(ComponentSource)

represents a loadable module containing either a ModuleComponent class, a function, a class instance which is callable or a method on a class instance.

def __init__(self, arg=None, module=None, objpath=None, name=None, callable_=None, class_=None, last_modified=None)

def can_compile(self)

def copy(self, use_static_source=False)

def inspect_target(self, arg, objpath)

def reload(self, module)

back to section top
Class ModuleComponentSourceSingleton(type)

a metaclass for ModuleComponentSource which allows its constructor to cache the inspection results of the "arg" constructor parameter.

back to section top
Module myghty.session

Class MyghtySessionArgs

def __init__(self, data_dir=None, **params)

def clone(self, **params)

def get_session(self, request, **params)

back to section top
Class Session

session object that uses container package for storage

def __init__(self, request, id=None, invalidate_corrupt=False, use_cookies=True, type=None, data_dir=None, key='myghty_session_id', timeout=None, cookie_expires=True, secret=None, log_file=None, namespace_class=None, **params)

created = property()

def debug(self, message)

def delete(self)

deletes the persistent storage for this session, but remains valid.

def has_key(self, key)

def invalidate(self)

invalidates this session, creates a new session id, returns to the is_new state

def iteritems(self)

def keys(self)

def load(self)

loads the data from this session from persistent storage

def lock(self)

locks this session against other processes/threads. this is automatic when load/save is called. ***use with caution*** and always with a corresponding 'unlock' inside a "finally:" block, as a stray lock typically cannot be unlocked without shutting down the whole application.

def save(self)

saves the data for this session to persistent storage

def unlock(self)

unlocks this session against other processes/threads. this is automatic when load/save is called.

***use with caution*** and always within a "finally:" block, as a stray lock typically cannot be unlocked without shutting down the whole application.

back to section top
Class SignedCookie(BaseCookie)

extends python cookie to give digital signature support

def __init__(self, secret, input=None)

def value_decode(self, val)

def value_encode(self, val)

back to section top