knappador / enron-py Goto Github PK
View Code? Open in Web Editor NEWLicense: BSD 4-Clause "Original" or "Old" License
License: BSD 4-Clause "Original" or "Old" License
Bottom line is the implementation and tools need to actually find bugs.
Connecting the type graph will tangle with enabling useful type checking. Plan for that:
make_*
methods that connect the type graph_auto_arg
helpersAssuming we have a tree of methods in our constructors, it should become decidable whether a caller is providing enough information to construct a desired type. This does not address if the type checkers will give up for any number of reasons. Optional -> concrete may need to be completely explicit to satisfy sufficient information to construct.
The *Math
metaclasses provide additional challenges for integration with type checking. The other
arg could be type Any
but this really only makes sense when we want to return NotImplemented
for the sake of allowing the other
to invoke it's __radd__
and related __r*
methods. Commutative argument upgrading / downgrading is done via __r*
methods now and is not particularly mind-blowing but it's not immediately clear that pylint can reason about simple math expressions ahead of runtime.
assert
is being moved away from. The adoption of a favored tree of construction can deal with Optional
and this process is reductive as we approach our canonical signature at the point of actual construction. The assertions on _auto*
methods for non-None cases will then implement sensible RTTC where the user provided an argument and the argument breaks the reduction path. In this manner we can move away from almost all non-shared constructor coercion as well as providing tools for client classes to adopt the same type-checking.
Oddly some broken code will need to exist in the source base to verify the performance of pylint. Some integration will be necessary.
Internals frequently just delegate to {!r}
and {!s}
but it's pretty hideous for Decimal types
Account
protects its internals by blocking flippant calls to __setattr__
and also adding access to virtual attributes amount
and asset
which together can comprise an AssetAmount
.
E:632,15: Instance of 'Account' has no 'amount' member (no-member)
E:637,42: Instance of 'Account' has no 'asset' member (no-member)
E:640,32: Instance of 'Account' has no 'amount' member (no-member)
Provide lint with this information for now.
AssetAmount
can upgrade Decimal
arguments. It may make sense to provide for more fluid upgrade & downgrade of AssetAmount
to simply the type graph.
There's a /doc folder but presumably I skipped a build step. Click docs badge for link to RTD page. (or add one on the main README if it works)
__enter__
kill
method to explicitly mark dead a DoubleEntry
with no intended destinationDoubleEntry
is marked applied or something to that effect when used in a context__exit__
and didn't get an assigned explicit fate__exit__
CREATED
state to be valid for admission into the current scopeGeneralLedger
is kicked out of being anything like an AssetBalance
to focus on transaction dutiesSo many great emojis... ๐ฆ ๐ ๐ฐ๐ช ๐ก ๐ ๐ฌ โฒ๏ธ ๐ต๏ธโโ๏ธ
I went as far as actually getting the project to automatically update whenever master is merged. Hope into the docs/
folder and run sphinx-build -b html source build
to obtain results in docs/build/
that can be opened in a browser to preview
They look something like this:
http://enron.readthedocs.io/en/latest/enron.html#module-enron.enron
I think the TOC and general page structure are not quite ready to be maintainable. I'd like to get this up to the point that simply inserting docstrings will result in helpful docs. A lot of the pages frankly just looked like confusing blobs.
I'm not rushing to go learn about configuring Sphinx until the API is stable ๐ง ๐๏ธ ๐ทโโ๏ธ
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.