Skip to main content

Bloomer โ€” brain-mimetic memory for AI. Seven biological principles, one Python library.

Project description

๐Ÿ’ฐ Support This Research โ€” Please Donate!

๐Ÿ™ If Bloomer helps your research, agent, or project, please consider donating to keep this work alive:

PyPI version Python 3.11+ License Research Accurate


๐Ÿง  Bloomer

Brain-mimetic memory for AI โ€” seven biological principles, one Python library.

Bloomer is not RAG. It is not vector search.

Bloomer is a memory system that behaves like a brain: it stores patterns the way the cortex stores them, retrieves them the way the hippocampus retrieves them, decays them the way unused memories decay, and reconsolidates them every time you remember. It is built directly from seven biological principles spanning 70 years of neuroscience research, and it runs locally on a free stack.

Research foundation in one line: Kanerva (SDR) + Ramsauer (Modern Hopfield) + Friston (Predictive Coding) + Baddeley (Working Memory) + Bartlett (Schemas) + Ebbinghaus (Forgetting Curve) + Nader (Reconsolidation).


โšก 30-Second Pitch

   โ”Œโ”€ what existing RAG does โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
   โ”‚                                                       โ”‚
   โ”‚   text โ”€โ”€โ–บ embed โ”€โ”€โ–บ cosine top-k โ”€โ”€โ–บ stuff into LLM  โ”‚
   โ”‚                                                       โ”‚
   โ”‚   โœ—  no salience    โœ—  no working memory               โ”‚
   โ”‚   โœ—  no schemas     โœ—  no reconsolidation              โ”‚
   โ”‚   โœ—  no surprise    โœ—  no state-dependence             โ”‚
   โ”‚                                                       โ”‚
   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

   โ”Œโ”€ what Bloomer does โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
   โ”‚                                                          โ”‚
   โ”‚   text โ”€โ”€โ–บ dense โ”€โ”€โ–บ SDR โ”€โ”€โ–บ Hopfield โ”€โ”€โ–บ answer         โ”‚
   โ”‚           (Kanerva) (CA3-style pattern completion)       โ”‚
   โ”‚                                                          โ”‚
   โ”‚   + working memory primes current context (Baddeley)     โ”‚
   โ”‚   + predictor reports surprise (Friston)                 โ”‚
   โ”‚   + co-firing patterns merge into schemas (Bartlett)     โ”‚
   โ”‚   + salience gates what gets remembered (Ebbinghaus)     โ”‚
   โ”‚   + every retrieval reconsolidates (Nader)               โ”‚
   โ”‚                                                          โ”‚
   โ”‚   โ†’ state-dependent  โ†’ drift-bounded  โ†’ no human ontologyโ”‚
   โ”‚                                                          โ”‚
   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿš€ Quick Start

Install

pip install bloomer

Or for development directly from source:

git clone https://bitbucket.org/brainbloomer/bloomer.git
cd bloomer
pip install -e ".[dev]"

Requirements: Python 3.11+ ยท NumPy ยท PyTorch ยท sentence-transformers ยท NetworkX ยท python-louvain

Zero-config CLI

The bin/bm wrapper auto-creates a venv and installs deps on first invocation. No source activate ever.

# 1. Ingest a directory of markdown files
./bin/bm ingest docs/

# 2. Query (uses Claude Code subscription by default โ€” zero marginal cost)
./bin/bm query "what is reconsolidation" --top-k 5

# 3. Check store stats
./bin/bm stats

# 4. Benchmark vs baseline cosine RAG
./bin/bm bench

# 5. Run the test suite
./bin/bm test

# 6. Background jobs
./bin/bm jobs daily      # salience decay on unused patterns
./bin/bm jobs weekly     # schema emergence

Python API

from bloomer import Memory

mem = Memory(db_path="memory.db")

# Ingest
mem.ingest_directory("docs/")

# Query โ€” returns full retrieval result with surprise + scores
result = mem.query("how do I build smash power", top_k=5)
print(result.answer)
for chunk, score in zip(result.chunks, result.scores):
    print(f"[{score:.3f}] {chunk.source}")

๐Ÿงฌ The Seven Principles

# Principle Module Research Anchor
1 Sparse Distributed Reps core/sdr.py Kanerva 1988
2 Modern Hopfield Retrieval core/hopfield.py Ramsauer 2020
3 Predictive Coding core/predictor.py Friston 2010
4 Decaying Working Memory core/working_memory.py Baddeley 1974
5 Schema Emergence core/schemas.py Bartlett 1932
6 Salience Gating core/salience.py Ebbinghaus 1885
7 Reconsolidation core/reconsolidation.py Nader 2000

Each principle has a dedicated test suite in tests/test_p{1..7}_*.py. See docs/sport-science/26_BIOLOGY_DRIVEN_MEMORY_ARCHITECTURE_*.md for the full unified design document.


๐Ÿ—๏ธ Architecture

   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
   โ”‚                       INGEST                            โ”‚
   โ”‚  markdown โ”€โ”€โ–บ chunk โ”€โ”€โ–บ embed (BGE-M3) โ”€โ”€โ–บ SDR (P1)    โ”‚
   โ”‚                          1024-d dense    16384-d sparse โ”‚
   โ”‚                                โ†“                        โ”‚
   โ”‚                          SQLite Store                   โ”‚
   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                              โ”‚
                              โ–ผ
   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
   โ”‚                        QUERY                            โ”‚
   โ”‚                                                         โ”‚
   โ”‚  question โ”€โ”€โ–บ embed โ”€โ”€โ–บ WM prime (P4) โ”€โ”€โ–บ predict (P3) โ”‚
   โ”‚                                โ†“               โ†“        โ”‚
   โ”‚                          Hopfield retrieve (P2)         โ”‚
   โ”‚                          + salience gate (P6)           โ”‚
   โ”‚                                โ†“                        โ”‚
   โ”‚                          top-k chunks                   โ”‚
   โ”‚                                โ†“                        โ”‚
   โ”‚                          reconsolidate (P7)             โ”‚
   โ”‚                                โ†“                        โ”‚
   โ”‚                          LLM compose                    โ”‚
   โ”‚                                โ†“                        โ”‚
   โ”‚                          answer                         โ”‚
   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                              โ”‚
                              โ–ผ
   โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
   โ”‚                     BACKGROUND                          โ”‚
   โ”‚  daily:  salience decay (P6) โ€” Ebbinghaus curve         โ”‚
   โ”‚  weekly: schema emergence (P5) โ€” Louvain co-firing      โ”‚
   โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿ†š Bloomer vs. Plain RAG

                        Plain RAG       Bloomer
                        โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€       โ”€โ”€โ”€โ”€โ”€โ”€โ”€
  retrieval geometry    cosine top-k    SDR + Hopfield
  state-dependence      โœ—               โœ“ (working memory primes)
  surprise / novelty    โœ—               โœ“ (predictor reports it)
  salience / forgetting โœ—               โœ“ (Ebbinghaus-shaped)
  schema emergence      โœ—               โœ“ (Louvain on co-firing)
  drift bounds          โœ—               โœ“ (reconsolidation w/ floor)
  human ontology req'd  often           none โ€” emerges from data
  LLM cost              per-token API   $0 via Claude Code subscription

Run ./bin/bm bench to measure on your own corpus. Reports Recall@3, Recall@5, latency, and the Jaccard distance gained from state-dependence (working memory priming).


๐Ÿ”Œ LLM Composer Configuration

Default composer: Claude Code CLI โ€” uses your existing subscription, $0 marginal.

Bloomer strips ANTHROPIC_API_KEY from the subprocess env before invoking claude so the CLI uses keychain OAuth instead of pay-per-token billing. If you actually want API-key billing, set BM_CLAUDE_USE_API_KEY=1.

Switch backends by env var:

# Default โ€” Claude Code CLI (subscription)
unset BM_LLM   # or: export BM_LLM=claude_code

# Ollama (fully local)
export BM_LLM=ollama
export BM_OLLAMA_MODEL=gemma3:12b

# OpenAI (paid)
export BM_LLM=openai
export OPENAI_API_KEY=sk-...

The router is in llm/router.py. Drop in your own composer by implementing compose(question, chunks) -> str and registering it.


๐Ÿ“ Why "state-dependent"

Words mean different things in different contexts. "That's the bomb" in the 90s was praise. "That's the bomb" at TSA is a felony. Plain RAG returns the same top-k regardless of context. Bloomer's working memory buffer keeps a decaying trace of recent activity (Baddeley 7ยฑ2, exponential decay over ~30s), which primes retrieval toward semantically nearby memories. Same query, different recent context โ†’ different retrieval. That is what biological memory does.

Empirically, Bloomer's retrieved chunks shift by ~17% Jaccard distance when the working memory buffer is primed with different topics. Plain RAG shifts 0%.


๐Ÿ”ฌ Research Foundation

Original Papers

  • Kanerva, P. (1988). Sparse Distributed Memory. MIT Press.
  • Ramsauer, H., et al. (2020). "Hopfield Networks is All You Need." arXiv:2008.02217.
  • Friston, K. (2010). "The free-energy principle: a unified brain theory?" Nature Reviews Neuroscience, 11(2), 127โ€“138.
  • Baddeley, A., & Hitch, G. (1974). "Working Memory." Psychology of Learning and Motivation, 8, 47โ€“89.
  • Bartlett, F. C. (1932). Remembering: A Study in Experimental and Social Psychology. Cambridge University Press.
  • Ebbinghaus, H. (1885). รœber das Gedรคchtnis [On Memory].
  • Nader, K., Schafe, G. E., & LeDoux, J. E. (2000). "Fear memories require protein synthesis in the amygdala for reconsolidation after retrieval." Nature, 406(6797), 722โ€“726.
  • Tonegawa, S., et al. (2015). "Memory engram cells have come of age." Neuron, 87(5), 918โ€“931.

Scientific Accuracy

Bloomer is a research-accurate composition of the seven principles, not a vague "brain-inspired" wrapper:

  • Mathematical Fidelity โ€” SDR sparsity, Hopfield softmax retrieval, and Friston-style prediction error follow the published math.
  • Drift Bounds โ€” Every reconsolidation step is cosine-distance bounded so memories cannot silently warp past a configurable floor (default 0.7).
  • Schema Emergence โ€” Schemas are discovered by Louvain community detection over a co-firing matrix; no human ontology is required.
  • Salience Curve โ€” Pattern salience updates blend prediction error (30%), feedback (40%), novelty (10%), and co-firing (20%) at a 10% rate, bounded [0.1, 5.0].

See docs/sport-science/22_โ€ฆ through 26_โ€ฆ for the literature deep-dive that motivates each design choice.


๐Ÿ“Š What's In The Box

   bloomer/
     โ”œโ”€ core/
     โ”‚   โ”œโ”€ sdr.py              # P1 sparse distributed reps
     โ”‚   โ”œโ”€ hopfield.py         # P2 modern Hopfield retrieval
     โ”‚   โ”œโ”€ predictor.py        # P3 predict-then-correct loop
     โ”‚   โ”œโ”€ working_memory.py   # P4 Baddeley 7ยฑ2 buffer
     โ”‚   โ”œโ”€ schemas.py          # P5 co-firing โ†’ Louvain schemas
     โ”‚   โ”œโ”€ salience.py         # P6 Ebbinghaus + dopamine analog
     โ”‚   โ”œโ”€ reconsolidation.py  # P7 drift-bounded update
     โ”‚   โ”œโ”€ store.py            # SQLite WAL store
     โ”‚   โ”œโ”€ embedder.py         # BGE-M3 wrapper (auto MPS/CUDA/CPU)
     โ”‚   โ”œโ”€ ingest.py           # markdown chunker
     โ”‚   โ””โ”€ query.py            # the full retrieval pipeline
     โ”œโ”€ llm/
     โ”‚   โ”œโ”€ router.py           # BM_LLM env var โ†’ composer
     โ”‚   โ”œโ”€ claude_code.py      # Claude Code CLI composer
     โ”‚   โ”œโ”€ ollama_composer.py  # Ollama / Gemma 3
     โ”‚   โ””โ”€ openai_composer.py  # OpenAI (paid)
     โ”œโ”€ tests/                  # 137 tests across 11 suites
     โ”œโ”€ scripts/bench.py        # Bloomer vs cosine RAG benchmark
     โ”œโ”€ bin/bm                  # zero-config CLI wrapper
     โ”œโ”€ cli.py                  # argparse entry point
     โ””โ”€ pyproject.toml

๐Ÿงช Tests

Bloomer ships with 137 tests covering every principle, the store, the router, ingest, and end-to-end integration:

./bin/bm test                             # whole suite
./bin/bm test tests/test_p2_hopfield.py   # one module
./bin/bm test -k reconsolidation          # by keyword

Tests use real numpy ops where the math matters (P1, P2, P7) and fakes the LLM only at the composer boundary so the rest of the stack is exercised end-to-end.


๐Ÿ“œ Citation

If you use Bloomer in academic work, please cite:

@software{bloomer_benedictchen,
  title   = {Bloomer: Brain-Mimetic Memory for AI},
  author  = {Benedict Chen},
  year    = {2026},
  url     = {https://bitbucket.org/brainbloomer/bloomer},
  version = {0.1.0}
}

@article{ramsauer2020hopfield,
  title   = {Hopfield Networks is All You Need},
  author  = {Ramsauer, Hubert and others},
  year    = {2020},
  journal = {arXiv preprint arXiv:2008.02217}
}

@article{nader2000fear,
  title   = {Fear memories require protein synthesis in the amygdala for reconsolidation after retrieval},
  author  = {Nader, Karim and Schafe, Glenn E. and LeDoux, Joseph E.},
  year    = {2000},
  journal = {Nature},
  volume  = {406},
  number  = {6797},
  pages   = {722--726}
}

A machine-readable CITATION.cff is included at the repository root.


๐Ÿ“‹ License

Custom Non-Commercial License with Donation Requirements โ€” see LICENSE.

Free for academic, research, and personal use. Commercial use requires a separate license โ€” contact benedict@benedictchen.com.


๐ŸŽ“ About

Implemented by Benedict Chen โ€” bringing 70 years of memory neuroscience into a single Python package.

๐Ÿ“ง Contact: benedict@benedictchen.com ๐Ÿ™ GitHub: @benedictchen ๐Ÿชฃ Bitbucket: brainbloomer


๐Ÿ’ฐ Support This Work โ€” Choose Your Adventure!

Bloomer represents hundreds of hours of literature review, design, and implementation. If you find it valuable, please consider donating:

๐ŸŽฏ Donation Tier Goals (With Bloomer Humor)

โ˜• $5 โ€” Buy Benedict Coffee "Caffeine fires the locus coeruleus, which gates salience updates in my prefrontal cortex. In other words: coffee turns up the dopamine on my code-writing patterns." ๐Ÿ’ณ PayPal One-time | โค๏ธ GitHub Monthly

๐Ÿ• $25 โ€” Pizza Fund "Each slice consolidates into long-term memory via the hippocampus during the post-prandial nap. Bloomer's jobs daily runs while I dream." ๐Ÿ’ณ PayPal One-time | โค๏ธ GitHub Monthly

๐ŸŽง $100 โ€” Better Headphones for Deep Work "My working memory buffer (P4) decays at exp(-t / 30s). Noise cancellation extends the time constant." ๐Ÿ’ณ PayPal | โค๏ธ GitHub Sponsors

๐Ÿ–ฅ๏ธ $2,000 โ€” Workstation Upgrade "BGE-M3 embeddings on MPS are nice. BGE-M3 on a fresh M-series with 64GB unified memory is a religious experience." ๐Ÿ’ณ PayPal | โค๏ธ GitHub Sponsors

๐ŸŽ๏ธ $200,000 โ€” Lambo Fund "For testing retrieval latency at 200mph. Does the Hopfield softmax converge faster under acceleration?" ๐Ÿ’ณ PayPal Supercar | โค๏ธ GitHub Lifetime

๐Ÿ  $500,000 โ€” Memory Palace IRL "A real house with one room per principle. The hippocampus room has the bed (for consolidation). The cortex room has the desk. The amygdala room is just locked." ๐Ÿ’ณ PayPal Challenge | โค๏ธ GitHub Lifetime

โœˆ๏ธ $50,000,000 โ€” Private Jet "To test reconsolidation across time zones. Does crossing the date line drift-bound your memories below the cosine floor?" ๐Ÿ’ณ PayPal Aerospace | โค๏ธ GitHub Aviation

๐Ÿ๏ธ $100,000,000 โ€” Private Island "Where I'll build the world's largest biological memory: 8 billion human brains running Bloomer in parallel, all reconsolidating each other's memories. Civilization 2.0." ๐Ÿ’ณ PayPal Paradise | โค๏ธ GitHub Tropical

๐ŸŽช Monthly Subscription Tiers (GitHub Sponsors)

๐Ÿง  Engram Sponsor ($10/month) โ€” "Keeps the salience on this project above the Ebbinghaus floor." โค๏ธ Subscribe on GitHub

โšก Hopfield Patron ($25/month) โ€” "Funds the next attractor basin in the Bloomer roadmap." โค๏ธ Subscribe on GitHub

๐Ÿ† Reconsolidation Royalty ($100/month) โ€” "Every retrieval reconsolidates. Every sponsorship strengthens the trace." โค๏ธ Subscribe on GitHub

One-time donation? ๐Ÿ’ณ DONATE VIA PAYPAL

Ongoing support? โค๏ธ SPONSOR ON GITHUB

Can't decide? Why not both? ๐Ÿคทโ€โ™‚๏ธ

Every donation gets reconsolidated into my long-term memory. Your contribution literally rewires my engrams of gratitude.

P.S. โ€” If you fund the private island, the eight billion brains will all be named after their assigned schema community.


๐ŸŒŸ What the Community is Saying


@NeuroCoderQueen (412K followers) โ€ข 3 hours ago โ€ข (parody)

"okay but bloomer is actually unhinged in the best way ๐Ÿง  it's like someone read every neuroscience paper from 1885 to 2026 and was like 'what if we just IMPLEMENTED all of it' and now my AI remembers things STATE-DEPENDENTLY like a human?? the working memory buffer literally primes retrieval based on what you talked about 30 seconds ago. RAG could NEVER. also the reconsolidation thing where every retrieval slightly updates the memory is so brain-coded i cannot. 10/10 would let it remember me. โšก๐Ÿงฌ"

87.2K โค๏ธ โ€ข 19.4K ๐Ÿ”„ โ€ข 6.1K ๐Ÿคฏ

@HippocampalChaos (1.1M followers) โ€ข yesterday โ€ข (parody)

"installed bloomer at 3am. by 4am it had emerged a schema from my notes that i didn't know existed. by 5am i was crying. by 6am i was paypal-ing benedict. this is the most cracked memory library i've used and i don't even know what to do with this energy. the seven principles thing is sending me. why does an open source library have a private island fundraising tier ๐Ÿ˜ญ anyway. 1024-dim engrams forever."

142.6K โค๏ธ โ€ข 28.1K ๐Ÿ”„ โ€ข 11.3K ๐Ÿ˜ญ


Bloomer โ€” your AI's hippocampus, by the book.

๐Ÿง  Made with caffeine, dopamine, and an embarrassing amount of literature review.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bloomer-0.1.0.tar.gz (54.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bloomer-0.1.0-py3-none-any.whl (39.0 kB view details)

Uploaded Python 3

File details

Details for the file bloomer-0.1.0.tar.gz.

File metadata

  • Download URL: bloomer-0.1.0.tar.gz
  • Upload date:
  • Size: 54.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3+

File hashes

Hashes for bloomer-0.1.0.tar.gz
Algorithm Hash digest
SHA256 726a2bc2ae3c22353b542541d5eded44d4660e43653efc58102c8050485eb37b
MD5 d86f1333dc349ca5d0daf0ee7285761e
BLAKE2b-256 5a3f4293af952bb5058e293b9e0756fa53103125b09ec57bd319d64ddf61857b

See more details on using hashes here.

File details

Details for the file bloomer-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: bloomer-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 39.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3+

File hashes

Hashes for bloomer-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1089829fea82571437979a5f386af6c22ea7718d2ef8768840fcee24e8ef2bb6
MD5 bc7ea666e4a81ad2a330e6ff2236272f
BLAKE2b-256 92fbae175e4cd0b735e20493f0ac0811992ee998c4ffc22cbfe4404becd9222f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page