@@ -11,7 +11,7 @@ msgid ""
11
11
msgstr ""
12
12
"Project-Id-Version :Python 3.12\n "
13
13
"Report-Msgid-Bugs-To :\n "
14
- "POT-Creation-Date :2025-02-14 14:53 +0000\n "
14
+ "POT-Creation-Date :2025-04-11 14:54 +0000\n "
15
15
"PO-Revision-Date :2024-05-11 00:33+0000\n "
16
16
"Last-Translator :Rafael Fontenelle <rffontenelle@gmail.com>, 2025\n "
17
17
"Language-Team :Portuguese (Brazil) (https://app.transifex.com/python-doc/ "
@@ -1634,6 +1634,99 @@ msgid ""
1634
1634
"if __name__ == '__main__':\n"
1635
1635
" main()\n"
1636
1636
msgstr ""
1637
+ "# Exemplo simples que mostra como o ID persistente pode ser usado\n"
1638
+ "# serializar com pickle objetos externos por referência.\n"
1639
+ "\n"
1640
+ "import pickle\n"
1641
+ "import sqlite3\n"
1642
+ "from collections import namedtuple\n"
1643
+ "\n"
1644
+ "# Classe simples que representa um registro em nosso banco de dados.\n"
1645
+ "MemoRecord = namedtuple(\" MemoRecord\" ,\" key, task\" )\n"
1646
+ "\n"
1647
+ "class DBPickler(pickle.Pickler):\n"
1648
+ "\n"
1649
+ " def persistent_id(self, obj):\n"
1650
+ " # Em vez de conservar MemoRecord como uma instância de classe "
1651
+ "regular,\n"
1652
+ " # emitimos um ID persistente.\n"
1653
+ " if isinstance(obj, MemoRecord):\n"
1654
+ " # Aqui, nosso ID persistente é simplesmente uma tupla, contendo\n"
1655
+ " # uma tag e uma chave, que se refere a um registro específico\n"
1656
+ " # no banco de dados.\n"
1657
+ " return (\" MemoRecord\" , obj.key)\n"
1658
+ " else:\n"
1659
+ " # Se obj não tiver um ID persistente, retorna None. Significa "
1660
+ "que\n"
1661
+ " # obj precisa ser conservado como de costume.\n"
1662
+ " return None\n"
1663
+ "\n"
1664
+ "\n"
1665
+ "class DBUnpickler(pickle.Unpickler):\n"
1666
+ "\n"
1667
+ " def __init__(self, file, connection):\n"
1668
+ " super().__init__(file)\n"
1669
+ " self.connection = connection\n"
1670
+ "\n"
1671
+ " def persistent_load(self, pid):\n"
1672
+ " # Este método é invocado sempre que um ID persistente é encontrado.\n"
1673
+ " # Aqui, pid é a tupla retornada por DBPickler.\n"
1674
+ " cursor = self.connection.cursor()\n"
1675
+ " type_tag, key_id = pid\n"
1676
+ " if type_tag ==\" MemoRecord\" :\n"
1677
+ " # Busca o registro referenciado no banco de dados e retorna-o.\n"
1678
+ " cursor.execute(\" SELECT * FROM memos WHERE key=?\" , "
1679
+ "(str(key_id),))\n"
1680
+ " key, task = cursor.fetchone()\n"
1681
+ " return MemoRecord(key, task)\n"
1682
+ " else:\n"
1683
+ " # Sempre levanta um erro se você puder retornar o objeto "
1684
+ "correto.\n"
1685
+ " # Caso contrário, a desserialização com pickle considerará que\n"
1686
+ " # None é o objeto referenciado pelo ID persistente.\n"
1687
+ " raise pickle.UnpicklingError(\" unsupported persistent object\" )\n"
1688
+ "\n"
1689
+ "\n"
1690
+ "def main():\n"
1691
+ " import io\n"
1692
+ " import pprint\n"
1693
+ "\n"
1694
+ " # Inicializa e popula nosso banco de dados.\n"
1695
+ " conn = sqlite3.connect(\" :memory:\" )\n"
1696
+ " cursor = conn.cursor()\n"
1697
+ " cursor.execute(\" CREATE TABLE memos(key INTEGER PRIMARY KEY, task "
1698
+ "TEXT)\" )\n"
1699
+ " tasks = (\n"
1700
+ " 'give food to fish',\n"
1701
+ " 'prepare group meeting',\n"
1702
+ " 'fight with a zebra',\n"
1703
+ " )\n"
1704
+ " for task in tasks:\n"
1705
+ " cursor.execute(\" INSERT INTO memos VALUES(NULL, ?)\" , (task,))\n"
1706
+ "\n"
1707
+ " # Busca os registros a serem serializados com pickle.\n"
1708
+ " cursor.execute(\" SELECT * FROM memos\" )\n"
1709
+ " memos = [MemoRecord(key, task) for key, task in cursor]\n"
1710
+ " # Salva os registros usando nosso DBPickler personalizado.\n"
1711
+ " file = io.BytesIO()\n"
1712
+ " DBPickler(file).dump(memos)\n"
1713
+ "\n"
1714
+ " print(\" Pickled records:\" )\n"
1715
+ " pprint.pprint(memos)\n"
1716
+ "\n"
1717
+ " # Atualiza um registro, só por precaução.\n"
1718
+ " cursor.execute(\" UPDATE memos SET task='learn italian' WHERE key=1\" )\n"
1719
+ "\n"
1720
+ " # Carrega os registros do fluxo de dados pickle.\n"
1721
+ " file.seek(0)\n"
1722
+ " memos = DBUnpickler(file, conn).load()\n"
1723
+ "\n"
1724
+ " print(\" Unpickled records:\" )\n"
1725
+ " pprint.pprint(memos)\n"
1726
+ "\n"
1727
+ "\n"
1728
+ "if __name__ == '__main__':\n"
1729
+ " main()\n"
1637
1730
1638
1731
#: ../../library/pickle.rst:782
1639
1732
msgid "Dispatch Tables"
@@ -1804,6 +1897,14 @@ msgid ""
1804
1897
">>> new_reader.readline()\n"
1805
1898
"'3: Goodbye!'"
1806
1899
msgstr ""
1900
+ ">>> reader = TextReader(\" hello.txt\" )\n"
1901
+ ">>> reader.readline()\n"
1902
+ "'1: Hello world!'\n"
1903
+ ">>> reader.readline()\n"
1904
+ "'2: I am line number two.'\n"
1905
+ ">>> new_reader = pickle.loads(pickle.dumps(reader))\n"
1906
+ ">>> new_reader.readline()\n"
1907
+ "'3: Goodbye!'"
1807
1908
1808
1909
#: ../../library/pickle.rst:888
1809
1910
msgid "Custom Reduction for Types, Functions, and Other Objects"
@@ -1896,6 +1997,33 @@ msgid ""
1896
1997
"assert unpickled_class.__name__ ==\" MyClass\" \n"
1897
1998
"assert unpickled_class.my_attribute == 1"
1898
1999
msgstr ""
2000
+ "import io\n"
2001
+ "import pickle\n"
2002
+ "\n"
2003
+ "class MyClass:\n"
2004
+ " my_attribute = 1\n"
2005
+ "\n"
2006
+ "class MyPickler(pickle.Pickler):\n"
2007
+ " def reducer_override(self, obj):\n"
2008
+ "\"\"\" Redutor personalizado para MyClass.\"\"\" \n"
2009
+ " if getattr(obj,\" __name__\" , None) ==\" MyClass\" :\n"
2010
+ " return type, (obj.__name__, obj.__bases__,\n"
2011
+ " {'my_attribute': obj.my_attribute})\n"
2012
+ " else:\n"
2013
+ " # Para qualquer outro objeto, recorre à redução de costume\n"
2014
+ " return NotImplemented\n"
2015
+ "\n"
2016
+ "f = io.BytesIO()\n"
2017
+ "p = MyPickler(f)\n"
2018
+ "p.dump(MyClass)\n"
2019
+ "\n"
2020
+ "del MyClass\n"
2021
+ "\n"
2022
+ "unpickled_class = pickle.loads(f.getvalue())\n"
2023
+ "\n"
2024
+ "assert isinstance(unpickled_class, type)\n"
2025
+ "assert unpickled_class.__name__ ==\" MyClass\" \n"
2026
+ "assert unpickled_class.my_attribute == 1"
1899
2027
1900
2028
#: ../../library/pickle.rst:948
1901
2029
msgid "Out-of-band Buffers"
@@ -2142,6 +2270,10 @@ msgid ""
2142
2270
"hello world\n"
2143
2271
"0"
2144
2272
msgstr ""
2273
+ ">>> import pickle\n"
2274
+ ">>> pickle.loads(b\" cos\\ nsystem\\ n(S'echo hello world'\\ ntR.\" )\n"
2275
+ "hello world\n"
2276
+ "0"
2145
2277
2146
2278
#: ../../library/pickle.rst:1082
2147
2279
msgid ""