.. _bibble._interface: ================= bibble._interface ================= .. py:module:: bibble._interface Type Aliases ------------ .. autoapisummary:: bibble._interface.StringBlock Enums ----- .. autoapisummary:: bibble._interface.Capability_f Protocols --------- .. autoapisummary:: bibble._interface.AdaptiveMiddleware_p bibble._interface.BidirectionalMiddleware_p bibble._interface.BlockMiddleware_p bibble._interface.CustomWriteBlock_p bibble._interface.DependentMiddleware_p bibble._interface.EntrySkipper_p bibble._interface.FieldMatcher_p bibble._interface.Library_p bibble._interface.Middleware_p bibble._interface.PairStack_p bibble._interface.ReadTime_p bibble._interface.Reader_p bibble._interface.StrTransformer_p bibble._interface.WriteTime_p bibble._interface.Writer_p Module Contents =============== .. py:data:: StringBlock :type: TypeAlias :value: model.String .. _bibble._interface.Capability_f: .. py:class:: Capability_f(*args, **kwds) Bases: :py:obj:`enum.Flag` A Flag for where middlewares can be in the read/write stack .. py:attribute:: dependent .. py:attribute:: insist_end .. py:attribute:: insist_front .. py:attribute:: read_time .. py:attribute:: report .. py:attribute:: transform .. py:attribute:: validate .. py:attribute:: write_time .. _bibble._interface.AdaptiveMiddleware_p: .. py:class:: AdaptiveMiddleware_p Bases: :py:obj:`Protocol` Middleware that looks up defined transforms using the type name, by mro. The form for method lookup is either: - transform_{type(block).__class__} - {direction}_transform_{type(block).__class__} An adaptive middleware doesn't need all the 'transform_X' methods a BlockMiddleware_p does. .. py:method:: get_transforms_for(block, *, direction = None) -> .. _bibble._interface.BidirectionalMiddleware_p: .. py:class:: BidirectionalMiddleware_p Bases: :py:obj:`Protocol` A Single middleware that holds the logic for reading and writing, Intended for undoing what is done on read, prior to writing. eg: Latex Decoding, then Encoding .. py:method:: read_transform(library) -> .. py:method:: write_transform(library) -> .. _bibble._interface.BlockMiddleware_p: .. py:class:: BlockMiddleware_p Bases: :py:obj:`Protocol` A (non-adaptive) block middleware has 'transform_x' methods .. py:method:: transform(library) -> .. py:method:: transform_block(block, library) -> .. py:method:: transform_entry(entry, library) -> .. py:method:: transform_explicit_comment(comment, library) -> .. py:method:: transform_implicit_comment(comment, library) -> .. py:method:: transform_preamble(preamble, library) -> .. py:method:: transform_string(string, library) -> .. _bibble._interface.CustomWriteBlock_p: .. py:class:: CustomWriteBlock_p Bases: :py:obj:`Protocol` Writers can be Visitors, in which case they call ths visit method on blocks .. py:method:: visit(writer) -> .. _bibble._interface.DependentMiddleware_p: .. py:class:: DependentMiddleware_p Bases: :py:obj:`Protocol` For middlewares that depend on a middleware to be able to work themselves. eg: metadata applicator requires path reader .. py:method:: requires_in_parse_stack() -> .. py:method:: requires_in_same_stack() -> .. _bibble._interface.EntrySkipper_p: .. py:class:: EntrySkipper_p Bases: :py:obj:`Protocol` A whitelist based test for middlewares. Middleware's set their skiplist on init, and can call 'should_skip_entry' when transforming blocks eg: for only processing type='article' entries, not books .. py:method:: set_entry_skiplist(whitelist) -> .. py:method:: should_skip_entry(entry, library) -> .. _bibble._interface.FieldMatcher_p: .. py:class:: FieldMatcher_p Bases: :py:obj:`Protocol` The protocol util.FieldMatcher_m relies on A Middleware with the FieldMatcher_m mixin will call the implemented field_h on each field that matches in an entry. .. py:method:: field_h(field, entry) -> .. py:method:: match_on_fields(entry, library) -> .. py:method:: set_field_matchers(*, white, black) -> .. _bibble._interface.Library_p: .. py:class:: Library_p Bases: :py:obj:`Protocol` The core methods of a library .. py:method:: add(blocks, fail_on_duplicate_key = False) -> .. py:method:: blocks() -> .. py:method:: comments() -> .. py:method:: entries() -> .. py:method:: entries_dict() -> .. py:method:: failed_blocks() -> .. py:method:: preambles() -> .. py:method:: remove(blocks) -> .. py:method:: replace(old_block, new_block, fail_on_duplicate_key = True) -> .. py:method:: strings() -> .. py:method:: strings_dict() -> .. _bibble._interface.Middleware_p: .. py:class:: Middleware_p Bases: :py:obj:`Protocol` A Middleware is something with a 'transform' method .. py:method:: transform(library) -> .. _bibble._interface.PairStack_p: .. py:class:: PairStack_p Bases: :py:obj:`Protocol` Protocol for both storing both read and write middlewares .. py:method:: add(*args, read = None, write = None) -> .. py:method:: read_stack() -> .. py:method:: write_stack() -> .. _bibble._interface.ReadTime_p: .. py:class:: ReadTime_p Bases: :py:obj:`Protocol` Protocol for signifying a middleware is for use on parsing bibtex to data .. py:method:: on_read() -> .. _bibble._interface.Reader_p: .. py:class:: Reader_p Bases: :py:obj:`Protocol` Readers take source text, or a file, or a directory, parses the read bibtex, running middlewares on the parsed bibtex .. py:method:: read(source, *, into = None, append = None) -> .. py:method:: read_dir(source, *, ext, into = None, append = None) -> .. _bibble._interface.StrTransformer_p: .. py:class:: StrTransformer_p Bases: :py:obj:`Protocol` Describes the StringTransform_m .. py:method:: _transform_raw_str(python_string) -> .. py:method:: transform_strlike(slike) -> .. _bibble._interface.WriteTime_p: .. py:class:: WriteTime_p Bases: :py:obj:`Protocol` Protocol for signifying middleware is for use on writing data to bibtex .. py:method:: on_write() -> .. _bibble._interface.Writer_p: .. py:class:: Writer_p Bases: :py:obj:`Protocol` Writers take a library, format it, and write it to a file. *typically* it formats as bibtex, but doesn't *have* to. (eg: RstWriter) .. py:method:: write(library, *, file = None, append = None) ->