{"id":16509477,"url":"https://github.com/jtemporal/schematics-tutorial","last_synced_at":"2026-05-12T17:46:58.553Z","repository":{"id":78994879,"uuid":"152799847","full_name":"jtemporal/schematics-tutorial","owner":"jtemporal","description":"vai ter post, qnd tiver no ar coloco o link aqui ;)","archived":false,"fork":false,"pushed_at":"2018-10-14T04:14:30.000Z","size":619,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-12T18:35:23.910Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jtemporal.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-10-12T19:41:33.000Z","updated_at":"2019-02-13T14:37:10.000Z","dependencies_parsed_at":null,"dependency_job_id":"9c796da1-30ee-4bb2-abbd-d20e4dd1ae29","html_url":"https://github.com/jtemporal/schematics-tutorial","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jtemporal%2Fschematics-tutorial","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jtemporal%2Fschematics-tutorial/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jtemporal%2Fschematics-tutorial/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jtemporal%2Fschematics-tutorial/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jtemporal","download_url":"https://codeload.github.com/jtemporal/schematics-tutorial/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241465113,"owners_count":19967243,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-11T15:50:43.570Z","updated_at":"2026-05-12T17:46:58.516Z","avatar_url":"https://github.com/jtemporal.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Tutorial Schematics\n\n## Instalação\n\n```console\n$ pip install schematics\n```\n---\n\n## Exemplos\n\n\u003c!-- START doctoc generated TOC please keep comment here to allow auto update --\u003e\n\u003c!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --\u003e\n\n- [Exemplo 1: Validação](#exemplo-1-valida%C3%A7%C3%A3o)\n- [Exemplo 2: DataError](#exemplo-2-dataerror)\n- [Exemplo 3: Usando dicionários](#exemplo-3-usando-dicion%C3%A1rios)\n- [Exemplo 4: DataError usando dicionários](#exemplo-4-dataerror-usando-dicion%C3%A1rios)\n- [Exemplo 5: Serializando antes](#exemplo-5-serializando-antes)\n- [Exemplo 6: Serializando depois](#exemplo-6-serializando-depois)\n- [Exemplo 7: Rogue field](#exemplo-7-rogue-field)\n- [Exemplo 8: Deserializando](#exemplo-8-deserializando)\n- [Exemplo 9: Reserializando antes](#exemplo-9-reserializando-antes)\n- [Exemplo 10: Reserializando depois](#exemplo-10-reserializando-depois)\n- [Exemplo 11: Definindo tipos](#exemplo-11-definindo-tipos)\n- [Exemplo 12: Pessoa tem cachorrinho](#exemplo-12-pessoa-tem-cachorrinho)\n- [Exemplo 13: Cachorrinho](#exemplo-13-cachorrinho)\n- [Exemplo 14: Validadores - tipo](#exemplo-14-validadores---tipo)\n- [Exemplo 15: Validadores - modelo DataError](#exemplo-15-validadores---modelo-dataerror)\n- [Exemplo 16: Validadores - modelo](#exemplo-16-validadores---modelo)\n\n\u003c!-- END doctoc generated TOC please keep comment here to allow auto update --\u003e\n\nLogo após o título de cada exemplo, eu coloquei também a parte inicial do hash do commit que você pode utilizar para \"pular\" para a versão dos arquivos de forma mais fácil :wink:\n\n### Exemplo 1: Validação\n\nCommit: 1949e50\n\n```python\nfrom models import Pessoa\njess = Pessoa()\njess.nome = \"Jess\"\njess.idade = \"42\"\njess.linguagens = [\"Python\", \"R\", \"Go\"]\njess.validate() == None\n```\n\n### Exemplo 2: DataError\n\nCommit: 1949e50\n\n```python\nfrom models import Pessoa\njess = Pessoa()\njess.nome = \"Jess\"\njess.idade = \"4p2\"\njess.linguagens = [\"Python\", \"R\", \"Go\"]\njess.validate()\n```\n\n### Exemplo 3: Usando dicionários\n\nCommit: 1949e50\n\n```python\nfrom models import Pessoa\ndata = {\n    \"idade\": \"42\",\n    \"nome\": \"Jess\",\n    \"linguagens\": [\n        \"Python\",\n        \"Go\",\n        \"R\"\n    ]\n}\njess = Pessoa(data)\n```\n\n### Exemplo 4: DataError usando dicionários\n\nCommit: 1949e50\n\n```python\nfrom models import Pessoa\ndata = {\n    \"idade\": \"4p2\",\n    \"nome\": \"Jess\",\n    \"linguagens\": [\"Python\", \"R\", \"Go\"]\n}\njess = Pessoa(data)\n```\n\n### Exemplo 5: Serializando antes\n\nCommit: 1949e50\n\n```python\nfrom models import Pessoa\njess = Pessoa()\njess.nome = \"Jess\"\njess.to_native()\n```\n\n### Exemplo 6: Serializando depois\n\nCommit: 1bf5445\n\n```python\nfrom models import Pessoa\njess = Pessoa()\njess.nome = \"Jess\"\njess.to_native()\n```\n\n### Exemplo 7: Rogue field\n\nCommit: 1bf5445\n\n```python\nfrom models import Pessoa\ndata = {\n    \"name\": \"Jess\"\n}\njess = Pessoa(data)\n```\n\n### Exemplo 8: Deserializando\n\nCommit: 9898782\n\n```python\nfrom models import Pessoa\ndata = {\n    \"name\": \"Jess\",\n    \"age\": \"42\",\n    \"lang\": [\n        \"Python\",\n        \"Go\",\n        \"R\"\n    ]\n}\njess = Pessoa(data)\n```\n\n### Exemplo 9: Reserializando antes\n\nCommit: 9898782\n\n```python\nfrom models import Pessoa\ndata = {\n    \"name\": \"Jess\",\n    \"age\": \"42\",\n    \"lang\": [\n        \"Python\",\n        \"Go\",\n        \"R\"\n    ]\n}\njess = Pessoa(data)\njess.to_native()\n```\n\n### Exemplo 10: Reserializando depois\n\nCommit: 2beeea6\n\n```python\nfrom models import Pessoa\ndata = {\n    \"name\": \"Jess\",\n    \"age\": \"42\",\n    \"lang\": [\n        \"Python\",\n        \"Go\",\n        \"R\"\n    ]\n}\njess = Pessoa(data)\njess.to_native()\n```\n\n### Exemplo 11: Definindo tipos\n\nCommit: ecf3a67\n\n```python\nfrom models import Pessoa\njess = Pessoa()\njess.nome = \"Jess\"\njess.idade = 4242\njess.validate()\n```\n\n### Exemplo 12: Pessoa tem cachorrinho\n\nCommit: 923923a\n\n```python\nfrom models import Pessoa\ndata = {\n    \"name\": \"Jess\",\n    \"age\": \"42\",\n    \"lang\": [\"Python\", \"R\", \"Go\"],\n    \"pets\": [\n        {\"name\": \"cora\", \"fur\": \"preta\"},\n        {\"name\": \"channel\", \"fur\": \"branca\"}\n    ]\n}\njess = Pessoa(data)\n```\n\n### Exemplo 13: Cachorrinho\n\nCommit: 923923a\n\n```python\nfrom models import Cachorrinho\ndata = {\n    \"name\": \"cora\",\n    \"fur\": \"preta\"\n}\ndog = Cachorrinho(data)\n```\n\n### Exemplo 14: Validadores - tipo\n\nCommit: 9c3e573\n\n```python\nfrom models import Pessoa\ndata = {\n    \"name\": \"Jess\",\n    \"lang\": [\"Java\"]\n}\njess = Pessoa(data)\njess.validate()\n```\n\n### Exemplo 15: Validadores - modelo DataError\n\nCommit: b866fd0\n\n```python\nfrom models import Cachorrinho\ndata = {\n    \"name\": \"cora\",\n    \"fur\": \"preta\"\n}\ndog = Cachorrinho(data)\ndog.validate()\n```\n\n### Exemplo 16: Validadores - modelo\n\nCommit: b866fd0\n\n```python\nfrom models import Cachorrinho\ndata = {\n    \"name\": \"Cora\",\n    \"fur\": \"preta\"\n}\ndog = Cachorrinho(data)\ndog.validate()\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjtemporal%2Fschematics-tutorial","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjtemporal%2Fschematics-tutorial","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjtemporal%2Fschematics-tutorial/lists"}