// Copyright (c) Corporation for National Research Initiatives
package org.python.core;
public class PyModule extends PyObject {
//~ BEGIN GENERATED REGION -- DO NOT EDIT SEE gexpose.py
/* type info */
public static final String exposed_name = "module";
public static void typeSetup(PyObject dict, PyType.Newstyle marker) {
dict.__setitem__("__dict__", new PyGetSetDescr("__dict__", PyModule.class, "getDict", "setDict", "delDict"));
dict.__setitem__("__doc__", new PyGetSetDescr("__doc__", PyModule.class, "getDoc", null, null));
class exposed___repr__ extends PyBuiltinMethodNarrow {
exposed___repr__(PyObject self, PyBuiltinFunction.Info info) {
super(self, info);
}
public PyBuiltinFunction bind(PyObject self) {
return new exposed___repr__(self, info);
}
public PyObject __call__() {
return new PyString(((PyModule) self).module_toString());
}
}
dict.__setitem__("__repr__", new PyMethodDescr("__repr__", PyModule.class, 0, 0, new exposed___repr__(null,
null)));
class exposed___setattr__ extends PyBuiltinMethodNarrow {
exposed___setattr__(PyObject self, PyBuiltinFunction.Info info) {
super(self, info);
}
public PyBuiltinFunction bind(PyObject self) {
return new exposed___setattr__(self, info);
}
public PyObject __call__(PyObject arg0, PyObject arg1) {
try {
((PyModule) self).module___setattr__(arg0.asName(0), arg1);
return Py.None;
} catch (PyObject.ConversionException e) {
String msg;
switch (e.index) {
case 0:
msg = "attribute name must be a string";
break;
default:
msg = "xxx";
}
throw Py.TypeError(msg);
}
}
}
dict.__setitem__("__setattr__", new PyMethodDescr("__setattr__", PyModule.class, 2, 2, new exposed___setattr__(
null, null)));
class exposed___delattr__ extends PyBuiltinMethodNarrow {
exposed___delattr__(PyObject self, PyBuiltinFunction.Info info) {
super(self, info);
}
public PyBuiltinFunction bind(PyObject self) {
return new exposed___delattr__(self, info);
}
public PyObject __call__(PyObject arg0) {
try {
((PyModule) self).module___delattr__(arg0.asName(0));
return Py.None;
} catch (PyObject.ConversionException e) {
String msg;
switch (e.index) {
case 0:
msg = "attribute name must be a string";
break;
default:
msg = "xxx";
}
throw Py.TypeError(msg);
}
}
}
dict.__setitem__("__delattr__", new PyMethodDescr("__delattr__", PyModule.class, 1, 1, new exposed___delattr__(
null, null)));
class exposed___init__ extends PyBuiltinMethod {
exposed___init__(PyObject self, PyBuiltinFunction.Info info) {
super(self, info);
}
public PyBuiltinFunction bind(PyObject self) {
return new exposed___init__(self, info);
}
public PyObject __call__(PyObject[] args) {
return __call__(args, Py.NoKeywords);
}
public PyObject __call__(PyObject[] args, String[] keywords) {
((PyModule) self).module_init(args, keywords);
return Py.None;
}
}
dict.__setitem__("__init__", new PyMethodDescr("__init__", PyModule.class, -1, -1, new exposed___init__(null,
null)));
dict.__setitem__("__new__", new PyNewWrapper(PyModule.class, "__new__", -1, -1) {
public PyObject new_impl(boolean init, PyType subtype, PyObject[] args, String[] keywords) {
PyModule newobj;
if (for_type == subtype) {
newobj = new PyModule();
if (init)
newobj.module_init(args, keywords);
} else {
newobj = new PyModuleDerived(subtype);
}
return newobj;
}
});
}
//~ END GENERATED REGION -- DO NOT EDIT SEE gexpose.py
private final PyObject module_doc = new PyString("module(name[, doc])\n" + "\n" + "Create a module object.\n"
+ "The name must be a string; the optional doc argument can have any type.");
public PyObject __dict__;
public PyModule() {
super();
}
public PyModule(PyType subType) {
super(subType);
}
public PyModule(PyType subType, String name) {
super(subType);
module_init(new PyString(name), Py.None);
}
public PyModule(String name) {
this(name, null);
}
public PyModule(String name, PyObject dict) {
super();
__dict__ = dict;
module_init(new PyString(name), Py.None);
}
final void module_init(PyObject name, PyObject doc) {
ensureDict();
__dict__.__setitem__("__name__", name);
__dict__.__setitem__("__doc__", doc);
}
final void module_init(PyObject[] args, String[] keywords) {
ArgParser ap = new ArgParser("__init__", args, keywords, new String[] { "name", "doc" });
PyObject name = ap.getPyObject(0);
PyObject docs = ap.getPyObject(1, Py.None);
module_init(name, docs);
}
public PyObject fastGetDict() {
return __dict__;
}
public PyObject getDict() {
if (__dict__ == null)
return Py.None;
return __dict__;
}
public void setDict(PyObject newDict) {
throw Py.TypeError("readonly attribute");
}
public void delDict() {
throw Py.TypeError("readonly attribute");
}
public PyObject getDoc() {
PyObject d = fastGetDict();
if (d != null) {
PyObject doc = d.__finditem__("__doc__");
if (doc != null) {
return doc;
}
}
return module_doc;
}
protected PyObject impAttr(String attr) {
PyObject path = __dict__.__finditem__("__path__");
PyObject pyname = __dict__.__finditem__("__name__");
if (path == null || pyname == null)
return null;
String name = pyname.__str__().toString();
String fullName = (name + '.' + attr).intern();
PyObject ret = null;
//System.err.println("PyModule.impAttr " + attr + " " + name + " " + fullName);
if (path == Py.None) {
/* disabled:
ret = imp.loadFromClassLoader(
(name+'.'+attr).intern(),
Py.getSystemState().getClassLoader());
*/
} else if (path instanceof PyList) {
ret = imp.find_module(attr, fullName, (PyList) path);
} else {
throw Py.TypeError("__path__ must be list or None");
}
if (ret == null) {
ret = PySystemState.packageManager.lookupName(fullName);
}
if (ret != null) {
// Allow a package component to change its own meaning
PyObject tmp = Py.getSystemState().modules.__finditem__(fullName);
if (tmp != null)
ret = tmp;
__dict__.__setitem__(attr, ret);
return ret;
}
return null;
}
public PyObject __findattr__(String attr) {
return module___findattr__(attr);
}
final PyObject module___findattr__(String attr) {
PyObject ret;
if (__dict__ != null) {
ret = __dict__.__finditem__(attr);
if (ret != null)
return ret;
}
ret = super.__findattr__(attr);
if (ret != null)
return ret;
if (__dict__ == null) {
return null;
}
PyObject pyname = __dict__.__finditem__("__name__");
if (pyname == null)
return null;
return impHook(pyname.__str__().toString() + '.' + attr);
}
public void __setattr__(String attr, PyObject value) {
module___setattr__(attr, value);
}
final void module___setattr__(String attr, PyObject value) {
if (attr != "__dict__")
ensureDict();
super.__setattr__(attr, value);
}
public void __delattr__(String attr) {
module___delattr__(attr);
}
final void module___delattr__(String attr) {
super.__delattr__(attr);
}
public String toString() {
return module_toString();
}
final String module_toString() {
PyObject name = null;
PyObject filename = null;
if (__dict__ != null) {
name = __dict__.__finditem__("__name__");
filename = __dict__.__finditem__("__file__");
}
if (name == null)
name = new PyString("?");
if (filename == null)
filename = new PyString("(built-in)");
else
filename = new PyString("from '" + filename + "'");
return "<module '" + name + "' " + filename + ">";
}
public PyObject __dir__() {
if (__dict__ == null)
throw Py.TypeError("module.__dict__ is not a dictionary");
return __dict__.invoke("keys");
}
private void ensureDict() {
if (__dict__ == null)
__dict__ = new PyStringMap();
}
static private PyObject silly_list = null;
private static PyObject impHook(String name) {
if (silly_list == null) {
silly_list = new PyTuple(new PyString[] { Py.newString("__doc__"), });
}
try {
return __builtin__.__import__(name, null, null, silly_list);
} catch (PyException e) {
if (Py.matchException(e, Py.ImportError)) {
return null;
}
throw e;
}
}
}