Commit graph

10 commits

Author SHA1 Message Date
Brett Smith
7a4e1c52f3 errors: InvalidMetadataError stores its key and value.
This makes it easier to introspect than trying to parse the message,
which is meant primarily for human readers.
2020-03-31 11:50:27 -04:00
Brett Smith
959bda307b typing: Refine any generics when possible.
These were tightened up by running mypy with --disallow-any-generics
and cleaning up reported errors.

There are still a couple of cases I don't know how to deal with
right now that prevent me from setting that option permanently:

* plugin/__init__.py sets up a dict where the key is a Directive
  and its value is a set of hooks that correspond to that type
  of directive. The relationship between key and value is not
  expressable through the type system, and any other solution would
  make the code way more involved and less dynamic.

* The type variable used in _GenericRange still isn't quite right,
  in the sense that specifying a value for CT creates more errors
  I don't know how to deal with. Protocols seem like the right
  solution for that but they apparently didn't land for Python 3.7
  that I can see.
2020-03-29 23:28:03 -04:00
Brett Smith
747ef25da6 setup: Disallow untyped defs.
Mostly this meant giving annotations to low-value functions like
the error classes and __init_subclass__, but it's worth it for
the future strictness+documentation value.
2020-03-29 23:18:40 -04:00
Brett Smith
46cfc558ec plugin: Link checkers use Metadata class. 2020-03-28 13:36:56 -04:00
Brett Smith
2cb131423f errors: Redo InvalidMetadataError.
This needs to be generally usable for transactions.
2020-03-28 09:47:40 -04:00
Brett Smith
4874a107e8 meta_rt_links: Start hook. 2020-03-25 00:12:20 -04:00
Brett Smith
ad268f049d meta_entity: Start hook. 2020-03-21 13:53:33 -04:00
Brett Smith
5c6043311b meta_repo_links: Start hook. 2020-03-20 16:47:06 -04:00
Brett Smith
0d370c445b plugin: User configuration is passed to hooks on initialization. 2020-03-19 17:23:27 -04:00
Brett Smith
3fbc14d377 Improve organization between modules.
* Rename _typing to beancount_types to better reflect what it is.
* LessComparable isn't a Beancount type, so move that to
  plugin.core with its dependent helper classes.
* Errors are a core Beancount concept, so move that module to the
  top level and have it include appropriate type definitions.
2020-03-15 16:03:57 -04:00
Renamed from conservancy_beancount/plugin/errors.py (Browse further)