__init__.py revision 57
49N/A# The contents of this file are subject to the terms of the 49N/A# Common Development and Distribution License (the "License"). 49N/A# You may not use this file except in compliance with the License. 49N/A# See the License for the specific language governing permissions 49N/A# and limitations under the License. 49N/A# When distributing Covered Code, include this CDDL HEADER in each 49N/A# If applicable, add the following below this CDDL HEADER, with the 49N/A# fields enclosed by brackets "[]" replaced with your own identifying 49N/A# information: Portions Copyright [yyyy] [name of copyright owner] 49N/A# Copyright 2007 Sun Microsystems, Inc. All rights reserved. 49N/A# Use is subject to license terms. 49N/Apackage containing packaging action (file type) modules 49N/AThis package contains modules describing packaging actions, or file types. The 49N/Aactions are dynamically discovered, so that new modules can be placed in this 49N/Apackage directory and they'll just be picked up. The current package contents 49N/Acan be seen in the section "PACKAGE CONTENTS", below. 51N/AThis package has one data member: "types". This is a dictionary which maps the 51N/Aaction names to the classes that represent them. 51N/AThis package also has one function: "fromstr", which creates an action instance 51N/Abased on a str() representation of an action. 49N/A# All modules in this package (all python files except __init__.py with their 49N/A# extensions stripped off). 49N/A# A dictionary of all the types in this package, mapping to the classes that 49N/A # Pull the class objects out of nvlist, keeping only those that are 49N/A # actually defined in this package. 49N/A# Clean up after ourselves 51N/A """Create an action instance based on a str() representation of an action. 51N/A # That is, if the first attribute is a hash 57N/A # Split the string on spaces, then reconstruct and dequote quoted 57N/A # Simple state machine to reconnect the elements that shouldn't have 57N/A # been split. Put the results into a new list since we can't modify the 57N/A # list we're iterating over. 57N/A # Remove attribute duplication 57N/A # Put values belonging to the same attribute into individual lists 57N/A # Create a dict from the two lists 57N/A # Convert any single-valued attributes to simple strings. 57N/A # [ (k, v) for k, v in attrs.iteritems() if len(v) > 1 ] + 57N/A # [ (k, v[0]) for k, v in attrs.iteritems() if len(v) == 1 ]