Metadata-Version: 2.4
Name: pybasedb-json
Version: 0.4.0
Summary: Banco de dados local com JSON — schemas, decorator API, server REST, criptografia, zero dependencias
Author-email: Marcos Gomes <marcosgabrielgomes110@gmail.com>
Maintainer-email: Marcos Gomes <marcosgabrielgomes110@gmail.com>
License: MIT
Project-URL: Homepage, https://github.com/marcosgabrielgomes110-collab/Pybase
Project-URL: Documentation, https://github.com/marcosgabrielgomes110-collab/Pybase/tree/main/docs
Project-URL: Repository, https://github.com/marcosgabrielgomes110-collab/Pybase
Keywords: database,json,local,embedded,nosql,thread-safe,rest-api,schema,media
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Database
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Internet :: WWW/HTTP :: HTTP Servers
Requires-Python: >=3.10
Description-Content-Type: text/markdown

<p align="center">
  <img src="assets/logo/logo.png" width="120" alt="Pybase logo">
</p>

# Pybase v0.4

Base para criacao de bancos de dados locais com JSON. Zero dependencias, 100% stdlib.
Operacoes de escrita atomicas, thread-safe.

Filosofia **Lego**: cada modulo e independente — voce monta o que precisa.

## Instalacao

```bash
pip install pybasedb-json
```

Para o servidor REST (opcional):
```bash
pip install Flask
```

## Uso rapido

```python
from pybase import pybase as pb

# Banco de dados (sem senha ou com senha)
db = pb.Database("./data/mydb")
# db = pb.Database("./data/mydb", password="senha").open("senha")

# Schema com decorator (v0.4+)
@db.schema.users
class User:
    name: str
    email: str
    age: int = 0
    active: bool = True

# Ou com T() explicito
# from pybase.validation import T
# db.schema.users = pb.Schema({"name": pb.T(str), "age": pb.T(int, default=0)})

# Colecao com validacao automatica
users = db["users"]
users.add({"name": "marcos", "email": "m@m.com"})  # auto-ID

# SDK client
doc = users["1"].get()
users.find(age=0)

# Consultas direto na colecao (v0.4+)
users.sort("name").limit(10).find(active=True)
users.find_one(name="ana")
users.exists(name="joao")

# Servidor REST (requer Flask)
pb.Server(db).run(port=4560)  # auto-detecta colecoes
# Swagger UI: http://localhost:4560/mydb/docs/
```

## Modulos

| Modulo | Arquivo | Descricao | Deps |
|--------|---------|-----------|------|
| Database | `pybase/database.py` | Gerencia diretorio de tabelas JSON | 0 |
| Collection | `pybase/collections.py` | CRUD atomico thread-safe + query integrado | 0 |
| Query | `pybase/query.py` | Thin wrapper sobre Collection | 0 |
| Schema | `pybase/validation.py` | Validacao com T(), decorator, from_example | 0 |
| Server | `pybase/server.py` | REST API automatica + Swagger UI | Flask |
| Media | `pybase/media.py` | Upload/download de imagens | 0 |
| Backup | `pybase/backup.py` | Snapshot e restore (seletivo) | 0 |
| Crypto | `pybase/crypto.py` | Criptografia stdlib (scrypt + XOR) | 0 |

## Novidades da v0.4

- **API simplificada** — `Database("./data/mydb")` sem senha obrigatoria
- **`update`/`delete`** — nomes em ingles, sem aliases pt-br
- **Auto-ID** — `users.add({"name": "x"})` gera UUID automatico
- **`db["colecao"]`** — acesso direto via `__getitem__`
- **Query integrado** — `collection.sort().limit().find()` direto
- **`@db.schema.nome`** — schema via decorator de classe
- **`T()`** — nova API de tipos com kwargs (`T(int, default=0)`)
- **`Schema.from_example()`** — schema inferido de dados reais
- **`import global`** — `from pybase import pybase`
- **PBKDF2** — hashing de senha com salt (600k iteracoes)
- **Criptografia** — `encrypt()`/`decrypt()` stdlib puro
- **Server auto-detect** — `Server(db).run()` descobre colecoes
- **Erros descritivos** — com path + valor + sugestao

## Estrutura

```
Pybase/
  pybase/
    __init__.py       # Database, Collection, Query, Server, Schema, T
    pybase.py         # from pybase import pybase
    database.py       # Database, SchemaRegistrar
    collections.py    # Collection, DocRef, QueryBuilder, SchemaCollection
    query.py          # Query wrapper
    exceptions.py     # PybaseError > DatabaseError, CollectionError, ...
    validation.py     # Schema, T, ValidationError
    server.py         # Server REST (Flask)
    media.py          # MediaManager
    index.py          # Index (hash O(1))
    hooks.py          # HooksCollection
    backup.py         # take, restore
    crypto.py         # encrypt, decrypt (stdlib)
    utils.py          # PBKDF2 encode/verify
  docs/               # Documentacao completa
  pyproject.toml
```

## Documentacao

Veja [docs/](docs/index.md) com referencia completa de cada classe e metodo.

## Licenca

MIT
