Package: pyby
PybyA library implementing certain Ruby-like behaviours in Python.NB:This is heavily under development and subject to change. Expect breaking changes until the 1.0.0 release.InstallationInstall thepybypackage fromPyPI.pipinstallpybyCurrent FunctionalityThe links in the list of available modules, classes, methods, and functions below link to the corresponding Ruby documentation.Currently, Ruby version 3.1.1 is used as a basis for the mimiced functionality.RObject(object.py)A base class to enrich Python objects with additional functionality.respond_toDetermines whether an object has a certain callable property or not.Also available as a standalone function, rather than a method.sendCalls the property identified by name, passing it any arguments specified.
If the property is not callable and no arguments are specified, the property is instead returned.Enumerable(enumerable.py)A base class meant to be subclassed by an iterable (henceforth referred to as an enumerable).The enumerable must implement__each__in order to unlock the rest of the functionality.To return something else than anEnumerableList, the enumerable can override__into__. For example,EnumerableDictreturns anotherEnumerableDictwhen itscompactmethod is called.In addition, the enumerable may override__to_tuple__in order to support predicate and mapping functions with a higher arity than one. A prime example would beEnumerableDictin combination withselectwhere the predicate function should expect the key-value pair split into two arguments rather than a single tuple. In this case,__to_tuple__should return the key-value pair as a two-element tuple.__each__(internal)Returns an iterator to be used internally.Must be implemented by the subclass.__into__(internal)Returns a constructor that accepts an iterable for the given method name.By default imports and returnsEnumerableList.May be implemented by the subclass.__to_tuple__(internal)Transforms a single element of an enumerable to a tuple.Used internally to uniformly handle predicate and mapping functions with a higher arity than one.By default returns the item wrapped in a single-element tuple.May be implemented by the subclass.configure(internal)A decorator enabling the return type of a method, as well as the number of arguments predicate and mapping functions are to be called with, to be configured by the collection class inheriting from Enumerable.Ifenumerator_without_funcis set, the decorator skips calling the decorated method if no arguments have been passed and instead returns an Enumerator based on the enumerable.Relys on the enumerable's implementation of__into__and__to_tuple__.collect,mapReturns the result of mapping a function over the elements.The mapping function takes a single argument for sequences and two arguments for mappings.compactReturns an enumerable of the elements with None values removed.countReturns the number of elements in the enumerable.Optionally accepts an argument.Given a non-callable argument, counts the number of equivalent elements.Given a callable predicate, counts the elements for which the predicate is truthy.eachGiven a function, calls the function once for each item in the enumerable.For sequences this will typically be the same as iterating over the elements,
whereas for mappings this will be same as iterating over the items.Without a function, returns an enumerator by callingto_enum.filter,selectReturns the elements for which the predicate function is truthy.The predicate function takes a single argument for sequences and two arguments for mappings.Without a predicate function, returns an enumerator by calling to_enum.findReturns the first element for which the predicate function is truthy. If no matching element is found, returnsNone, unless a default callback has been provided, in which turn that callback function will be invoked and its result returned. The predicate function takes a single argument for sequences and two arguments for mappings.If called with a single argument, treats it as the predicate function.If called with two arguments, the first is treated as the default callback function and the second argument acts as the predicate function.Without a predicate function, returns an enumerator by calling to_enum.inject,reducePerforms a reduction operation much likefunctools.reduce.If called with a single argument, treats it as the reduction function.If called with two arguments, the first is treated as the initial value for the reduction and the second argument acts as the reduction function.Also available as the aliasreduce.firstReturns the first element or a given number of elements.With no argument, returns the first element, orNoneif there is none.With a number of elements requested, returns as many elements as possible.rejectReturns the elements for which the predicate function is falsy.Without a predicate function, returns an enumerator by calling to_enum.takeReturns the number of elements requested or as many elements as possible.to_enumReturns anEnumeratorfor the enumerable.Requires an iterable subclass.EnumerableDict(enumerable_dict.py)A subclass ofEnumerablethat mimics some of Ruby'sHashwhile still behaving like a Pythondict.EnumerableList(enumerable_list.py)A subclass ofEnumerablethat mimics some of Ruby'sArraywhile still behaving like a Pythonlist.Enumerator(enumerator.py)A class which allows both internal and external iteration.An enumerator is in turn an enumerable.nextReturns the next object in the enumeration sequence.If going beyond the enumeration,StopIterationis raised.peekReturns the current object in the enumeration sequence without advancing the enumeration.If going beyond the enumeration,StopIterationis raised.rewindRewinds the enumeration sequence to the beginning.Note that this may not be possible to do for underlying iterables that can be exhausted.