@@ -15,7 +15,7 @@ msgid ""
15
15
msgstr ""
16
16
"Project-Id-Version :Python 3.13\n "
17
17
"Report-Msgid-Bugs-To :\n "
18
- "POT-Creation-Date :2025-02-28 14:17 +0000\n "
18
+ "POT-Creation-Date :2025-04-25 14:19 +0000\n "
19
19
"PO-Revision-Date :2021-06-28 01:11+0000\n "
20
20
"Last-Translator :Rafael Fontenelle <rffontenelle@gmail.com>, 2025\n "
21
21
"Language-Team :Portuguese (Brazil) (https://app.transifex.com/python-doc/ "
@@ -1653,6 +1653,99 @@ msgid ""
1653
1653
"if __name__ == '__main__':\n"
1654
1654
" main()\n"
1655
1655
msgstr ""
1656
+ "# Exemplo simples que mostra como o ID persistente pode ser usado\n"
1657
+ "# serializar com pickle objetos externos por referência.\n"
1658
+ "\n"
1659
+ "import pickle\n"
1660
+ "import sqlite3\n"
1661
+ "from collections import namedtuple\n"
1662
+ "\n"
1663
+ "# Classe simples que representa um registro em nosso banco de dados.\n"
1664
+ "MemoRecord = namedtuple(\" MemoRecord\" ,\" key, task\" )\n"
1665
+ "\n"
1666
+ "class DBPickler(pickle.Pickler):\n"
1667
+ "\n"
1668
+ " def persistent_id(self, obj):\n"
1669
+ " # Em vez de conservar MemoRecord como uma instância de classe "
1670
+ "regular,\n"
1671
+ " # emitimos um ID persistente.\n"
1672
+ " if isinstance(obj, MemoRecord):\n"
1673
+ " # Aqui, nosso ID persistente é simplesmente uma tupla, contendo\n"
1674
+ " # uma tag e uma chave, que se refere a um registro específico\n"
1675
+ " # no banco de dados.\n"
1676
+ " return (\" MemoRecord\" , obj.key)\n"
1677
+ " else:\n"
1678
+ " # Se obj não tiver um ID persistente, retorna None. Significa "
1679
+ "que\n"
1680
+ " # obj precisa ser conservado como de costume.\n"
1681
+ " return None\n"
1682
+ "\n"
1683
+ "\n"
1684
+ "class DBUnpickler(pickle.Unpickler):\n"
1685
+ "\n"
1686
+ " def __init__(self, file, connection):\n"
1687
+ " super().__init__(file)\n"
1688
+ " self.connection = connection\n"
1689
+ "\n"
1690
+ " def persistent_load(self, pid):\n"
1691
+ " # Este método é invocado sempre que um ID persistente é encontrado.\n"
1692
+ " # Aqui, pid é a tupla retornada por DBPickler.\n"
1693
+ " cursor = self.connection.cursor()\n"
1694
+ " type_tag, key_id = pid\n"
1695
+ " if type_tag ==\" MemoRecord\" :\n"
1696
+ " # Busca o registro referenciado no banco de dados e retorna-o.\n"
1697
+ " cursor.execute(\" SELECT * FROM memos WHERE key=?\" , "
1698
+ "(str(key_id),))\n"
1699
+ " key, task = cursor.fetchone()\n"
1700
+ " return MemoRecord(key, task)\n"
1701
+ " else:\n"
1702
+ " # Sempre levanta um erro se você puder retornar o objeto "
1703
+ "correto.\n"
1704
+ " # Caso contrário, a desserialização com pickle considerará que\n"
1705
+ " # None é o objeto referenciado pelo ID persistente.\n"
1706
+ " raise pickle.UnpicklingError(\" unsupported persistent object\" )\n"
1707
+ "\n"
1708
+ "\n"
1709
+ "def main():\n"
1710
+ " import io\n"
1711
+ " import pprint\n"
1712
+ "\n"
1713
+ " # Inicializa e popula nosso banco de dados.\n"
1714
+ " conn = sqlite3.connect(\" :memory:\" )\n"
1715
+ " cursor = conn.cursor()\n"
1716
+ " cursor.execute(\" CREATE TABLE memos(key INTEGER PRIMARY KEY, task "
1717
+ "TEXT)\" )\n"
1718
+ " tasks = (\n"
1719
+ " 'give food to fish',\n"
1720
+ " 'prepare group meeting',\n"
1721
+ " 'fight with a zebra',\n"
1722
+ " )\n"
1723
+ " for task in tasks:\n"
1724
+ " cursor.execute(\" INSERT INTO memos VALUES(NULL, ?)\" , (task,))\n"
1725
+ "\n"
1726
+ " # Busca os registros a serem serializados com pickle.\n"
1727
+ " cursor.execute(\" SELECT * FROM memos\" )\n"
1728
+ " memos = [MemoRecord(key, task) for key, task in cursor]\n"
1729
+ " # Salva os registros usando nosso DBPickler personalizado.\n"
1730
+ " file = io.BytesIO()\n"
1731
+ " DBPickler(file).dump(memos)\n"
1732
+ "\n"
1733
+ " print(\" Pickled records:\" )\n"
1734
+ " pprint.pprint(memos)\n"
1735
+ "\n"
1736
+ " # Atualiza um registro, só por precaução.\n"
1737
+ " cursor.execute(\" UPDATE memos SET task='learn italian' WHERE key=1\" )\n"
1738
+ "\n"
1739
+ " # Carrega os registros do fluxo de dados pickle.\n"
1740
+ " file.seek(0)\n"
1741
+ " memos = DBUnpickler(file, conn).load()\n"
1742
+ "\n"
1743
+ " print(\" Unpickled records:\" )\n"
1744
+ " pprint.pprint(memos)\n"
1745
+ "\n"
1746
+ "\n"
1747
+ "if __name__ == '__main__':\n"
1748
+ " main()\n"
1656
1749
1657
1750
#: ../../library/pickle.rst:790
1658
1751
msgid "Dispatch Tables"
@@ -1823,6 +1916,14 @@ msgid ""
1823
1916
">>> new_reader.readline()\n"
1824
1917
"'3: Goodbye!'"
1825
1918
msgstr ""
1919
+ ">>> reader = TextReader(\" hello.txt\" )\n"
1920
+ ">>> reader.readline()\n"
1921
+ "'1: Hello world!'\n"
1922
+ ">>> reader.readline()\n"
1923
+ "'2: I am line number two.'\n"
1924
+ ">>> new_reader = pickle.loads(pickle.dumps(reader))\n"
1925
+ ">>> new_reader.readline()\n"
1926
+ "'3: Goodbye!'"
1826
1927
1827
1928
#: ../../library/pickle.rst:896
1828
1929
msgid "Custom Reduction for Types, Functions, and Other Objects"
@@ -1915,6 +2016,33 @@ msgid ""
1915
2016
"assert unpickled_class.__name__ ==\" MyClass\" \n"
1916
2017
"assert unpickled_class.my_attribute == 1"
1917
2018
msgstr ""
2019
+ "import io\n"
2020
+ "import pickle\n"
2021
+ "\n"
2022
+ "class MyClass:\n"
2023
+ " my_attribute = 1\n"
2024
+ "\n"
2025
+ "class MyPickler(pickle.Pickler):\n"
2026
+ " def reducer_override(self, obj):\n"
2027
+ "\"\"\" Redutor personalizado para MyClass.\"\"\" \n"
2028
+ " if getattr(obj,\" __name__\" , None) ==\" MyClass\" :\n"
2029
+ " return type, (obj.__name__, obj.__bases__,\n"
2030
+ " {'my_attribute': obj.my_attribute})\n"
2031
+ " else:\n"
2032
+ " # Para qualquer outro objeto, recorre à redução de costume\n"
2033
+ " return NotImplemented\n"
2034
+ "\n"
2035
+ "f = io.BytesIO()\n"
2036
+ "p = MyPickler(f)\n"
2037
+ "p.dump(MyClass)\n"
2038
+ "\n"
2039
+ "del MyClass\n"
2040
+ "\n"
2041
+ "unpickled_class = pickle.loads(f.getvalue())\n"
2042
+ "\n"
2043
+ "assert isinstance(unpickled_class, type)\n"
2044
+ "assert unpickled_class.__name__ ==\" MyClass\" \n"
2045
+ "assert unpickled_class.my_attribute == 1"
1918
2046
1919
2047
#: ../../library/pickle.rst:956
1920
2048
msgid "Out-of-band Buffers"
@@ -2161,6 +2289,10 @@ msgid ""
2161
2289
"hello world\n"
2162
2290
"0"
2163
2291
msgstr ""
2292
+ ">>> import pickle\n"
2293
+ ">>> pickle.loads(b\" cos\\ nsystem\\ n(S'echo hello world'\\ ntR.\" )\n"
2294
+ "hello world\n"
2295
+ "0"
2164
2296
2165
2297
#: ../../library/pickle.rst:1090
2166
2298
msgid ""