package python; import python.internal.AnonObject; import python.lib.Dict; import python.NativeStringTools; typedef PySys = python.lib.Sys; class Lib { public static function print(v:Dynamic):Void { var str = Std.string(v); PySys.stdout.buffer.write( NativeStringTools.encode(str, "utf-8")); PySys.stdout.flush(); } public static function println(v:Dynamic):Void { var str = Std.string(v); PySys.stdout.buffer.write( NativeStringTools.encode('$str\n', "utf-8")); PySys.stdout.flush(); } /** Returns an anonymous Object which holds the same data as the Dictionary `v`. **/ public static function dictToAnon (v:Dict):Dynamic { return new AnonObject(v.copy()); } /** Returns a flat copy of the underlying Dictionary of `o`. **/ public static function anonToDict (o:{}):Dict { return if (python.lib.Builtin.isinstance(o, AnonObject)) { (Syntax.field(o, "__dict__"):Dict).copy(); } else null; } /** Returns the underlying Dictionary of the anonymous object `o`. Modifications to this dictionary are reflected in the anonymous Object too. **/ public static function anonAsDict (o:{}):Dict { return if (python.lib.Builtin.isinstance(o, AnonObject)) { (Syntax.field(o, "__dict__"):Dict); } else null; } /** Returns the Dictionary `d` as an anonymous Object. Modifications to the object are reflected in the Dictionary too. **/ public static function dictAsAnon (d:Dict):Dynamic { return new AnonObject(d); } public static function toPythonIterable (it:Iterable):python.NativeIterable { return { __iter__ : function () { var it1 = it.iterator(); var self:NativeIterator = null; self = new NativeIterator({ __next__ : function ():T { if (it1.hasNext()) { return it1.next(); } else { throw new python.lib.Exceptions.StopIteration(); } }, __iter__ : function () return self }); return self; } } } public static inline function toHaxeIterable (it:NativeIterable):HaxeIterable { return new HaxeIterable(it); } public static inline function toHaxeIterator (it:NativeIterator):HaxeIterator { return new HaxeIterator(it); } }