Skip to main content

Library functions to support pythonizer

Project description

perllib

https://img.shields.io/pypi/v/perllib.svg https://img.shields.io/travis/snoopyjc/perllib.svg Documentation Status

Library functions to support pythonizer

Features

  • Perl library functions typically return 1 on success and undef on failure, whereas python library functions raise exceptions on failure. Also, perl automatically converts variables from strings to numbers and vice-versa when referenced in the appropriate context. In perl, global variables are truly global across files and are organized by package name, where in python global variables have file scope. In addition, perl has autovivification, which means that arrays and hash tables magically appear out of whole cloth when referenced. This library supports all of those features and allows the “pythonizer” perl to python translator generate code that is fairly readable.

Credits

This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.

History

1.030 (2023-03-27)

  • Issue s335: Replace os.getgrouplist() call in _stat.py with os.getgroups(), Issue s337: Fix issues in Time::HiRes on unix. Issue s347: Converting a class object to a string should change ‘.’ to ‘::’ - fixed in _init_package, Issue s350: Handle dynamic require statement in eval - fix _import to handle ‘::’ as ‘/’, Issue s359: define get() in _ArrayHash to work with negative index, define get() in _add_tie_methods for tied arrays and also define proper __getitem__, __setitem__, and __delitem__ methods, define get() for File_stat class in _stat, fix _each to work on Array objects, allow _list_of_n to work on an itertools.chain object

1.029 (2023-03-03)

  • Issue s311: Update _init_package to add a __bool__ method to all classes that returns True, Issue s324: Update _method_call to allow the methodname to be a function object, Issue s332: Implement promoting warnings to FATAL if WARNING is set to 2 - updates in _warn, _die, _flt, _num, _int

1.028 (2023-02-24)

  • Issue s301: Add _assign_meta, _store_perl_meta, and _unassign_meta to support tie/untie of scalars. Update _add_tie_methods to support tie scalar. Implement use Env. Issue s304: Add _add_tie_call. Update _add_tie_methods to handle FIRSTKEY and NEXTKEY returning the list value from _each.

1.027 (2023-02-16)

  • Issue s281: UNIVERSAL::isa(*FH,’GLOB’) should return 1. Issue s295: script.py on windows will launch an editor if that’s the associated program. Issue s297: Set CHILD_ERROR properly in _run, _run_s, and _system. Properly look up signal names in __members__ in _kill. Issue s296: Create environment variables to set perllib.TRACKBACK, perllib.AUTODIE, perllib.TRACE_RUN, perllib.WARNING. Implement in _init_package for main. Issue s280: Don’t try to set the __class__ attribute in _init_package on a non-class. Issue 288: Implement new _warn. Issue s292: Reimplement _die. Implement CGI::Carp.

1.026 (2023-02-10)

  • Fix _ref_scalar and _ref to change ‘.’ to ‘::’ when returning the __name__ attribute, then change _method_call to change ‘::’ back to ‘.’. Implement Time::localtime and Time::tm. Retranslate Math::Complex with new Pythonizer. Implement Time::HiRes.

1.025 (2023-02-05)

  • Issue s269: Fix _import to handle the case where we haven’t set our package yet. Handle * for count in _pack. Implement CGI, CGI::Cookie, CGI::Util. Implement Encode via _encode, _decode, et.al. and Encode::Encoding, Encoding::MIME::Name.

1.024 (2023-01-30)

  • Issue s260: Rewrite _caller and _callers. Issue s244: In _store_perl_global, store a sub with both the escaped name and the unescaped name, and also call _ininit_package with is_class=True if the namespace is not a ‘type’. Add Class::Struct and Text::ParseWords packages. Issue s261: Handle [:] in ArrayHash __setitem__ for slice. Issue s266: _bless: Change “’” and ‘::’ in classname to ‘.’

1.023 (2023-01-18)

  • Issue s247: Add _exec and _execp. Fix ArrayHash to defined __contains__. Fix _add_tie_methods to handle a tie class that’s both a hash and an array using a generator function. Issue s253: fix _switch to handle objects that overload the smart match (~~) operator. Issue s252: _read shouldn’t raise an exception if given an int or None buffer. Issue s244: add method_type argument to _store_perl_global. Issue s259: Fix _caller and _callers to return the proper package (with some help from _init_package).

1.022 (2023-01-06)

  • Issue s238: Update _cmp and _spaceship to work on objects with overloaded cmp and <=> operators - _cmp also now converts non-object to str internally, Added _overload_Method, _overload_Overloaded, _overloaded_StrVal, _subname. Updated Math.Complex.py to set the new attributes we use to determine what’s overloaded. Add HTML::Entities. Issue s243: Define UNIVERSAL as base class of all objects in _init_package and change the name of our _ArrayHashClass from NewCls to UNIVERSAL in ArrayHash. Issue s244: update _store_perl_global to convert a callable to a MethodType if the method name is ‘new’ or ‘make’.

1.021 (2022-12-28)

  • Issue s223: Update the metaclass of our dynamically generated classes in _init_package to define a __str__ that returns the class name. Update _ref_scalar to return ‘’ if given a class (not a class instance), Issue s225: fix _import to actually work!, fix _tie_call if passed a string instead of self, Issue s231: Implement do EXPR in _import with a new keyword parameter, implement utf8:: functions, implement blessed, Issue s203: addl fix for _init_package to properly subclass MethodType subs, skip error in ArrayHash.extend if asked to extend a hash with an empty array as it is () in the source code, which is also used for an empty hash, Issue s236: _ref now returns ‘’ for a class (not a class instance), Issue s237: add _logical_xor

1.020 (2022-12-20)

  • Issue s18: Update _init_package to upgrade a SimpleNamespace to a type if we’re called again and that is specified, also handle isa=… when is_class is False as inheritance still works in Perl without using bless, Issue s216: add _add_tie_methods, call it in _bless, Issue s218: change _num(object) to call _num_ if it’s defined via use overload, change _init_package to define an ‘is’ comparison for classes and objects so == works as expected

1.019 (2022-12-10)

  • Issue s209: Update _init_package to put all packages in the ‘main’ namespace and properly handle sub-namespaces, Issue scalar ref: add _ref_scalar for the ref function on various references held in scalars

1.018 (2022-12-05)

  • Issue s184: Add _fetch_out_parameters for array/hash out parameters, fix _isa for Array or Hash type, Issue s198: add _list_of_at_least_n

1.017 (2022-12-04)

  • Issue s185: Prepped _store_out_parameter to take None for arglist

1.016 (2022-11-30)

  • Issue s184: Add _init_out_parameters, _store_out_parameter, and _fetch_out_parameter for supporting output parameters on functions and methods. Issue s183: Allow _perl_print to write to binary files to support binmode, fix autoflush with binmode

1.015 (2022-11-26)

  • Issue s176: Add _fetch_perl_global and _store_perl_global, Issue s180: add _can for $obj->can(‘method’), fix error in _confess and _croak if TRACEBACK is false and the pythonizer -P option is used, then Die doesn’t have a suppress_traceback keyword parameter, issue s177: Add _caller_s for scalar context caller function, have _read and _sysread already return a str, never bytes, issue s183: add _openhandle function

1.014 (2022-11-24)

  • Issue s173: Fix File::Path to not reallocate the ‘error’ or ‘result’ arrays

1.013 (2022-11-14)

  • Issue s152: have _import return 1 on success, issue s154: support tie, untie, tied, issue s166: update _open_dynamic, _dup to handle <&= and >&=, and _open to convert ints to string filenames, _system should not use capture_output

1.012 (2022-11-07)

  • Issue s142: add Array.remove(item), issue s150: add _preprocess_arguments, _postprocess_arguments

1.011 (2022-11-03)

  • Issue s135: Add _filter_map

1.010 (2022-11-03)

  • (no library changes)

1.009 (2022-10-31)

  • issue s128: Added _readlink, FindBin, issue s129: Added _switch

1.008 (2022-10-26)

  • (no library changes)

1.007 (2022-10-24)

  • (no library changes)

1.006 (2022-10-23)

  • (no library changes)

1.005 (2022-10-21)

  • issue s124: perllib functions should return 1 or ‘’, not True/False

1.004 (2022-10-19)

  • issue s122: IO encoding shouldn’t default to UTF-8

1.003 (2022-10-17)

  • issue s121: localtime, gmtime, and timelocal shouldn’t raise exceptions

1.002 (2022-10-11)

  • issue s119: Sparse extraction from array doesn’t give proper results

1.001 (2022-10-01)

  • First production version (no changes from 0.994)

0.994 (2022-09-29)

  • issue s94: add _unlink, don’t set OS_ERROR in _exc (used for eval errors)

0.993 (2022-09-26)

  • (no library changes)

0.992 (2022-09-24)

  • issue s105: newline at end of filename gets stripped by perl - fix in _open_

0.991 (2022-09-23)

  • (no library changes)

0.990 (2022-09-22)

  • (no library changes)

0.989 (2022-09-15)

  • (no library changes)

0.988 (2022-09-15)

  • (no library changes)

0.987 (2022-09-14)

  • (no library changes)

0.986 (2022-09-09)

  • (no library changes)

0.985 (2022-09-08)

  • issue s99: If you have more formats than items, you get an error in python but not perl - fix in _format_

0.984 (2022-09-08)

  • (no library changes)

0.983 (2022-09-04)

  • (no library changes)

0.982 (2022-09-02)

  • (no library changes)

0.981 (2022-08-02)

  • (no library changes)

0.980 (2022-07-28)

  • (no library changes)

0.979 (2022-07-02)

  • issue s91 - open with a dynamic single argument that does not contain a mode returns None on error instead of a closed file. Fix in _open_dynamic.

0.978 (2022-05-12)

  • _system, _run, and _run_s are now able to run perl and python scripts under windows

0.977 (2022-04-29)

  • (no library changes)

0.976 (2022-04-28)

  • Add _strftime

0.975 (2022-04-28)

  • (no library changes)

0.974 (2022-04-21)

  • _num(blessed object) shouldn’t return 0, _bless needs to treat the result as a dict, not an object. Change method name for IO_File.open to have a trailing underscore to match the name after escape_keywords. Fix typo “fd” in _IOFile_open to “fh”. perllib.close renamed to have a trailing underscore so that fh.close() doesn’t cause infinite recursion.

0.973 (2022-04-16)

  • (no library changes)

0.972 (2022-04-15)

  • add _set_breakpoint

0.971 (2022-04-12)

  • Add _split_s for split in a scalar context. Add _splitdir, _splitpath, _curdir, and _updir from File::Spec. Add _isa. Add __contains__ in File_stat. Add _chdir and _rmdir.

0.970 (2022-04-10)

  • (no library changes)

0.969 (2022-04-05)

  • Add _readdirs to handle readdir in list context, fix _each to handle arrays properly. Fix _lstat so it actually works.

0.968 (2022-04-01)

  • Add _utime, fix _stat and friends to work on filehandles and dirhandles. Add _abspath for Cwd::abs_path.

0.967 (2022-03-31)

  • (no library changes)

0.966 (2022-03-20)

  • Convert variable to string in _substitute_global, _substitute_element, _translate_global, and _translate_element. Change _ref to handle object checks and add _refs to handle ref with to a scalar, array, or hash - not perfect but it’s normally correct. Add _bless and enable _init_package to handle classes. Fix _list_of_n and _make_list if you pass it a single Hash(). Add _flt for specific conversions to float, like in math functions. Implement select via _select. Implement kill via _kill.

0.965 (2022-03-14)

  • Change Config.Config to Config.Config_h and all Dumper variables to include _v suffix to match new package var mappings in Pythonizer. Add _map_int, _map_num, _map_str. Fix _flatten to handle multiple levels. Change _longmess traceback to return ‘()’ for args if they were changed to a list and all popped off instead of ‘[]’. Handle OUTPUT_FIELD_SEPARATOR and OUTPUT_RECORD_SEPARATOR in _perl_print. Fix charnames.viacode to handle ‘U+’ or ‘0x’ prefix.

0.964 (2022-03-10)

  • Fix _init_package for package with dotted name, don’t raise exceptions in -C, -A, -M, fix Array __setitem__ with slice

0.963 (2022-03-09)

  • Add _chop_global, _chomp_global, _chop_element, _chomp_element

0.962 (2022-03-09)

  • Hot fix for _fileinput_next - errors on Python older than v3.10

0.961 (2022-03-02)

  • Handle open layer pragmas, fix issue with translate and friends with squash option, add dclone, catfile, file_name_is_absolute, Dumper, don’t raise exception on double close

0.960 (2022-02-28)

  • Speed up ArrayHash and Num. Have add_element and subtract_element handle non-numeric elements, turn subprocess shell=False on windows unless the command contains cmd shell chars or is a cmd built-in, fixup open of /tmp/… on windows to use the windows tempdir, don’t pass effective_ids=True on windows. Have concat_element auto-convert everything to strings.

0.959 (2022-02-24)

  • str(ArrayHash()) changed to give ‘’ instead of [], add EVAL_ERROR global variable, have ArrayHash() + or += work on empty value

0.958 (2022-02-23)

  • Don’t give a close failed error on a pipe which got automatically closed, give empty result for keys(), values(), and items() on a fresh ArrayHash instead of AttributeError

0.957 (2022-02-22)

  • Add list_to_hash function to process key/value pairs

0.956 (2022-02-21)

  • Implement all options of translate (tr///)

0.955 (2022-02-19)

  • Fix split: A zero-width match at the beginning of EXPR never produces an empty field, fix bootstrapping issues

0.954 (2022-02-17)

  • Add -n: trace run, fix issue of scalar being initialized as an array

0.953 (2022-02-15)

  • First release on PyPI.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

perllib-1.30.tar.gz (188.4 kB view details)

Uploaded Source

Built Distributions

perllib-1.30-py3.10.egg (361.9 kB view details)

Uploaded Source

perllib-1.30-py2.py3-none-any.whl (180.2 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file perllib-1.30.tar.gz.

File metadata

  • Download URL: perllib-1.30.tar.gz
  • Upload date:
  • Size: 188.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.6

File hashes

Hashes for perllib-1.30.tar.gz
Algorithm Hash digest
SHA256 d12989644b117b9be57e7607b019b4d85eb8f09c2590bf0abd42b172bea37ddf
MD5 ecfb63f795a821ee406b927d0166108f
BLAKE2b-256 a82e075799ed01e3f91f3b84861957e52f6a20f94dd6d95ffce3c7403e006e33

See more details on using hashes here.

File details

Details for the file perllib-1.30-py3.10.egg.

File metadata

  • Download URL: perllib-1.30-py3.10.egg
  • Upload date:
  • Size: 361.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.6

File hashes

Hashes for perllib-1.30-py3.10.egg
Algorithm Hash digest
SHA256 c1b821ca9f94f9d5d17fd061e8eabad3581cbcafe9e4c55e6cd980a4dcb9f11f
MD5 85396a6a4cc6ad7183e17484b4a821e4
BLAKE2b-256 6681c83632cc4e95e92271dabe410dd18fece34a4fe9744b458dc979c9d6f199

See more details on using hashes here.

File details

Details for the file perllib-1.30-py2.py3-none-any.whl.

File metadata

  • Download URL: perllib-1.30-py2.py3-none-any.whl
  • Upload date:
  • Size: 180.2 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.6

File hashes

Hashes for perllib-1.30-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 497c5e02bf9dd31701489c0e9d646e46fd81520a9a5e98983db1189d66fa92b9
MD5 62422bad57d62a816156a83b77f0cb21
BLAKE2b-256 18641d98f186fbfa63512125a5049359ab8a55e4a2dfae5493795742723c4e27

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page