Skip to main content

GRKMemory (Graph Retrieve Knowledge Memory) - A semantic graph-based memory system for AI agents developed by MonkAI team

Project description

🧠 GRKMemory - Graph Retrieve Knowledge Memory

GRKMemory = Graph Retrieve Knowledge Memory

PyPI version Python 3.10+ License: MIT

GRKMemory é um sistema de memória semântica baseado em grafos para agentes de IA, desenvolvido pelo time MonkAI. Recuperação inteligente de conhecimento com economia de 95% em tokens.

🚀 Começando

1️⃣ Instalação

pip install grkmemory

2️⃣ Obter Token de Acesso

Para utilizar o GRKMemory, você precisa de um token fornecido pelo time MonkAI:

📧 Contato: contato@monkai.com.br
🌐 Site: www.monkai.com.br

3️⃣ Configurar Token

# Configurar como variável de ambiente
export GRKMEMORY_API_KEY="grk_seu_token_aqui"

# OpenAI (padrão)
export OPENAI_API_KEY="sua_openai_key"

# OU Azure OpenAI
export USE_AZURE_OPENAI="true"
export AZURE_OPENAI_API_KEY="sua_azure_key"
export AZURE_OPENAI_ENDPOINT="https://seu-recurso.openai.azure.com"
export AZURE_OPENAI_DEPLOYMENT="gpt-4o"
export AZURE_OPENAI_EMBEDDING_DEPLOYMENT="text-embedding-3-small"

4️⃣ Autenticar e Usar

from grkmemory import GRKMemory, GRKAuth, AuthenticatedGRK

# Autenticar com token MonkAI
auth = GRKAuth.from_env()  # Usa GRKMEMORY_API_KEY
print("✅ Autenticado!")

# Inicializar GRKMemory protegido
grk = GRKMemory()
secure = AuthenticatedGRK(grk, auth.get_current_token())

# Usar!
secure.save_conversation([
    {"role": "user", "content": "Olá!"},
    {"role": "assistant", "content": "Oi! Como posso ajudar?"}
])

results = secure.search("Olá")

🎯 Quick Start (Completo)

from grkmemory import GRKMemory, GRKAuth, AuthenticatedGRK
import os

# 1. Autenticar
api_key = os.getenv("GRKMEMORY_API_KEY")
auth = GRKAuth()
auth.authenticate(api_key)

# 2. Criar GRKMemory autenticado
grk = GRKMemory()
secure = AuthenticatedGRK(grk, api_key)

# 3. Salvar conversa
secure.save_conversation([
    {"role": "user", "content": "Vamos falar sobre Python"},
    {"role": "assistant", "content": "Claro! O que você quer saber?"}
])

# 4. Buscar memórias relevantes
results = secure.search("O que discutimos sobre Python?")

# 5. Chat com contexto de memória automático
response = secure.chat("Me conte sobre nossas discussões anteriores")

🔐 Autenticação

Token MonkAI

A autenticação é uma camada de proteção fornecida pelo time MonkAI. Todos os recursos requerem um token válido.

Permissão Descrição
read Buscar e consultar memórias
write Salvar novas memórias
admin Gerenciamento completo

Métodos de Autenticação

from grkmemory import GRKAuth

# Método 1: Via variável de ambiente (recomendado)
auth = GRKAuth.from_env()  # Usa GRKMEMORY_API_KEY

# Método 2: Diretamente
auth = GRKAuth()
auth.authenticate("grk_seu_token")

# Verificar permissões
print(f"Pode ler: {auth.check_permission('read')}")
print(f"Pode escrever: {auth.check_permission('write')}")

⚠️ Importante: Tokens são fornecidos exclusivamente pelo time MonkAI.

⚙️ Configuração

from grkmemory import GRKMemory, MemoryConfig

config = MemoryConfig(
    model="gpt-4o",
    memory_file="minhas_memorias.json",
    enable_embeddings=True,
    background_memory_method="graph",  # 'graph', 'embedding', 'tags', 'entities', 'hybrid'
    background_memory_limit=5,
    background_memory_threshold=0.3,
    storage_format="json",   # 'json' (padrão) ou 'toon'
    output_format="json"     # 'json', 'toon', 'text' ou 'raw'
)

grk = GRKMemory(config=config)

☁️ Azure OpenAI

GRKMemory suporta Azure OpenAI nativamente. Configure via variáveis de ambiente ou código:

Via Variáveis de Ambiente

export USE_AZURE_OPENAI="true"
export AZURE_OPENAI_API_KEY="sua-api-key"
export AZURE_OPENAI_ENDPOINT="https://seu-recurso.openai.azure.com"
export AZURE_OPENAI_DEPLOYMENT="gpt-4o"
export AZURE_OPENAI_EMBEDDING_DEPLOYMENT="text-embedding-3-small"
export AZURE_OPENAI_API_VERSION="2024-02-01"  # opcional

Via Código

from grkmemory import GRKMemory, MemoryConfig

# Configuração Azure OpenAI
config = MemoryConfig(
    use_azure=True,
    api_key="sua-azure-api-key",
    azure_endpoint="https://seu-recurso.openai.azure.com",
    azure_deployment="gpt-4o",
    azure_embedding_deployment="text-embedding-3-small",
    azure_api_version="2024-02-01"
)

grk = GRKMemory(config=config)

Tabela de Configurações Azure

Variável Config Descrição
USE_AZURE_OPENAI use_azure Ativar Azure (true/false)
AZURE_OPENAI_API_KEY api_key Chave da API Azure
AZURE_OPENAI_ENDPOINT azure_endpoint URL do recurso Azure
AZURE_OPENAI_DEPLOYMENT azure_deployment Nome do deployment (chat)
AZURE_OPENAI_EMBEDDING_DEPLOYMENT azure_embedding_deployment Nome do deployment (embeddings)
AZURE_OPENAI_API_VERSION azure_api_version Versão da API (default: 2024-02-01)

📦 Formatos de Armazenamento (JSON vs TOON)

GRKMemory suporta dois formatos de serialização:

Formato Vantagem Uso Recomendado
JSON Parsing 27x mais rápido Armazenamento (padrão)
TOON 25% menos tokens Contexto para LLM

Instalando TOON (opcional)

pip install toon_format

Estratégia Híbrida (Recomendada)

from grkmemory import MemoryRepository

# JSON para armazenamento (rápido) + TOON para LLM (economia de tokens)
repo = MemoryRepository(
    memory_file="memorias.json",
    storage_format="json",      # Parsing rápido
    output_format="toon"        # 25% menos tokens para LLM
)

# Buscar e formatar para LLM
results = repo.search("Python")
context = repo.format_for_llm(results)  # Retorna em TOON (~25% menos tokens)

Comparando Formatos

# Estimar economia de tokens
estimates = repo.get_token_estimate(results)
print(estimates)
# {'json': 689, 'toon': 512, 'savings_toon_vs_json': '25.7%'}

✂️ output_format="raw" — Modo enxuto de tokens

Quando o consumidor downstream só precisa do conteúdo da resposta (a mensagem do assistant) e não dos metadados de cada memória (summary, tags, entities, sentiment, etc.), use output_format="raw". Devolve apenas o content do primeiro turno de assistant de cada conversa recuperada, separado por \n\n---\n\n.

repo = MemoryRepository(
    memory_file="memorias.json",
    output_format="raw",
)

results = repo.search("capital da França")
context = repo.format_for_llm(results)
# "A capital da França é Paris."
# (sem JSON wrapper, sem metadados, sem labels)

Benchmark (issue #13)

47k chars de snapshot, 30 queries, gpt-4.1-mini + judge gpt-4.1 (rubrica 0–3):

Formato input tokens judge recall vs json
json (default) 1.705 1.47 igual
toon 1.475 1.47 igual
text 252 1.00 cai (perde conversation)
raw 640 1.47 igual

~2.7× mais barato que json com recall idêntico em consultas factuais. Use quando o LLM downstream só precisa do que o assistente respondeu antes; use json/toon quando o LLM precisa raciocinar sobre tags/sentiment/confidence.

🔍 preserve_identifiers — Recall em corpus pequeno/identifier-dense

O KnowledgeAgent resume cada conversa antes de embeddar, o que é ótimo para chat narrativo, mas descarta tokens identificadores (semver v1.6.0, issue refs #42, env vars OPENAI_API_KEY, key=value floor_value=30) — justamente o que consultas factuais matcham. Em corpus pequeno/identifier-dense (<~95k tokens), cosine ingênuo sobre chunks crus chega a vencer o GRKMemory em 0.3–1.1 pontos de judge nessas consultas. Acima de ~95k tokens o GRKMemory volta a ganhar (a discriminação semântica supera o "imposto" da perda de surface).

A solução é um dual-index opt-in:

from grkmemory import MemoryConfig, GRKMemory

cfg = MemoryConfig(
    preserve_identifiers=True,  # default False — opt-in, sem custo se off
    # identifier_regex=...      # opcional; default cobre semver/#issue/SCREAMING_SNAKE/key_=val
    background_memory_method="hybrid",  # max-pool sobre os 2 embeddings
)

grk = GRKMemory(config=cfg)
grk.save_conversation([
    {"role": "user", "content": "qual a última versão?"},
    {"role": "assistant", "content": "Liberamos v1.6.0 no PyPI ontem."},
])

# Consulta factual com surface token — o embedding do summary largou "v1.6.0",
# mas o embedding_identifier preservou. O hybrid recupera.
results = grk.search("v1.6.0")

O que muda no schema

Quando ligado, cada memória ganha 2 campos:

  • identifiers: List[str] — tokens extraídos do conversation[assistant].content
  • embedding_identifier: List[float] — vetor sobre {summary} {identifiers}

search(method="hybrid") calcula max(cos(query, embedding), cos(query, embedding_identifier)) por memória. Custo extra: 1 chamada de embedding adicional por save() (zero se o regex não casa nada nessa memória). Default off — backwards compatible.

Padrões cobertos pelo regex default

Padrão Exemplo
semver v1.6.0, 0.47.0-rc1
issue ref #42, #300
SCREAMING_SNAKE OPENAI_API_KEY, RUN_LLM_E2E
lower_snake=value floor_value=30, top_k=5

Customizável via identifier_regex ou env IDENTIFIER_REGEX.

Convertendo entre Formatos

# Exportar para TOON
repo.export("backup.toon", format="toon")

# Converter armazenamento para TOON
repo.convert_storage_format("toon")

👥 Multi-tenant (user_id / session_id)

É possível isolar memórias por usuário e/ou sessão usando os parâmetros opcionais user_id e session_id em save_conversation e search. O armazenamento continua em um único arquivo; o filtro é aplicado na busca.

# Salvar conversa para um usuário/sessão
grk.save_conversation(
    [{"role": "user", "content": "Olá!"}, {"role": "assistant", "content": "Oi!"}],
    user_id="user_123",
    session_id="sess_abc"
)

# Buscar apenas memórias desse usuário
results = grk.search("Olá", user_id="user_123")

# Ou apenas dessa sessão
results = grk.search("Olá", session_id="sess_abc")

# Chat e save também aceitam user_id/session_id
response = grk.chat("O que discutimos?", user_id="user_123")

Sem user_id/session_id, o comportamento é o mesmo de antes (todas as memórias são consideradas).

⚡ API assíncrona

Para uso em código assíncrono (ex.: AtendentePro) sem bloquear o event loop, use os métodos *_async, que executam a lógica síncrona em thread (ex.: asyncio.to_thread em Python 3.9+):

import asyncio
from grkmemory import GRKMemory

grk = GRKMemory()

async def main():
    results = await grk.search_async("IA")
    await grk.save_conversation_async([
        {"role": "user", "content": "Olá"},
        {"role": "assistant", "content": "Oi!"}
    ])
    response = await grk.chat_async("O que discutimos?")

asyncio.run(main())

Disponíveis: search_async, save_conversation_async, chat_async, chat_with_history_async. Com AuthenticatedGRK: search_async, save_conversation_async, chat_async (com checagem de permissão).

🔓 Modo Offline (Sem Token)

O modo offline usa MemoryRepository com enable_embeddings=False e serve como backend sem API key para testes ou ambientes restritos, usando apenas tags, entities e grafo semântico (sem embeddings). Você pode usar o MemoryRepository sem token/API key quando embeddings estão desabilitados:

from grkmemory import MemoryRepository

# Modo offline - não precisa de API key
repo = MemoryRepository(
    memory_file="memories.json",
    enable_embeddings=False  # ← Chave: desabilitar embeddings
)

# Funcionalidades disponíveis sem token:
# ✅ Salvar memórias
repo.save({
    "summary": "Conversa sobre Python",
    "tags": ["python", "programação"],
    "entities": ["Python"],
    "key_points": ["Linguagem interpretada"]
})

# ✅ Buscar por tags
results = repo.search("python", method="tags")

# ✅ Buscar por entities
results = repo.search("Python", method="entities")

# ✅ Buscar por grafo (sem embeddings)
results = repo.search("programação", method="graph")

# ❌ Busca por embedding requer API key
# results = repo.search("query", method="embedding")  # Retorna vazio sem API key

Nota: GRKMemory e MemoryConfig requerem API key. Apenas MemoryRepository com enable_embeddings=False funciona sem token.

💾 Salvando Conversas em JSON

O GRKMemory salva automaticamente as conversas em um arquivo JSON estruturado:

Estrutura do JSON

{
  "sessoes": [
    {
      "id": "sess_abc123",
      "timestamp": "2025-01-09T12:00:00",
      "summary": "Discussão sobre Python e IA",
      "tags": ["python", "ia", "programação"],
      "entities": ["Python", "OpenAI", "GPT"],
      "concepts": ["machine learning", "api"],
      "messages": [
        {"role": "user", "content": "..."},
        {"role": "assistant", "content": "..."}
      ]
    }
  ]
}

Estrutura do TOON (Token-Optimized Object Notation)

O mesmo conteúdo em TOON ocupa ~25% menos tokens, ideal para contexto de LLM:

sessoes[1]:
  - id: sess_abc123
    timestamp: "2025-01-09T12:00:00"
    summary: Discussão sobre Python e IA
    tags[3]: python,ia,programação
    entities[3]: Python,OpenAI,GPT
    concepts[2]: machine learning,api
    messages[2]{role,content}:
      user,Vamos falar sobre Python
      assistant,Claro! O que você quer saber?

Nota: TOON elimina chaves, colchetes e aspas redundantes, compactando listas e tabelas em notação posicional. Instale com pip install toon_format.

Usando o MemoryRepository diretamente

from grkmemory import MemoryRepository

# Inicializar repositório
repo = MemoryRepository(memory_file="minhas_memorias.json")

# Salvar memória estruturada
memoria = {
    "summary": "Conversa sobre Python",
    "tags": ["python", "programação"],
    "entities": ["Python", "VS Code"],
    "concepts": ["sintaxe", "bibliotecas"],
    "messages": [
        {"role": "user", "content": "Como instalar Python?"},
        {"role": "assistant", "content": "Baixe em python.org..."}
    ]
}
repo.save(memoria)

# Buscar memórias
resultados = repo.search("Python", method="tags")

📊 Métodos de Busca

Método Descrição
graph Grafo semântico (recomendado)
embedding Similaridade vetorial
tags Busca por tags
entities Busca por entidades
# Busca por grafo semântico
results = secure.search("IA", method="graph")

# Busca por embedding
results = secure.search("machine learning", method="embedding")

📈 Estatísticas

# Estatísticas gerais
stats = secure.get_stats()
print(f"Total de memórias: {stats['total_memories']}")

# Estatísticas do grafo
graph_stats = secure.get_graph_stats()
print(f"Nós: {graph_stats['total_nodes']}")
print(f"Arestas: {graph_stats['total_edges']}")

📁 Estrutura do Projeto

GRKMemory/
├── grkmemory/              # 📦 Pacote principal
│   ├── core/               # Classes principais
│   ├── memory/             # Repositório de memória
│   ├── graph/              # Grafo semântico
│   ├── auth/               # Autenticação
│   └── utils/              # Utilitários
├── examples/               # 💡 Exemplos de uso
├── papers/                 # 📄 Documentação técnica
└── README.md

📚 Exemplos

Veja a pasta examples/ para exemplos completos:

Exemplo Descrição
01_basic_usage.py Uso básico
02_custom_config.py Configuração personalizada
03_chatbot_with_memory.py Chatbot com memória
04_graph_analysis.py Análise do grafo
05_batch_processing.py Processamento em lote
06_authentication.py Uso com autenticação
07_storage_formats.py Formatos de armazenamento (JSON/TOON)
08_azure_openai.py Integração com Azure OpenAI
09_multi_tenant.py Multi-tenant com user_id e session_id
10_async_usage.py Uso da API assíncrona (search_async, chat_async)

🔬 Performance

Métrica Context Window GRKMemory
Tokens/query ~50.000 ~2.500
Economia - 95%
Precisão Variável 95%
Velocidade Lenta 10x mais rápido

🏅 Certificado de Qualidade

O GRKMemory v1.3.0 foi auditado e certificado pelo Claude AI Quality Auditor (Anthropic) nos pilares de Segurança, Usabilidade e Escalabilidade.

Pilar Score Status
Segurança 8.5 / 10 Aprovado
Usabilidade 9.0 / 10 Excelente
Escalabilidade 7.8 / 10 Aprovado
Score Final 8.4 / 10 Certificado

Serial Number: CQC-03E6B8B9-883CEBB9-4B6C1D38-672D37CF

Verificar autenticidade:

echo -n "GRKMemory|1.3.0|MonkAI|ArthurVaz|2026-03-01|CLAUDE-QUALITY-AUDIT" | shasum -a 256

Veja o relatório completo para detalhes da auditoria.

📞 Contato

Para obter seu token de acesso ou suporte:

📧 Email: contato@monkai.com.br
🌐 Site: www.monkai.com.br

📄 Licença

MIT License - veja LICENSE

👨‍💻 Autor

Arthur Vaz - MonkAI

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

grkmemory-1.8.0-cp313-cp313-win_amd64.whl (660.4 kB view details)

Uploaded CPython 3.13Windows x86-64

grkmemory-1.8.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (4.9 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

grkmemory-1.8.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl (4.8 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

grkmemory-1.8.0-cp313-cp313-macosx_10_13_x86_64.whl (772.6 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

grkmemory-1.8.0-cp313-cp313-macosx_10_13_universal2.whl (1.5 MB view details)

Uploaded CPython 3.13macOS 10.13+ universal2 (ARM64, x86-64)

grkmemory-1.8.0-cp312-cp312-win_amd64.whl (663.1 kB view details)

Uploaded CPython 3.12Windows x86-64

grkmemory-1.8.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (4.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

grkmemory-1.8.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl (4.8 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

grkmemory-1.8.0-cp312-cp312-macosx_10_13_x86_64.whl (776.2 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

grkmemory-1.8.0-cp312-cp312-macosx_10_13_universal2.whl (1.5 MB view details)

Uploaded CPython 3.12macOS 10.13+ universal2 (ARM64, x86-64)

grkmemory-1.8.0-cp311-cp311-win_amd64.whl (676.9 kB view details)

Uploaded CPython 3.11Windows x86-64

grkmemory-1.8.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (4.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

grkmemory-1.8.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl (4.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

grkmemory-1.8.0-cp311-cp311-macosx_10_9_x86_64.whl (779.5 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

grkmemory-1.8.0-cp311-cp311-macosx_10_9_universal2.whl (1.5 MB view details)

Uploaded CPython 3.11macOS 10.9+ universal2 (ARM64, x86-64)

grkmemory-1.8.0-cp310-cp310-win_amd64.whl (673.6 kB view details)

Uploaded CPython 3.10Windows x86-64

grkmemory-1.8.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (4.6 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

grkmemory-1.8.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl (4.6 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

grkmemory-1.8.0-cp310-cp310-macosx_10_9_x86_64.whl (783.5 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

grkmemory-1.8.0-cp310-cp310-macosx_10_9_universal2.whl (1.5 MB view details)

Uploaded CPython 3.10macOS 10.9+ universal2 (ARM64, x86-64)

File details

Details for the file grkmemory-1.8.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: grkmemory-1.8.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 660.4 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for grkmemory-1.8.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 97a71b309a8abe92230efc4fb40d9ef6c03b8c99af1e9b7fbd5cdb628929ced1
MD5 8bce5783fe33db21124947ee496967d7
BLAKE2b-256 213f140f8fe6d148333b592accac1279c76776ac2168d7bc654a638bcb6a681b

See more details on using hashes here.

File details

Details for the file grkmemory-1.8.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for grkmemory-1.8.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 5615f0fc81a91893f9955c23e027b318835418ff18100846d953ff8fb956ac5a
MD5 38ead3d0a87a2e0c55f21e7532e20d7b
BLAKE2b-256 4a1ec681a35d1f0db06407b0ec0502322ae7c8adf90bcfa9378e7abd5621ec1e

See more details on using hashes here.

File details

Details for the file grkmemory-1.8.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl.

File metadata

File hashes

Hashes for grkmemory-1.8.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 c9fac44dda6d99a9e17e58dc5489440df0cd9ca83f3f9534528f4bc27cb69b83
MD5 999605e09b7b294c52981ef6c90d8a87
BLAKE2b-256 14752ee639b177708f7c059f1f33be9ea018ef17847ddcc009a2c0de17291f9c

See more details on using hashes here.

File details

Details for the file grkmemory-1.8.0-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for grkmemory-1.8.0-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 e5a9b5237199920bd4e6a6517a58d70ab211f684a674c2582d11c296174678d0
MD5 35cb49bba8cf8df4de95349cf122316b
BLAKE2b-256 68867080fb7e5af610f6a34dc95131c6a38c3ed4cdc275a41986ac93836b4d4b

See more details on using hashes here.

File details

Details for the file grkmemory-1.8.0-cp313-cp313-macosx_10_13_universal2.whl.

File metadata

File hashes

Hashes for grkmemory-1.8.0-cp313-cp313-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 6d4289422d0fb7ada145675a2720e1cf2007d566b1723d7c6c2591d2df5c70d9
MD5 f405e97f8546267a34721890d1c8c2c8
BLAKE2b-256 d0d39f39d754ecde4525d3a8c5abdbc884f6548384663f78e8678add4b11caff

See more details on using hashes here.

File details

Details for the file grkmemory-1.8.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: grkmemory-1.8.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 663.1 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for grkmemory-1.8.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 57efcaefb89c79921741b0b9992b92a5c65cf0a183aa0857ad6c96f3dab3fb4a
MD5 4d4cd97f7b028a349b3a5ad907f80810
BLAKE2b-256 e1f04856eba708e51a0daa8d5859e9fac37091044e5d308b591589b748126949

See more details on using hashes here.

File details

Details for the file grkmemory-1.8.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for grkmemory-1.8.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 0a275640d01d8c0f6138800dfa74b8b49b7598046976fe84912ead44cbf72d1f
MD5 6d6f115d455d098743062f36da84e28f
BLAKE2b-256 fd819d22407d1ddc311c69a75fcfa61b008361f54329df5e6693e763dcc1b8df

See more details on using hashes here.

File details

Details for the file grkmemory-1.8.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl.

File metadata

File hashes

Hashes for grkmemory-1.8.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 cc9faec327be2a87681f2fd5a3233508981a966a03f293bc2000e38b2225467b
MD5 5b0ca3981780ba3135df6f373201985e
BLAKE2b-256 aa48555e73f0141ca156191e548521b10330b2b418fc7371c1b2bdd0be478189

See more details on using hashes here.

File details

Details for the file grkmemory-1.8.0-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for grkmemory-1.8.0-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 12bebb5fc4d7fbc9101e162f0b3e11d5db43e9d6023904ac7ded673acbe6368e
MD5 6d78b0b138420a3294c86f09b9c75450
BLAKE2b-256 f9c509726f9bfe1df5e1511619293121dcf3c1e7050fe41f75e2dc7e669fcf49

See more details on using hashes here.

File details

Details for the file grkmemory-1.8.0-cp312-cp312-macosx_10_13_universal2.whl.

File metadata

File hashes

Hashes for grkmemory-1.8.0-cp312-cp312-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 0f0e13a4fc850a51da90c7557df5943111a77e362bb1f1bd3ef44134eca1d440
MD5 8c99a8f2ac75c491191d03c4b0b393a6
BLAKE2b-256 c4e0d8ea1088c5a0cfabc87db993a32c53a69f15bce8fa43417b1d3c36933446

See more details on using hashes here.

File details

Details for the file grkmemory-1.8.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: grkmemory-1.8.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 676.9 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for grkmemory-1.8.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 0aefa87808a69e27582a81228b6292c4a3c6ec8e1b7d3ac41de1df32db6d6d19
MD5 8b42431bba89b10060242481075bafe7
BLAKE2b-256 a9ad6bda0444c79153d849345e6be1fa085a56dc8e5ee46b9146ed6237193c4a

See more details on using hashes here.

File details

Details for the file grkmemory-1.8.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for grkmemory-1.8.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 fb2b3e04a5072de8667a27f3270c379bd4fb2c20c3d5f503152672fd9a999a80
MD5 fb6970cbc7ba3014435a40876dab783a
BLAKE2b-256 a7a3f395bd6c923a83eec54a850eff7675c304666c40cfc0c3314764be9429f3

See more details on using hashes here.

File details

Details for the file grkmemory-1.8.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl.

File metadata

File hashes

Hashes for grkmemory-1.8.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 63764bc14feba631382a940e174958cd3f6f04ff6137197f53cf654454aabfa6
MD5 6691964b3641ce545db833a10e7d0161
BLAKE2b-256 137447073fd5b0be6dd0bb3479f042517abd6ed909863a838ac31e992f9c87cd

See more details on using hashes here.

File details

Details for the file grkmemory-1.8.0-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for grkmemory-1.8.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 4cecfc407e074e9b1dd660e567805cd06fe5bf4a9fcc8bb0526fd9cdd21e2a9a
MD5 9b2812e5a825e2d9988f9aa1cc7fd00d
BLAKE2b-256 7f8d4c3767955435a27c2ca7961fb93c3ef99534815b316f2f2c7ccaa20e3353

See more details on using hashes here.

File details

Details for the file grkmemory-1.8.0-cp311-cp311-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for grkmemory-1.8.0-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 ea8da0caa1ca7cdfca09b596f2232d9a52f1848277a104db4e548d010f8c938b
MD5 7221864ff4f434e1dc46cb9829f45056
BLAKE2b-256 c71702098126db155fc7c1161ec55e3db7db783df5af39050789ba7f5d97ec70

See more details on using hashes here.

File details

Details for the file grkmemory-1.8.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: grkmemory-1.8.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 673.6 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for grkmemory-1.8.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 e76f73eb218efd2bf2e0d199f21ed7f0a58bcf3d53c1561f5683f53d10634f94
MD5 94afe35ce3586e53eeb88e4430c8c53c
BLAKE2b-256 ec8cc912dcad368a76435a313659632968f0e1610e22d1a0ade19cbdda2f888a

See more details on using hashes here.

File details

Details for the file grkmemory-1.8.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for grkmemory-1.8.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 a6689844a8e804a0a70592df95a59194d7265982030d7fe21a2eebeafed8c5ad
MD5 eea972a9d08f271d289f3339d2da94fb
BLAKE2b-256 c66d2343a3c4e71cf54d065bffb9bbf7fcaa060766d81e48a52ceaf84264c159

See more details on using hashes here.

File details

Details for the file grkmemory-1.8.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl.

File metadata

File hashes

Hashes for grkmemory-1.8.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 992a575f39f9863e36a9598160c8cc3b20e31155a2cb4b87d27057cbabe96eb4
MD5 92a9f2f7731e9fb24fbb3318900a199e
BLAKE2b-256 81ab5bf8247f389bb77a578a9bf6f8b4e732cae78478f57175e42676dcb94325

See more details on using hashes here.

File details

Details for the file grkmemory-1.8.0-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for grkmemory-1.8.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 598009b20213b48bc6c7ebe855db3636ecef0a355b6c81a0124daca41f0624db
MD5 58abf9eecbbbb3b07948e1103abd95a9
BLAKE2b-256 0d65c252d3ffdf2df3f186be81e047fa152ce70fcac3cc02ed3c27ef84989298

See more details on using hashes here.

File details

Details for the file grkmemory-1.8.0-cp310-cp310-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for grkmemory-1.8.0-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 a64f761a80be434440c427cd39bc2a7ea46ad3be4fb9f499d63714490902fad5
MD5 6fa3cd724983578e3187bd8c9c590e9c
BLAKE2b-256 1b75f92f6598c484f6bd856f2c9aea70225c1993934264fca3f33561f80dbe26

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