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)

🗄️ Backends de Armazenamento (file / postgres)

O armazenamento e a busca vetorial vivem atrás de uma interface StorageBackend plugável. O default (file) mantém o comportamento histórico — um único arquivo plano (JSON/TOON, opcionalmente criptografado) com índice FAISS em memória. Ele é seguro apenas em processo único: dois processos compartilhando o mesmo MEMORY_FILE competem (último a escrever vence). Para um servidor com memória que precisa escalar horizontalmente, externalize o storage para remover esse acoplamento a instância-única + volume persistente.

Backend Concorrência Quando usar
file (default) processo único dev local, single-instance, sem nova dependência
postgres entre processos (transacional) produção horizontal/stateless

Seleção via ambiente (ou MemoryConfig):

# Default — nada muda
GRKMEMORY_STORAGE_BACKEND=file

# pgvector (requer o extra grkmemory[postgres])
GRKMEMORY_STORAGE_BACKEND=postgres
GRKMEMORY_POSTGRES_DSN=postgresql://user:pass@host:5432/db
GRKMEMORY_EMBEDDING_DIM=1536   # dimensão do embedding (default 1536)
pip install "grkmemory[postgres]"   # instala psycopg + pgvector

A biblioteca base nunca importa psycopg — o PostgresVectorBackend é resolvido sob demanda, então quem usa o backend file não ganha dependência nova. O backend externo cria a tabela + índice ANN HNSW (cosseno) na primeira inicialização. O grafo semântico continua sendo reconstruído em memória a partir dos registros (v1 não persiste arestas no banco).

Também é possível injetar um backend diretamente:

from grkmemory.memory.repository import MemoryRepository
from grkmemory.memory.backends import PostgresVectorBackend

backend = PostgresVectorBackend(dsn="postgresql://...", embedding_dim=1536)
repo = MemoryRepository(backend=backend)

☁️ 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 / tenant_id)

É possível isolar memórias por usuário, sessão e/ou tenant usando os parâmetros opcionais user_id, session_id e tenant_id em save_conversation, search, chat, get_stats e get_top_memories. O armazenamento continua em um único arquivo/store; 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).

Isolamento por tenant (stores compartilhados)

Use tenant_id para garantir que dois tenants com o mesmo user_id em um store compartilhado nunca vejam as memórias um do outro. A chave efetiva de isolamento é tenant × user × session.

from grkmemory import GRKMemory, MemoryConfig

# Uma instância GRKMemory por tenant (recomendado para stores compartilhados)
grk = GRKMemory(MemoryConfig(tenant_id="tenant_x"))
grk.save_conversation(msgs, user_id="guest")   # armazenado sob tenant_x
grk.search("pedidos", user_id="guest")          # escopo restrito a tenant_x

# Ou sobrescrever por chamada
grk.search("pedidos", user_id="guest", tenant_id="other_tenant")

tenant_id=None (padrão) preserva o namespace global existente — nenhum deploy atual precisa mudar. A variável GRKMEMORY_TENANT_ID define o padrão no config via env.

⚡ 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.11.1-cp313-cp313-win_amd64.whl (802.7 kB view details)

Uploaded CPython 3.13Windows x86-64

grkmemory-1.11.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (6.0 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

grkmemory-1.11.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl (5.9 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

grkmemory-1.11.1-cp313-cp313-macosx_10_13_x86_64.whl (957.0 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

grkmemory-1.11.1-cp313-cp313-macosx_10_13_universal2.whl (1.9 MB view details)

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

grkmemory-1.11.1-cp312-cp312-win_amd64.whl (810.4 kB view details)

Uploaded CPython 3.12Windows x86-64

grkmemory-1.11.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (6.1 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

grkmemory-1.11.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl (6.0 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

grkmemory-1.11.1-cp312-cp312-macosx_10_13_x86_64.whl (960.8 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

grkmemory-1.11.1-cp312-cp312-macosx_10_13_universal2.whl (1.9 MB view details)

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

grkmemory-1.11.1-cp311-cp311-win_amd64.whl (822.0 kB view details)

Uploaded CPython 3.11Windows x86-64

grkmemory-1.11.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (6.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

grkmemory-1.11.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl (6.1 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

grkmemory-1.11.1-cp311-cp311-macosx_10_9_x86_64.whl (963.7 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

grkmemory-1.11.1-cp311-cp311-macosx_10_9_universal2.whl (1.9 MB view details)

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

grkmemory-1.11.1-cp310-cp310-win_amd64.whl (817.5 kB view details)

Uploaded CPython 3.10Windows x86-64

grkmemory-1.11.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (5.7 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

grkmemory-1.11.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl (5.7 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

grkmemory-1.11.1-cp310-cp310-macosx_10_9_x86_64.whl (968.0 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

grkmemory-1.11.1-cp310-cp310-macosx_10_9_universal2.whl (1.9 MB view details)

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

File details

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

File metadata

  • Download URL: grkmemory-1.11.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 802.7 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.11.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 bce753891914dedac165bee52852055a4132c945f71c74deec9dbb8afd2df39c
MD5 622a5845981e6bb9aa65bd3680bbd47d
BLAKE2b-256 263d7b9e09f9c1ebd2a9e1bbc35cba6818adef22c0d277aedb0ee2288dca85af

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for grkmemory-1.11.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 4360da7d23e76337041b25f63730652950185356c19eeb8f62ad72bb37f2c379
MD5 fba53b009969a750ba493cf7feda9b57
BLAKE2b-256 98f4ef17847013688a6bba38cbd6cb0502588a824830d1ff300ebb0b9879211e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for grkmemory-1.11.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 df48eec472c738738196b8e206494bf19427d99dcbf737f968f848e47eac9c44
MD5 7c7871b599ca54bb74e12b6ace05bfd7
BLAKE2b-256 b6bdb57d2928e2c46db910f4a6bd612f59139e09593c9c144ba864e8f7167971

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for grkmemory-1.11.1-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 d2f022e0c6aaf403016da2a758ccb821e896c9f6d55402e3a8480af6fd0fd6c7
MD5 7a877301b977b17ebacdf3b2f93e1a37
BLAKE2b-256 be5a2b22fc3164402f165cf868cc8a1840f0d3241e7b17f48b127b8deef89577

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for grkmemory-1.11.1-cp313-cp313-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 a4d16e0fff4e31a6de4c2d232632bb8d071dc2c505ff4d5ee11c03e26002ced2
MD5 62e5e2b90ff72e65314501904fdfeb0f
BLAKE2b-256 1c959aa7a138309c5674d37bd9ec3ead8741e83cf56f16a2bc7bae00783826e2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: grkmemory-1.11.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 810.4 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.11.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 8c0459f86b4a37226a1576489df9e2e4aaab206d79f17c979b2838b7ee628495
MD5 fd2957e901253f503feb2b4f540c648f
BLAKE2b-256 7d62641ce903b244b6e0e77038e97e92a972ee3e2f28b52bdd4ccf7fb22b769b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for grkmemory-1.11.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 37f782138a06170917f31d5eeeef109a31b4ac441366edfecac02b4c06612f00
MD5 afa03bb86ad9501dddd401098b4fff61
BLAKE2b-256 3a228df365b6c3a0c0999eff04a6184a41f38dec5c7de5c3880885eef399943a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for grkmemory-1.11.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 0759f3be23c5414707c9bd9a9a92f629ca44c5a1eb626a7971a50e8bc6409424
MD5 a94c81060ee1e54d902add079c6a1ac9
BLAKE2b-256 1dfee659b911f6daec7b8dd5874ff75bff1aaf217feb9de247e18eb0cf74c1d3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for grkmemory-1.11.1-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 a1eb403a60531564d7eec977b07a1429977e4ebd4e6cb6ba1bf3f26c8a3f9051
MD5 1c98a2bc5544868bf85f0dd1d0dec73a
BLAKE2b-256 c32371bab85e269873a2ab9e6a4e213d386c012ea5e62d9babe04d71f94a9082

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for grkmemory-1.11.1-cp312-cp312-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 c923db46a44cec82080473a9dbebd6328e0202c7da5a6a7b7d62b27750220200
MD5 f639136cdd3e2d1704915a8bec1a8aec
BLAKE2b-256 77ea256649cfc75d0d3413b79b69d623f48993b96e569aa6b1273b6c63695a78

See more details on using hashes here.

File details

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

File metadata

  • Download URL: grkmemory-1.11.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 822.0 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.11.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 08987bf0197a9635635d32d061e5e85f6050d407728cbe0f870b07001f4f6596
MD5 e71f697bdad07243cd8913ce7e06fcd9
BLAKE2b-256 5654feec2d2648808aa961f19da72d76573505404d9f31adf383b3df8261af4d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for grkmemory-1.11.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 b6602205a907eb01d909e284bfe8bbd97813b89afe35015a46a62c32b22cbf34
MD5 e7a8565a9161d814adb45324ffcb6cb7
BLAKE2b-256 26cb9aecfc07847a491512993aaeb43a7de5bdeeec7d5165488bf8936964e041

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for grkmemory-1.11.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 c11a5e7af2fdeb7fae5af4ac9392c28531716b6ef2546672222a92a9e0562365
MD5 c3e6aae8272ff937204cc8f5e75421b8
BLAKE2b-256 62ffe473072fdf597fca5ce305b4a5f1bc64bf1754e70748b5e30026f52895a5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for grkmemory-1.11.1-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 648c27a32c4be86fffaa93e76371a83968073e0d32ceed768cd49ac64006ffa3
MD5 28fcb3d65bf8acd05c6431eb567bb67d
BLAKE2b-256 3dc4df45622c552050ba14c6e903f7b3dd6e1d6e02c720de181d8ca88701830a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for grkmemory-1.11.1-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 4820664235829207dabc79880aa5518aa470004a56235e9b5e5faefa46c25d66
MD5 ca1166d1c60e56714806d2ebb082b45c
BLAKE2b-256 c93a12e041db3146121a2605baaf09369430353564bc4dfa62d9b3b12183390e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: grkmemory-1.11.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 817.5 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.11.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 66926b3cc4d149b37f44e9eae9e464260820d73dc6de700f469afd69aa3aeb32
MD5 9356af68820d88d302703a9a6f2e1574
BLAKE2b-256 17931fd9bf85584380e0ed7eff607c472a084bf1661064407cfa6fae351c45e7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for grkmemory-1.11.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 a2fefe955723a44bbe0085bbcdb527b3727c9b358fbb1dbde404caa42abd5826
MD5 4feb19274dc975f80d18879ececd61b8
BLAKE2b-256 b004fa4397b231c8f29dc80cf330c7a62129b5639311da3f0d2ae4bd76a4763c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for grkmemory-1.11.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 e2b5fd1f310aea2f4e2b18ccbb634a314fe5f42ab543d7e9288d4b9442a734c5
MD5 9793c7ff9812e28d00c4cb434470d145
BLAKE2b-256 0b9cc8236ec9c7ff7bb3800dc173cdacaf9b20cad57d18bc994563ef63ed6e23

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for grkmemory-1.11.1-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b881f0323e5206ebc57c491271a74c5d1cf7247cf71e129ee420c69ab2e962f7
MD5 44fc10d0067e94225863e468313896a7
BLAKE2b-256 ad59452061f416e2cbb7223eb02a6264b753aa356ad2cc887559f44adfd84baf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for grkmemory-1.11.1-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 cd6355f2b75d5822626456357a034417a0e880f4f557326299905641c8312c30
MD5 46a8866e9e01b6b1327bb564d521d2b3
BLAKE2b-256 84f6f148031152148be818dafc726f1649ba986e5da913508c06b8f94a3cf795

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