Skip to main content

nonobvious

The first python package to jump across the English Channel!

https://travis-ci.org/eykd/nonobvious.svg?branch=master https://coveralls.io/repos/eykd/nonobvious/badge.png

This package attempts to implement the “functional core, imperative shell” pattern described in Gary Bernhardt’s talk on Boundaries, using some ideas found in the Ruby obvious project.

Functional Core, Imperative Shell

The basic idea is that your core domain model implements business logic using functional techniques, with immutable values and copy-on-write. The functional core is wrapped by an imperative shell which drives the core models and interacts across the boundary with the outside world through “primitive” values. The immutable domain models can be easily converted to primitive data structures whose state has no affect on the immutable core.

nonobvious.models and nonobvious.fields provide a declarative modeling language, similar to Django’s model objects, but without an ORM. We can easily use validators and adaptors from the valideer project to ensure that the models are always in a valid state and can easily be constructed from standard python data structures.

By making use of concon.frozendict, concon.frozenlist, and concon.frozenset within model adaptors allows us to model complex data structures guaranteed to be correctly formed at all times.

As for the imperative shell, at present, you’re on your own!

Metadata

Release files for nonobvious 0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for nonobvious 0.1
File Size Uploaded Provenance
nonobvious-0.1.tar.gz 4.6 kB Without provenance Details

Release files / nonobvious-0.1.tar.gz

Download URL nonobvious-0.1.tar.gz
Size 4.6 kB
Tags Source
SHA-256 checksum
How to use checksums
949b1fb5fb344ba0c05df1cfc37fe4340ad1f1a798a19750682a0c8670f47685
BLAKE2b-256 checksum
How to use checksums
d74e8abf38ea4acc8a220ca5429acc717a6818767b1813c54175d842f730d50c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Security for nonobvious 0.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1 This release

1 release file No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page