diff --git a/dictionaries/main.txt b/dictionaries/main.txt index 5412618c..f6cb5a30 100644 --- a/dictionaries/main.txt +++ b/dictionaries/main.txt @@ -106,6 +106,7 @@ Excel Exception Exceptions Explorer +Eίναι Fall Fedora Fido @@ -778,6 +779,7 @@ f facto factories factory +fake false fatal favoring @@ -1311,6 +1313,7 @@ property provided provides provisional +proxies proxy pty publicly @@ -1867,6 +1870,7 @@ zoneinfo απαρχαιώσεως απεγκαταστήστε απεγκατασταθεί +απομετατραπούν αποσειριοποίηση αποσειριοποίησης αποσυρμένη @@ -2045,9 +2049,11 @@ zoneinfo καλέσιμη καλέσιμο καλέσιμου +καλέσιμων καλέστει καμμία κανονικοποίηση +κανονικοποιήσεις κανονικοποιείται κανονικοποιούν κανονικοποιούνται @@ -2231,6 +2237,7 @@ zoneinfo προσομοιώσεών προσομοιώσουμε προσπελαύνεται +προσπελαύνονται προσπελαύνουν προσποιηθείτε προτάσσοντάς diff --git a/library/annotationlib.po b/library/annotationlib.po index 8f186e93..7f471df3 100644 --- a/library/annotationlib.po +++ b/library/annotationlib.po @@ -9,10 +9,10 @@ msgstr "" "Project-Id-Version: Python 3.14\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2025-12-04 09:48+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: \n" +"PO-Revision-Date: 2026-06-06 19:47+0300\n" +"Last-Translator: Vassiliki Dalakiari \n" +"Language-Team: PyGreece \n" +"Language: el\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -20,16 +20,19 @@ msgstr "" #: library/annotationlib.rst:2 msgid ":mod:`!annotationlib` --- Functionality for introspecting annotations" msgstr "" +":mod:`!annotationlib` --- Λειτουργικότητα για την ενδοσκόπηση των annotations" #: library/annotationlib.rst:9 msgid "**Source code:** :source:`Lib/annotationlib.py`" -msgstr "" +msgstr "**Πηγαίος κώδικας:** :source:`Lib/annotationlib.py`" #: library/annotationlib.rst:18 msgid "" "The :mod:`!annotationlib` module provides tools for introspecting :term:" "`annotations ` on modules, classes, and functions." msgstr "" +"Το module :mod:`!annotationlib` παρέχει εργαλεία για την ενδοσκόπηση των :" +"term:`annotations ` σε modules, κλάσεις και συναρτήσεις." #: library/annotationlib.rst:21 msgid "" @@ -39,12 +42,21 @@ msgid "" "to retrieve annotations in a reliable way, even in the presence of forward " "references and other edge cases." msgstr "" +"Τα annotations :ref:`αξιολογούνται νωχελικά ` και συχνά " +"περιέχουν αναφορές προς τα εμπρός σε αντικείμενα που δεν έχουν ακόμη οριστεί " +"όταν δημιουργείται το annotation. Αυτό το module παρέχει ένα σύνολο " +"εργαλείων χαμηλού επιπέδου, που μπορούν να χρησιμοποιηθούν για την αξιόπιστη " +"ανάκτηση των annotations, ακόμη και στην παρουσία αναφορών προς τα εμπρός " +"και άλλων ακραίων περιπτώσεων." #: library/annotationlib.rst:26 msgid "" "This module supports retrieving annotations in three main formats (see :" "class:`Format`), each of which works best for different use cases:" msgstr "" +"Αυτό το module υποστηρίζει την ανάκτηση των annotations σε τρεις κύριες " +"μορφές (δείτε το :class:`Format`), κάθε μία από τις οποίες λειτουργεί " +"καλύτερα για διαφορετικές περιπτώσεις χρήσης:" #: library/annotationlib.rst:29 msgid "" @@ -52,6 +64,10 @@ msgid "" "This is most straightforward to work with, but it may raise errors, for " "example if the annotations contain references to undefined names." msgstr "" +"Το :attr:`~Format.VALUE` αξιολογεί τα annotations και επιστρέφει την τιμή " +"τους. Αυτή είναι η πιο απλή μορφή για να εργαστεί κανείς, αλλά μπορεί να " +"εγείρει σφάλματα, για παράδειγμα αν τα annotations περιέχουν αναφορές σε " +"ονόματα που δεν έχουν οριστεί." #: library/annotationlib.rst:32 msgid "" @@ -60,6 +76,11 @@ msgid "" "without evaluating them. This is useful when you need to work with " "annotations that may contain unresolved forward references." msgstr "" +"Το :attr:`~Format.FORWARDREF` επιστρέφει αντικείμενα :class:`ForwardRef` για " +"annotations που δεν μπορούν να επιλυθούν, επιτρέποντάς σας να επιθεωρήσετε " +"τα annotations χωρίς να τα αξιολογήσετε. Αυτό είναι χρήσιμο όταν χρειάζεται " +"να εργαστείτε με annotations που μπορεί να περιέχουν ανεπίλυτες αναφορές " +"προς τα εμπρός." #: library/annotationlib.rst:36 msgid "" @@ -67,6 +88,10 @@ msgid "" "it would appear in the source file. This is useful for documentation " "generators that want to display annotations in a readable way." msgstr "" +"Το :attr:`~Format.STRING` επιστρέφει τα annotations ως συμβολοσειρά, ομοίως " +"με τον τρόπο που θα εμφανίζονταν στο αρχείο του πηγαίου κώδικα. Αυτό είναι " +"χρήσιμο για γεννήτριες τεκμηρίωσης που θέλουν να εμφανίζουν τα annotations " +"με αναγνώσιμο τρόπο." #: library/annotationlib.rst:40 msgid "" @@ -78,39 +103,59 @@ msgid "" "func:`call_annotate_function`, as well as the :func:`call_evaluate_function` " "function for working with :term:`evaluate functions `." msgstr "" +"Η συνάρτηση :func:`get_annotations` είναι το κύριο σημείο εισόδου για την " +"ανάκτηση των annotations. Δοθείσας μιας συνάρτησης, μιας κλάσης ή ενός " +"module, επιστρέφει ένα λεξικό των annotations στη ζητούμενη μορφή. Αυτό το " +"module παρέχει επίσης τη λειτουργικότητα για την άμεση εργασία με την :term:" +"`annotate function`, που χρησιμοποιείται για την αξιολόγηση των annotations, " +"όπως οι :func:`get_annotate_from_class_namespace` και :func:" +"`call_annotate_function`, καθώς και τη συνάρτηση :func:" +"`call_evaluate_function` για εργασία με :term:`evaluate functions `." #: library/annotationlib.rst:51 msgid "" "Most functionality in this module can execute arbitrary code; see :ref:`the " "security section ` for more information." msgstr "" +"Η περισσότερη λειτουργικότητα σε αυτό το module μπορεί να εκτελέσει " +"αυθαίρετο κώδικα· δείτε :ref:`την ενότητα ασφαλείας ` για περισσότερες πληροφορίες." #: library/annotationlib.rst:56 msgid "" ":pep:`649` proposed the current model for how annotations work in Python." msgstr "" +"Το :pep:`649` πρότεινε το τρέχον μοντέλο για το πώς λειτουργούν τα " +"annotations στην Python." #: library/annotationlib.rst:58 msgid "" ":pep:`749` expanded on various aspects of :pep:`649` and introduced the :mod:" "`!annotationlib` module." msgstr "" +"Το :pep:`749` επέκτεινε διάφορες πτυχές του :pep:`649` και εισήγαγε το " +"module :mod:`!annotationlib`." #: library/annotationlib.rst:61 msgid "" ":ref:`annotations-howto` provides best practices for working with " "annotations." msgstr "" +"Το :ref:`annotations-howto` παρέχει βέλτιστες πρακτικές για την εργασία με " +"τα annotations." #: library/annotationlib.rst:64 msgid "" ":pypi:`typing-extensions` provides a backport of :func:`get_annotations` " "that works on earlier versions of Python." msgstr "" +"Το :pypi:`typing-extensions` παρέχει ένα backport της :func:" +"`get_annotations` που λειτουργεί σε προγενέστερες εκδόσεις της Python." #: library/annotationlib.rst:68 msgid "Annotation semantics" -msgstr "" +msgstr "Σημασιολογία των annotations" #: library/annotationlib.rst:70 msgid "" @@ -118,6 +163,9 @@ msgid "" "and currently still depends on a :ref:`future import `. There have " "been execution models for annotations:" msgstr "" +"Ο τρόπος αξιολόγησης των annotations έχει αλλάξει κατά τη διάρκεια της " +"ιστορίας της Python 3 και επί του παρόντος εξαρτάται ακόμα από μια :ref:" +"`εισαγωγή future `. Υπήρξαν μοντέλα εκτέλεσης για τα annotations:" #: library/annotationlib.rst:74 msgid "" @@ -125,6 +173,9 @@ msgid "" "pep:`526`): Annotations are evaluated eagerly, as they are encountered in " "the source code." msgstr "" +"*Βασική σημασιολογία* (προεπιλογή στην Python από την έκδοση 3.0 έως την " +"3.13· δείτε τα :pep:`3107` και :pep:`526`): τα annotations αξιολογούνται " +"άμεσα, όπως συναντώνται στον πηγαίο κώδικα." #: library/annotationlib.rst:77 msgid "" @@ -132,16 +183,22 @@ msgid "" "in Python 3.7 and newer; see :pep:`563`): Annotations are stored as strings " "only." msgstr "" +"*Annotations ως συμβολοσειρές* (χρησιμοποιούνται με το ``from __future__ " +"import annotations`` από την Python 3.7 και μετά· δείτε το :pep:`563`): τα " +"annotations αποθηκεύονται μόνο ως συμβολοσειρές." #: library/annotationlib.rst:80 msgid "" "*Deferred evaluation* (default in Python 3.14 and newer; see :pep:`649` and :" "pep:`749`): Annotations are evaluated lazily, only when they are accessed." msgstr "" +"*Αναβαλλόμενη αξιολόγηση* (προεπιλογή από την Python 3.14 και μετά· δείτε " +"τα :pep:`649` και :pep:`749`): τα annotations αξιολογούνται νωχελικά, μόνο " +"όταν προσπελαύνονται." #: library/annotationlib.rst:83 msgid "As an example, consider the following program::" -msgstr "" +msgstr "Ως παράδειγμα, εξετάστε το ακόλουθο πρόγραμμα::" #: library/annotationlib.rst:85 msgid "" @@ -152,10 +209,16 @@ msgid "" "\n" "print(func.__annotations__)" msgstr "" +"def func(a: Cls) -> None:\n" +" print(a)\n" +"\n" +"class Cls: pass\n" +"\n" +"print(func.__annotations__)" #: library/annotationlib.rst:92 msgid "This will behave as follows:" -msgstr "" +msgstr "Αυτό θα συμπεριφερθεί ως εξής:" #: library/annotationlib.rst:94 msgid "" @@ -163,18 +226,25 @@ msgid "" "`NameError` at the line where ``func`` is defined, because ``Cls`` is an " "undefined name at that point." msgstr "" +"Υπό τη βασική σημασιολογία (Python 3.13 και προγενέστερες), θα εγείρει ένα :" +"exc:`NameError` στη γραμμή όπου ορίζεται η ``func``, επειδή το ``Cls`` είναι " +"ένα μη ορισμένο όνομα σε εκείνο το σημείο." #: library/annotationlib.rst:97 msgid "" "Under stringified annotations (if ``from __future__ import annotations`` is " "used), it will print ``{'a': 'Cls', 'return': 'None'}``." msgstr "" +"Υπό τα annotations ως συμβολοσειρές (αν χρησιμοποιείται το ``from __future__ " +"import annotations``), θα εκτυπώσει ``{'a': 'Cls', 'return': 'None'}``." #: library/annotationlib.rst:99 msgid "" "Under deferred evaluation (Python 3.14 and later), it will print ``{'a': " ", 'return': None}``." msgstr "" +"Υπό την αναβαλλόμενη αξιολόγηση (Python 3.14 και μεταγενέστερες), θα " +"εκτυπώσει ``{'a': , 'return': None}``." #: library/annotationlib.rst:102 msgid "" @@ -196,10 +266,29 @@ msgid "" "__future__ import annotations`` is present, but this behavior will " "eventually be removed." msgstr "" +"Η βασική σημασιολογία χρησιμοποιήθηκε όταν τα annotations συναρτήσεων " +"εισήχθησαν για πρώτη φορά στην Python 3.0 (από το :pep:`3107`), επειδή ήταν " +"ο απλούστερος, πιο προφανής τρόπος υλοποίησης των annotations. Το ίδιο " +"μοντέλο εκτέλεσης χρησιμοποιήθηκε όταν εισήχθησαν τα annotations μεταβλητών " +"στην Python 3.6 (από το :pep:`526`). Ωστόσο, η βασική σημασιολογία προκάλεσε " +"προβλήματα κατά τη χρήση των annotations ως υποδείξεων τύπων, όπως η ανάγκη " +"αναφοράς σε ονόματα που δεν έχουν ακόμη οριστεί όταν συναντάται το " +"annotation. Επιπλέον, υπήρξαν προβλήματα απόδοσης με την εκτέλεση των " +"annotations κατά τον χρόνο εισαγωγής του module. Επομένως, στην Python 3.7, " +"το :pep:`563` εισήγαγε τη δυνατότητα αποθήκευσης των annotations ως " +"συμβολοσειρές χρησιμοποιώντας τη σύνταξη ``from __future__ import " +"annotations``. Το σχέδιο τότε ήταν να γίνει τελικά αυτή η συμπεριφορά η " +"προεπιλογή, αλλά εμφανίστηκε ένα πρόβλημα: τα annotations ως συμβολοσειρές " +"είναι πιο δύσκολο να επεξεργαστούν για όσα άτομα κάνουν ενδοσκόπηση στα " +"annotations κατά τον χρόνο εκτέλεσης. Σαν εναλλακτική πρόταση, το :pep:" +"`649`, εισήγαγε το τρίτο μοντέλο εκτέλεσης, την αναβαλλόμενη αξιολόγηση, και " +"υλοποιήθηκε στην Python 3.14. Τα Annotations ως συμβολοσειρές εξακολουθούν " +"να χρησιμοποιούνται αν υπάρχει το ``from __future__ import annotations``, " +"αλλά αυτή η συμπεριφορά θα αφαιρεθεί τελικά." #: library/annotationlib.rst:121 msgid "Classes" -msgstr "" +msgstr "Κλάσεις" #: library/annotationlib.rst:125 msgid "" @@ -208,10 +297,15 @@ msgid "" "passed to :func:`get_annotations` and other functions in this module, as " "well as to :attr:`~object.__annotate__` functions." msgstr "" +"Μία :class:`~enum.IntEnum` που περιγράφει τις μορφές στις οποίες μπορούν να " +"επιστραφούν τα annotations. Τα μέλη του enum, ή οι ισοδύναμες ακέραιες τιμές " +"τους, μπορούν να περαστούν στη :func:`get_annotations` και σε άλλες " +"συναρτήσεις αυτού του module, καθώς και σε συναρτήσεις :attr:`~object." +"__annotate__`." #: library/annotationlib.rst:133 msgid "Values are the result of evaluating the annotation expressions." -msgstr "" +msgstr "Οι τιμές είναι το αποτέλεσμα της αξιολόγησης των εκφράσεων σχολιασμού." #: library/annotationlib.rst:138 msgid "" @@ -222,6 +316,13 @@ msgid "" "not support execution in this environment. This format is only used " "internally and should not be passed to the functions in this module." msgstr "" +"Ειδική τιμή που χρησιμοποιείται για να σηματοδοτήσει ότι μια συνάρτηση " +"σχολιασμού αξιολογείται σε ένα ειδικό περιβάλλον με ψεύτικα καθολικά (fake " +"globals). Όταν περνιέται αυτή η τιμή, οι συναρτήσεις σχολιασμού θα πρέπει " +"είτε να επιστρέψουν την ίδια τιμή όπως για τη μορφή :attr:`Format.VALUE`, " +"είτε να εγείρουν :exc:`NotImplementedError` για να σηματοδοτήσουν ότι δεν " +"υποστηρίζουν εκτέλεση σε αυτό το περιβάλλον. Αυτή η μορφή χρησιμοποιείται " +"μόνο εσωτερικά και δεν πρέπει να περνιέται στις συναρτήσεις αυτού του module." #: library/annotationlib.rst:149 msgid "" @@ -229,6 +330,10 @@ msgid "" "defined values, and :class:`ForwardRef` proxies for undefined values. Real " "objects may contain references to :class:`ForwardRef` proxy objects." msgstr "" +"Οι τιμές είναι πραγματικές τιμές σχολιασμού (όπως στη μορφή :attr:`Format." +"VALUE`) για ορισμένες τιμές, και αντιπρόσωποι (proxies) :class:`ForwardRef` " +"για μη ορισμένες τιμές. Τα πραγματικά αντικείμενα μπορεί να περιέχουν " +"αναφορές σε αντικείμενα αντιπροσώπων :class:`ForwardRef`." #: library/annotationlib.rst:157 msgid "" @@ -236,15 +341,22 @@ msgid "" "code, up to modifications including, but not restricted to, whitespace " "normalizations and constant values optimizations." msgstr "" +"Οι τιμές είναι η συμβολοσειρά κειμένου του σχολιασμού όπως εμφανίζεται στον " +"πηγαίο κώδικα, με κάποιες τροποποιήσεις που περιλαμβάνουν κανονικοποιήσεις " +"λευκών χαρακτήρων και βελτιστοποιήσεις σταθερών τιμών (αλλά δεν " +"περιορίζονται σε αυτές)." #: library/annotationlib.rst:161 msgid "" "The exact values of these strings may change in future versions of Python." msgstr "" +"Οι ακριβείς τιμές αυτών των συμβολοσειρών ενδέχεται να αλλάξουν σε " +"μελλοντικές εκδόσεις της Python." #: library/annotationlib.rst:167 msgid "A proxy object for forward references in annotations." msgstr "" +"Ένα αντικείμενο αντιπροσώπου για αναφορές προς τα εμπρός σε annotations." #: library/annotationlib.rst:169 msgid "" @@ -253,6 +365,11 @@ msgid "" "can happen when a forward reference is used in an annotation, such as when a " "class is referenced before it is defined." msgstr "" +"Στιγμιότυπα αυτής της κλάσης επιστρέφονται όταν χρησιμοποιείται η μορφή :" +"attr:`~Format.FORWARDREF` και τα annotations περιέχουν ένα όνομα που δεν " +"μπορεί να επιλυθεί. Αυτό μπορεί να συμβεί όταν χρησιμοποιείται μια αναφορά " +"προς τα εμπρός σε έναν σχολιασμό, όπως όταν γίνεται αναφορά σε μια κλάση " +"πριν αυτή οριστεί." #: library/annotationlib.rst:176 msgid "" @@ -260,10 +377,13 @@ msgid "" "`~ForwardRef`. The string may not be exactly equivalent to the original " "source." msgstr "" +"Μια συμβολοσειρά που περιέχει τον κώδικα που αξιολογήθηκε για να παραχθεί η :" +"class:`~ForwardRef`. Η συμβολοσειρά μπορεί να μην είναι ακριβώς ισοδύναμη με " +"τον αρχικό πηγαίο κώδικα." #: library/annotationlib.rst:182 msgid "Evaluate the forward reference, returning its value." -msgstr "" +msgstr "Αξιολογεί την αναφορά προς τα εμπρός, επιστρέφοντας την τιμή της." #: library/annotationlib.rst:184 msgid "" @@ -279,6 +399,19 @@ msgid "" "``list[ForwardRef('undefined')]``. If the *format* argument is :attr:" "`~Format.STRING`, the method will return :attr:`~ForwardRef.__forward_arg__`." msgstr "" +"Αν το όρισμα *format* είναι :attr:`~Format.VALUE` (η προεπιλογή), αυτή η " +"μέθοδος μπορεί να προκαλέσει μια εξαίρεση, όπως την :exc:`NameError`, αν η " +"αναφορά προς τα εμπρός αναφέρεται σε ένα όνομα που δεν μπορεί να επιλυθεί. " +"Τα ορίσματα αυτής της μεθόδου μπορούν να χρησιμοποιηθούν για να παρέχουν " +"συνδέσεις για ονόματα που διαφορετικά θα ήταν μη ορισμένα. Αν το όρισμα " +"*format* είναι :attr:`~Format.FORWARDREF`, η μέθοδος δεν θα προκαλέσει ποτέ " +"εξαίρεση, αλλά μπορεί να επιστρέψει ένα στιγμιότυπο της :class:" +"`~ForwardRef`. Για παράδειγμα, αν το αντικείμενο αναφοράς προς τα εμπρός " +"περιέχει τον κώδικα ``list[undefined]``, όπου ``undefined`` είναι ένα όνομα " +"που δεν έχει οριστεί, η αξιολόγησή του με τη μορφή :attr:`~Format." +"FORWARDREF` θα επιστρέψει ``list[ForwardRef('undefined')]``. Αν το όρισμα " +"*format* είναι :attr:`~Format.STRING`, η μέθοδος θα επιστρέψει :attr:" +"`~ForwardRef.__forward_arg__`." #: library/annotationlib.rst:196 msgid "" @@ -287,6 +420,11 @@ msgid "" "object that contains the annotation from which the :class:`~ForwardRef` " "derives, such as a module object, type object, or function object." msgstr "" +"Η παράμετρος *owner* παρέχει τον προτιμώμενο μηχανισμό για το πέρασμα " +"πληροφοριών εμβέλειας σε αυτή τη μέθοδο. Ο ιδιοκτήτης μιας :class:" +"`~ForwardRef` είναι το αντικείμενο που περιέχει τον σχολιασμό από τον οποίο " +"προέρχεται η :class:`~ForwardRef`, όπως ένα αντικείμενο module, αντικείμενο " +"τύπου ή αντικείμενο συνάρτησης." #: library/annotationlib.rst:201 msgid "" @@ -302,6 +440,19 @@ msgid "" "an annotation found in the class namespace of a generic class ``C``, " "*type_params* should be set to ``C.__type_params__``." msgstr "" +"Οι παράμετροι *globals*, *locals* και *type_params* παρέχουν έναν πιο ακριβή " +"μηχανισμό για τον επηρεασμό των ονομάτων που είναι διαθέσιμα όταν " +"αξιολογείται η :class:`~ForwardRef`. Τα *globals* και *locals* περνιούνται " +"στη :func:`eval`, αντιπροσωπεύοντας τους καθολικούς και τοπικούς χώρους " +"ονομάτων στους οποίους αξιολογείται το όνομα. Η παράμετρος *type_params* " +"είναι σχετική για αντικείμενα που δημιουργούνται χρησιμοποιώντας την εγγενή " +"σύνταξη για :ref:`γενικευμένες κλάσεις ` και :ref:" +"`συναρτήσεις `. Είναι ένα tuple από :ref:`παραμέτρους " +"τύπου ` που είναι εντός εμβέλειας όσο η αναφορά προς τα εμπρός " +"αξιολογείται. Για παράδειγμα, αν αξιολογείται μία :class:`~ForwardRef` που " +"ανακτήθηκε από έναν σχολιασμό, που βρίσκεται στον χώρο ονομάτων κλάσης μιας " +"γενικευμένης κλάσης ``C``, το *type_params* θα πρέπει να οριστεί ως ``C." +"__type_params__``." #: library/annotationlib.rst:212 msgid "" @@ -312,6 +463,14 @@ msgid "" "any information about their scope, so passing arguments to this method may " "be necessary to evaluate them successfully." msgstr "" +"Τα στιγμιότυπα :class:`~ForwardRef` που επιστρέφονται από τη :func:" +"`get_annotations` διατηρούν αναφορές σε πληροφορίες σχετικές με την εμβέλεια " +"από την οποία προήλθαν, οπότε η κλήση αυτής της μεθόδου χωρίς περαιτέρω " +"ορίσματα μπορεί να είναι επαρκής για την αξιολόγηση τέτοιων αντικειμένων. Τα " +"στιγμιότυπα της :class:`~ForwardRef` που δημιουργούνται με άλλα μέσα μπορεί " +"να μην έχουν καμία πληροφορία σχετικά με την εμβέλειά τους, οπότε το πέρασμα " +"ορισμάτων σε αυτή τη μέθοδο μπορεί να είναι απαραίτητο για την επιτυχή " +"αξιολόγησή τους." #: library/annotationlib.rst:219 msgid "" @@ -319,10 +478,13 @@ msgid "" "class:`~ForwardRef` does not contain information about its origin, empty " "globals and locals dictionaries are used." msgstr "" +"Αν δεν παρέχεται κανένα από τα *owner*, *globals*, *locals* ή *type_params* " +"και η :class:`~ForwardRef` δεν περιέχει πληροφορίες σχετικά με την προέλευσή " +"της, χρησιμοποιούνται κενά καθολικά και τοπικά λεξικά." #: library/annotationlib.rst:227 msgid "Functions" -msgstr "" +msgstr "Συναρτήσεις" #: library/annotationlib.rst:231 msgid "" @@ -332,12 +494,21 @@ msgid "" "annotate functions that support the :attr:`~Format.STRING` format but do not " "have access to the code creating the annotations." msgstr "" +"Μετατρέπει ένα annotations λεξικό που περιέχει τιμές χρόνου εκτέλεσης, σε " +"ένα λεξικό που περιέχει μόνο συμβολοσειρές. Αν οι τιμές δεν είναι ήδη " +"συμβολοσειρές, μετατρέπονται χρησιμοποιώντας τη :func:`type_repr`. Αυτή " +"προορίζεται ως βοηθητική λειτουργία για συναρτήσεις σχολιασμού, που " +"παρέχονται από τον χρήστη και υποστηρίζουν τη μορφή :attr:`~Format.STRING` " +"αλλά δεν έχουν πρόσβαση στον κώδικα που δημιουργεί τα annotations." #: library/annotationlib.rst:238 msgid "" "For example, this is used to implement the :attr:`~Format.STRING` for :class:" "`typing.TypedDict` classes created through the functional syntax:" msgstr "" +"Για παράδειγμα, χρησιμοποιείται για την υλοποίηση της :attr:`~Format.STRING` " +"για κλάσεις :class:`typing.TypedDict` που δημιουργούνται μέσω της " +"συναρτησιακής σύνταξης:" #: library/annotationlib.rst:241 msgid "" @@ -346,6 +517,10 @@ msgid "" ">>> get_annotations(Movie, format=Format.STRING)\n" "{'name': 'str', 'year': 'int'}" msgstr "" +">>> from typing import TypedDict\n" +">>> Movie = TypedDict(\"movie\", {\"name\": str, \"year\": int})\n" +">>> get_annotations(Movie, format=Format.STRING)\n" +"{'name': 'str', 'year': 'int'}" #: library/annotationlib.rst:252 msgid "" @@ -353,6 +528,9 @@ msgid "" "member of the :class:`Format` enum, and return the annotations dictionary " "produced by the function." msgstr "" +"Καλεί τη :term:`συνάρτηση σχολιασμού ` *annotate* με το " +"δοθέν *format*, ένα μέλος του enum :class:`Format`, και επιστρέφει το λεξικό " +"των annotations που παράγεται από τη συνάρτηση." #: library/annotationlib.rst:256 msgid "" @@ -364,6 +542,14 @@ msgid "" "when implementing functionality that needs to partially evaluate annotations " "while a class is being constructed." msgstr "" +"Αυτή η βοηθητική συνάρτηση απαιτείται, επειδή οι συναρτήσεις σχολιασμού που " +"δημιουργούνται από τον μεταγλωττιστή για τις συναρτήσεις, τις κλάσεις και τα " +"modules υποστηρίζουν μόνο τη μορφή :attr:`~Format.VALUE`, όταν καλούνται " +"απευθείας. Για την υποστήριξη άλλων μορφών, αυτή η συνάρτηση καλεί τη " +"συνάρτηση σχολιασμού σε ένα ειδικό περιβάλλον που της επιτρέπει να παράγει " +"annotations στις άλλες μορφές. Αυτό είναι ένα χρήσιμο δομικό στοιχείο κατά " +"την υλοποίηση λειτουργικότητας, που χρειάζεται να αξιολογεί μερικώς τα " +"annotations ενώ κατασκευάζεται μια κλάση." #: library/annotationlib.rst:265 msgid "" @@ -371,6 +557,10 @@ msgid "" "class, or module. If provided, it is used in the :attr:`~Format.FORWARDREF` " "format to produce a :class:`ForwardRef` object that carries more information." msgstr "" +"Το *owner* είναι το αντικείμενο που κατέχει τη συνάρτηση σχολιασμού, συνήθως " +"μια συνάρτηση, κλάση ή module. Αν παρέχεται, χρησιμοποιείται στη μορφή :attr:" +"`~Format.FORWARDREF` για να παράγει ένα αντικείμενο της :class:`ForwardRef` " +"που μεταφέρει περισσότερες πληροφορίες." #: library/annotationlib.rst:272 msgid "" @@ -378,6 +568,9 @@ msgid "" "contains an explanation of the implementation technique used by this " "function." msgstr "" +"Το :PEP:`PEP 649 <649#the-stringizer-and-the-fake-globals-environment>` " +"περιέχει μια εξήγηση της τεχνικής υλοποίησης που χρησιμοποιείται από αυτή τη " +"συνάρτηση." #: library/annotationlib.rst:280 msgid "" @@ -387,54 +580,76 @@ msgid "" "always returns a dictionary mapping strings to annotations, while this " "function returns a single value." msgstr "" +"Καλεί τη :term:`συνάρτηση αξιολόγησης ` *evaluate* με ο " +"δοθέν *format*, ένα μέλος του enum :class:`Format`, και επιστρέφει την τιμή " +"που παράγεται από τη συνάρτηση. Είναι παρόμοιο με την :func:" +"`call_annotate_function`, αλλά η τελευταία επιστρέφει πάντα ένα λεξικό που " +"αντιστοιχίζει συμβολοσειρές σε annotations, ενώ αυτή η συνάρτηση επιστρέφει " +"μια ενιαία τιμή." #: library/annotationlib.rst:286 msgid "" "This is intended for use with the evaluate functions generated for lazily " "evaluated elements related to type aliases and type parameters:" msgstr "" +"Προορίζεται για χρήση με τις συναρτήσεις αξιολόγησης που δημιουργούνται για " +"νωχελικά αξιολογούμενα στοιχεία, που σχετίζονται με ψευδώνυμα τύπων και " +"παραμέτρους τύπου:" #: library/annotationlib.rst:289 msgid ":meth:`typing.TypeAliasType.evaluate_value`, the value of type aliases" msgstr "" +":meth:`typing.TypeAliasType.evaluate_value`, η τιμή των ψευδωνύμων τύπων" #: library/annotationlib.rst:290 msgid ":meth:`typing.TypeVar.evaluate_bound`, the bound of type variables" -msgstr "" +msgstr ":meth:`typing.TypeVar.evaluate_bound`, το όριο των μεταβλητών τύπου" #: library/annotationlib.rst:291 msgid "" ":meth:`typing.TypeVar.evaluate_constraints`, the constraints of type " "variables" msgstr "" +":meth:`typing.TypeVar.evaluate_constraints`, οι περιορισμοί των μεταβλητών " +"τύπου" #: library/annotationlib.rst:293 msgid "" ":meth:`typing.TypeVar.evaluate_default`, the default value of type variables" msgstr "" +":meth:`typing.TypeVar.evaluate_default`, η προεπιλεγμένη τιμή των μεταβλητών " +"τύπου" #: library/annotationlib.rst:295 msgid "" ":meth:`typing.ParamSpec.evaluate_default`, the default value of parameter " "specifications" msgstr "" +":meth:`typing.ParamSpec.evaluate_default`, η προεπιλεγμένη τιμή των " +"προδιαγραφών παραμέτρων" #: library/annotationlib.rst:297 msgid "" ":meth:`typing.TypeVarTuple.evaluate_default`, the default value of type " "variable tuples" msgstr "" +":meth:`typing.TypeVarTuple.evaluate_default`, η προεπιλεγμένη τιμή των " +"μεταβλητών τύπου tuple" #: library/annotationlib.rst:300 msgid "" "*owner* is the object that owns the evaluate function, such as the type " "alias or type variable object." msgstr "" +"Το *owner* είναι το αντικείμενο που κατέχει τη συνάρτηση αξιολόγησης, όπως " +"το αντικείμενο ψευδωνύμου τύπου ή μεταβλητής τύπου." #: library/annotationlib.rst:303 msgid "" "*format* can be used to control the format in which the value is returned:" msgstr "" +"Το *format* μπορεί να χρησιμοποιηθεί για τον έλεγχο της μορφής στην οποία " +"επιστρέφεται η τιμή:" #: library/annotationlib.rst:305 msgid "" @@ -448,6 +663,15 @@ msgid "" ">>> call_evaluate_function(Alias.evaluate_value, Format.STRING)\n" "'undefined'" msgstr "" +">>> type Alias = undefined\n" +">>> call_evaluate_function(Alias.evaluate_value, Format.VALUE)\n" +"Traceback (most recent call last):\n" +"...\n" +"NameError: name 'undefined' is not defined\n" +">>> call_evaluate_function(Alias.evaluate_value, Format.FORWARDREF)\n" +"ForwardRef('undefined')\n" +">>> call_evaluate_function(Alias.evaluate_value, Format.STRING)\n" +"'undefined'" #: library/annotationlib.rst:321 msgid "" @@ -458,10 +682,17 @@ msgid "" "function can be retrieved with ``cls.__annotate__``. See :ref:`below " "` for an example using this function in a metaclass." msgstr "" +"Ανακτά τη :term:`συνάρτηση σχολιασμού ` από ένα λεξικό " +"χώρου ονομάτων κλάσης *namespace*. Επιστρέφει :const:`!None` αν ο χώρος " +"ονομάτων δεν περιέχει συνάρτηση σχολιασμού. Eίναι κυρίως χρήσιμο πριν η " +"κλάση δημιουργηθεί πλήρως (π.χ., σε μια μετάκληση)· μετά την ύπαρξη της " +"κλάσης, η συνάρτηση σχολιασμού μπορεί να ανακτηθεί με την ``cls." +"__annotate__``. Δείτε :ref:`παρακάτω ` για ένα " +"παράδειγμα χρήσης αυτής της συνάρτησης σε μια μετάκληση." #: library/annotationlib.rst:331 msgid "Compute the annotations dict for an object." -msgstr "" +msgstr "Υπολογίζει το λεξικό των annotations για ένα αντικείμενο." #: library/annotationlib.rst:333 msgid "" @@ -469,6 +700,10 @@ msgid "" "__annotate__` or :attr:`~object.__annotations__` attributes. Passing any " "other object raises :exc:`TypeError`." msgstr "" +"Το *obj* μπορεί να είναι μια καλέσιμη οντότητα, μία κλάση, ένα module ή άλλο " +"αντικείμενο με ιδιότητες :attr:`~object.__annotate__` ή :attr:`~object." +"__annotations__`. Το πέρασμα οποιουδήποτε άλλου αντικειμένου κάνει raise " +"την :exc:`TypeError`." #: library/annotationlib.rst:337 msgid "" @@ -476,12 +711,17 @@ msgid "" "returned, and must be a member of the :class:`Format` enum or its integer " "equivalent. The different formats work as follows:" msgstr "" +"Η παράμετρος *format* ελέγχει τη μορφή στην οποία επιστρέφονται τα " +"annotations και πρέπει να είναι μέλος του enum :class:`Format` ή το ακέραιο " +"ισοδύναμό του. Οι διάφορες μορφές λειτουργούν ως εξής:" #: library/annotationlib.rst:341 msgid "" "VALUE: :attr:`!object.__annotations__` is tried first; if that does not " "exist, the :attr:`!object.__annotate__` function is called if it exists." msgstr "" +"VALUE: Δοκιμάζεται πρώτα το :attr:`!object.__annotations__`· αν αυτό δεν " +"υπάρχει, καλείται η συνάρτηση :attr:`!object.__annotate__` αν υπάρχει." #: library/annotationlib.rst:344 msgid "" @@ -490,6 +730,11 @@ msgid "" "function is called. If it does not exist either, :attr:`!object." "__annotations__` is tried again and any error from accessing it is re-raised." msgstr "" +"FORWARDREF: Αν το :attr:`!object.__annotations__` υπάρχει και μπορεί να " +"αξιολογηθεί επιτυχώς, χρησιμοποιείται· διαφορετικά, καλείται η συνάρτηση :" +"attr:`!object.__annotate__`. Αν ούτε αυτή υπάρχει, δοκιμάζεται ξανά το :attr:" +"`!object.__annotations__` και κάθε σφάλμα από την πρόσβαση σε αυτό γίνεται " +"raise ξανά." #: library/annotationlib.rst:349 msgid "" @@ -500,6 +745,12 @@ msgid "" "back to using :attr:`~Format.VALUE`. If :attr:`~Format.VALUE` fails, the " "error from this call will be raised." msgstr "" +"Όταν καλείται το :attr:`!object.__annotate__`, καλείται πρώτα με το :attr:" +"`~Format.FORWARDREF`. Αν αυτό δεν είναι υλοποιημένο, στη συνέχεια ελέγχει αν " +"υποστηρίζεται το :attr:`~Format.VALUE_WITH_FAKE_GLOBALS` και το χρησιμοποιεί " +"στο περιβάλλον με τα ψεύτικα καθολικά. Αν καμία από αυτές τις μορφές δεν " +"υποστηρίζεται, θα καταφύγει στη χρήση του :attr:`~Format.VALUE`. Αν το :attr:" +"`~Format.VALUE` αποτύχει, το σφάλμα από αυτή την κλήση θα γίνει raise." #: library/annotationlib.rst:355 msgid "" @@ -507,6 +758,10 @@ msgid "" "otherwise, :attr:`!object.__annotations__` is used and stringified using :" "func:`annotations_to_string`." msgstr "" +"STRING: Αν υπάρχει το :attr:`!object.__annotate__`, καλείται πρώτο· " +"διαφορετικά, χρησιμοποιείται το :attr:`!object.__annotations__` και " +"μετατρέπεται σε συμβολοσειρά χρησιμοποιώντας την :func:" +"`annotations_to_string`." #: library/annotationlib.rst:359 msgid "" @@ -518,6 +773,14 @@ msgid "" "`annotations_to_string`. If :attr:`~Format.VALUE` fails, the error from this " "call will be raised." msgstr "" +"Όταν καλείται το :attr:`!object.__annotate__`, καλείται πρώτα με :attr:" +"`~Format.STRING`. Αν αυτό δεν είναι υλοποιημένο, στη συνέχεια ελέγχει αν " +"υποστηρίζεται το :attr:`~Format.VALUE_WITH_FAKE_GLOBALS` και το χρησιμοποιεί " +"στο περιβάλλον με τα ψεύτικα καθολικά. Αν καμία από αυτές τις μορφές δεν " +"υποστηρίζεται, θα καταφύγει στη χρήση του :attr:`~Format.VALUE` με το " +"αποτέλεσμα να μετατρέπεται χρησιμοποιώντας την :func:" +"`annotations_to_string`. Αν το :attr:`~Format.VALUE` αποτύχει, το σφάλμα από " +"αυτή την κλήση θα γίνει raise." #: library/annotationlib.rst:366 msgid "" @@ -525,10 +788,13 @@ msgid "" "called; calling it twice on the same object will return two different but " "equivalent dicts." msgstr "" +"Επιστρέφει ένα λεξικό. Η :func:`!get_annotations` επιστρέφει ένα νέο λεξικό " +"κάθε φορά που καλείται· αν κληθεί δύο φορές στο ίδιο αντικείμενο θα " +"επιστρέψει δύο διαφορετικά αλλά ισοδύναμα λεξικά." #: library/annotationlib.rst:370 msgid "This function handles several details for you:" -msgstr "" +msgstr "Αυτή η συνάρτηση χειρίζεται αρκετές λεπτομέρειες για εσάς:" #: library/annotationlib.rst:372 msgid "" @@ -537,6 +803,11 @@ msgid "" "(``from __future__ import annotations``). It is an error to set *eval_str* " "to true with formats other than :attr:`Format.VALUE`." msgstr "" +"Αν το *eval_str* είναι αληθές, οι τιμές τύπου :class:`!str` θα " +"απομετατραπούν από συμβολοσειρές χρησιμοποιώντας τη :func:`eval`. " +"Προορίζεται για χρήση με annotations ως συμβολοσειρές (``from __future__ " +"import annotations``). Είναι λάθος να οριστεί το *eval_str* ως αληθές με " +"μορφές διαφορετικές από το :attr:`Format.VALUE`." #: library/annotationlib.rst:377 msgid "" @@ -544,6 +815,9 @@ msgid "" "and methods always have an annotations dict; classes, modules, and other " "types of callables may not.)" msgstr "" +"Αν το *obj* δεν έχει annotations λεξικό, επιστρέφει ένα κενό λεξικό. (Οι " +"συναρτήσεις και οι μέθοδοι έχουν πάντα annotations λεξικό· οι κλάσεις, τα " +"modules και άλλοι τύποι καλέσιμων μπορεί να μην έχουν.)" #: library/annotationlib.rst:381 msgid "" @@ -551,18 +825,25 @@ msgid "" "metaclasses. If a class doesn't have its own annotations dict, returns an " "empty dict." msgstr "" +"Αγνοεί τα κληρονομημένα annotations σε κλάσεις, καθώς και τα annotations σε " +"μετακλάσεις. Αν μια κλάση δεν έχει το δικό της annotations λεξικό, " +"επιστρέφει ένα κενό λεξικό." #: library/annotationlib.rst:384 msgid "" "All accesses to object members and dict values are done using ``getattr()`` " "and ``dict.get()`` for safety." msgstr "" +"Όλες οι προσβάσεις σε μέλη αντικειμένων και τιμές λεξικών γίνονται " +"χρησιμοποιώντας τις ``getattr()`` και ``dict.get()`` για λόγους ασφαλείας." #: library/annotationlib.rst:387 msgid "" "*eval_str* controls whether or not values of type :class:`!str` are replaced " "with the result of calling :func:`eval` on those values:" msgstr "" +"Το *eval_str* ελέγχει αν οι τιμές τύπου :class:`!str` αντικαθίστανται ή όχι " +"με το αποτέλεσμα της κλήσης της :func:`eval` σε αυτές τις τιμές:" #: library/annotationlib.rst:390 msgid "" @@ -571,12 +852,18 @@ msgid "" "`eval` raises an exception, it will unwind the stack past the :func:`!" "get_annotations` call.)" msgstr "" +"Αν το eval_str είναι αληθές, η :func:`eval` καλείται σε τιμές τύπου :class:`!" +"str`. (Σημειώστε ότι η :func:`!get_annotations` δεν πιάνει εξαιρέσεις· αν η :" +"func:`eval` κάνει raise μια εξαίρεση, θα ξετυλίξει τη στοίβα πέρα από την " +"κλήση της :func:`!get_annotations`.)" #: library/annotationlib.rst:394 msgid "" "If *eval_str* is false (the default), values of type :class:`!str` are " "unchanged." msgstr "" +"Αν το *eval_str* είναι ψευδές (η προεπιλογή), οι τιμές τύπου :class:`!str` " +"παραμένουν αμετάβλητες." #: library/annotationlib.rst:397 msgid "" @@ -585,16 +872,26 @@ msgid "" "None`, this function may replace that value with a context-specific default, " "contingent on ``type(obj)``:" msgstr "" +"Τα *globals* και *locals* περνιούνται στην :func:`eval`· δείτε την " +"τεκμηρίωση της :func:`eval` για περισσότερες πληροφορίες. Αν το *globals* ή " +"το *locals* είναι :const:`!None`, αυτή η συνάρτηση μπορεί να αντικαταστήσει " +"αυτή την τιμή με μια προεπιλογή ειδική για το πλαίσιο, εξαρτώμενη από το " +"``type(obj)``:" #: library/annotationlib.rst:402 msgid "If *obj* is a module, *globals* defaults to ``obj.__dict__``." msgstr "" +"Αν το *obj* είναι module, η προεπιλογή για το *globals* είναι ``obj." +"__dict__``." #: library/annotationlib.rst:403 msgid "" "If *obj* is a class, *globals* defaults to ``sys.modules[obj.__module__]." "__dict__`` and *locals* defaults to the *obj* class namespace." msgstr "" +"Αν το *obj* είναι κλάση, η προεπιλογή για το *globals* είναι ``sys." +"modules[obj.__module__].__dict__`` και η προεπιλογή για το *locals* είναι ο " +"χώρος ονομάτων κλάσης του *obj*." #: library/annotationlib.rst:406 msgid "" @@ -603,6 +900,11 @@ msgid "" "func:`functools.update_wrapper`) or a :class:`functools.partial` object, it " "is unwrapped until a non-wrapped function is found." msgstr "" +"Αν το *obj* είναι καλέσιμο, η προεπιλογή για το *globals* είναι :attr:`obj." +"__globals__ `, παρόλο που αν το *obj* είναι μια " +"περιτυλιγμένη συνάρτηση (χρησιμοποιώντας :func:`functools.update_wrapper`) ή " +"ένα αντικείμενο της :class:`functools.partial`, ξετυλίγεται μέχρι να βρεθεί " +"μια μη περιτυλιγμένη συνάρτηση." #: library/annotationlib.rst:412 msgid "" @@ -610,6 +912,10 @@ msgid "" "annotations dict of any object. See :ref:`annotations-howto` for more " "information on annotations best practices." msgstr "" +"Η κλήση της :func:`!get_annotations` είναι η βέλτιστη πρακτική για την " +"πρόσβαση στο λεξικό των annotations οποιουδήποτε αντικειμένου. Δείτε το :ref:" +"`annotations-howto` για περισσότερες πληροφορίες σχετικά με τις βέλτιστες " +"πρακτικές των annotations." #: library/annotationlib.rst:416 msgid "" @@ -618,6 +924,10 @@ msgid "" ">>> get_annotations(f)\n" "{'a': , 'b': , 'return': }" msgstr "" +">>> def f(a: int, b: str) -> float:\n" +"... pass\n" +">>> get_annotations(f)\n" +"{'a': , 'b': , 'return': }" #: library/annotationlib.rst:427 msgid "" @@ -625,6 +935,10 @@ msgid "" "`~Format.STRING` format. This calls :func:`repr` for most objects, but has " "special handling for some objects, such as type objects." msgstr "" +"Μετατρέπει μια αυθαίρετη τιμή Python σε μια μορφή κατάλληλη για χρήση από τη " +"μορφή :attr:`~Format.STRING`. Αυτή καλεί την :func:`repr` για τα περισσότερα " +"αντικείμενα, αλλά έχει ειδικό χειρισμό για ορισμένα αντικείμενα, όπως τα " +"αντικείμενα τύπου." #: library/annotationlib.rst:431 msgid "" @@ -634,14 +948,20 @@ msgid "" "string representation for other objects that contain values that are " "commonly encountered in annotations." msgstr "" +"Αυτό προορίζεται ως βοηθητική λειτουργία για συναρτήσεις σχολιασμού " +"παρεχόμενες από τον χρήστη που υποστηρίζουν τη μορφή :attr:`~Format.STRING`, " +"αλλά δεν έχουν πρόσβαση στον κώδικα που δημιουργεί τα annotations. Μπορεί " +"επίσης να χρησιμοποιηθεί για να παρέχει μια φιλική προς τον χρήστη " +"αναπαράσταση συμβολοσειράς για άλλα αντικείμενα που περιέχουν τιμές που " +"συναντώνται συνήθως σε annotations." #: library/annotationlib.rst:441 msgid "Recipes" -msgstr "" +msgstr "Συνταγές" #: library/annotationlib.rst:446 msgid "Using annotations in a metaclass" -msgstr "" +msgstr "Χρήση των annotations σε μετακλάση" #: library/annotationlib.rst:448 msgid "" @@ -656,6 +976,18 @@ msgid "" "format will usually be best, because this allows the annotations to refer to " "names that cannot yet be resolved when the class is created." msgstr "" +"Μια :ref:`μετακλάση ` μπορεί να θέλει να επιθεωρήσει ή ακόμη " +"και να τροποποιήσει τα annotations στο σώμα μιας κλάσης κατά τη δημιουργία " +"της κλάσης. Αυτό απαιτεί την ανάκτηση των annotations από το λεξικό χώρου " +"ονομάτων της κλάσης. Για κλάσεις που δημιουργούνται με το ``from __future__ " +"import annotations``, τα annotations θα βρίσκονται στο κλειδί " +"``__annotations__`` του λεξικού. Για άλλες κλάσεις με annotations, η :func:" +"`get_annotate_from_class_namespace` μπορεί να χρησιμοποιηθεί για να πάρει τη " +"συνάρτηση σχολιασμού, και η :func:`call_annotate_function` μπορεί να " +"χρησιμοποιηθεί για να την καλέσει και να ανακτήσει τα annotations. Η χρήση " +"της μορφής :attr:`~Format.FORWARDREF` συνήθως θα είναι η καλύτερη, επειδή " +"επιτρέπει στα annotations να αναφέρονται σε ονόματα που δεν μπορούν ακόμη να " +"επιλυθούν όταν δημιουργείται η κλάση." #: library/annotationlib.rst:459 msgid "" @@ -663,12 +995,18 @@ msgid "" "that calls the original annotate function, makes any necessary adjustments, " "and returns the result." msgstr "" +"Για να τροποποιήσετε τα annotations, είναι καλύτερο να δημιουργήσετε μια " +"περιτυλιγμένη συνάρτηση σχολιασμού που καλεί την αρχική συνάρτηση " +"σχολιασμού, κάνει τις απαραίτητες προσαρμογές και επιστρέφει το αποτέλεσμα." #: library/annotationlib.rst:463 msgid "" "Below is an example of a metaclass that filters out all :class:`typing." "ClassVar` annotations from the class and puts them in a separate attribute:" msgstr "" +"Παρακάτω είναι ένα παράδειγμα μιας μετακλάσης, που φιλτράρει όλα τα " +"annotations :class:`typing.ClassVar` από την κλάση και τα τοποθετεί σε ένα " +"ξεχωριστό χαρακτηριστικό:" #: library/annotationlib.rst:466 msgid "" @@ -720,10 +1058,57 @@ msgid "" "attribute\n" " return typ" msgstr "" +"import annotationlib\n" +"import typing\n" +"\n" +"class ClassVarSeparator(type):\n" +" def __new__(mcls, name, bases, ns):\n" +" if \"__annotations__\" in ns: # from __future__ import annotations\n" +" annotations = ns[\"__annotations__\"]\n" +" classvar_keys = {\n" +" key for key, value in annotations.items()\n" +" # Use string comparison for simplicity; a more robust solution\n" +" # could use annotationlib.ForwardRef.evaluate\n" +" if value.startswith(\"ClassVar\")\n" +" }\n" +" classvars = {key: annotations[key] for key in classvar_keys}\n" +" ns[\"__annotations__\"] = {\n" +" key: value for key, value in annotations.items()\n" +" if key not in classvar_keys\n" +" }\n" +" wrapped_annotate = None\n" +" elif annotate := annotationlib.get_annotate_from_class_namespace(ns):\n" +" annotations = annotationlib.call_annotate_function(\n" +" annotate, format=annotationlib.Format.FORWARDREF\n" +" )\n" +" classvar_keys = {\n" +" key for key, value in annotations.items()\n" +" if typing.get_origin(value) is typing.ClassVar\n" +" }\n" +" classvars = {key: annotations[key] for key in classvar_keys}\n" +"\n" +" def wrapped_annotate(format):\n" +" annos = annotationlib.call_annotate_function(annotate, format, " +"owner=typ)\n" +" return {key: value for key, value in annos.items() if key not in " +"classvar_keys}\n" +"\n" +" else: # no annotations\n" +" classvars = {}\n" +" wrapped_annotate = None\n" +" typ = super().__new__(mcls, name, bases, ns)\n" +"\n" +" if wrapped_annotate is not None:\n" +" # Wrap the original __annotate__ with a wrapper that removes " +"ClassVars\n" +" typ.__annotate__ = wrapped_annotate\n" +" typ.classvars = classvars # Store the ClassVars in a separate " +"attribute\n" +" return typ" #: library/annotationlib.rst:514 msgid "Limitations of the ``STRING`` format" -msgstr "" +msgstr "Περιορισμοί της μορφής ``STRING``" #: library/annotationlib.rst:516 msgid "" @@ -731,6 +1116,9 @@ msgid "" "the annotation, but the implementation strategy used means that it is not " "always possible to recover the exact source code." msgstr "" +"Η μορφή :attr:`~Format.STRING` προορίζεται για να προσεγγίζει τον πηγαίο " +"κώδικα του σχολιασμού, αλλά η στρατηγική υλοποίησης που χρησιμοποιείται " +"σημαίνει ότι δεν είναι πάντα δυνατή η ανάκτηση του ακριβούς πηγαίου κώδικα." #: library/annotationlib.rst:520 msgid "" @@ -738,6 +1126,10 @@ msgid "" "present in the compiled code, including comments, whitespace, " "parenthesization, and operations that get simplified by the compiler." msgstr "" +"Πρώτον, ο μετατροπέας συμβολοσειράς φυσικά δεν μπορεί να ανακτήσει " +"πληροφορίες που δεν υπάρχουν στον μεταγλωττισμένο κώδικα, " +"συμπεριλαμβανομένων των σχολίων, των λευκών χαρακτήρων, των παρενθέσεων και " +"των πράξεων που απλοποιούνται από τον μεταγλωττιστή." #: library/annotationlib.rst:524 msgid "" @@ -748,6 +1140,13 @@ msgid "" "enough that it is possible to achieve arbitrary code execution even with no " "access to any globals or builtins. For example:" msgstr "" +"Δεύτερον, ο μετατροπέας συμβολοσειράς μπορεί να παρεμβάλει σχεδόν όλες τις " +"πράξεις που περιλαμβάνουν ονόματα που αναζητούνται σε κάποια εμβέλεια, αλλά " +"δεν μπορεί να παρεμβάλει πράξεις που λειτουργούν πλήρως πάνω σε σταθερές. Ως " +"επακόλουθο, αυτό σημαίνει επίσης ότι δεν είναι ασφαλές να ζητείται η μορφή " +"``STRING`` σε μη αξιόπιστο κώδικα: η Python είναι αρκετά ισχυρή ώστε να " +"μπορεί να επιτευχθεί αυθαίρετη εκτέλεση κώδικα ακόμη και χωρίς πρόσβαση σε " +"global ή builtins. Για παράδειγμα:" #: library/annotationlib.rst:530 msgid "" @@ -758,12 +1157,21 @@ msgid "" "Hello world\n" "{'x': 'None'}" msgstr "" +">>> def f(x: (1).__class__.__base__.__subclasses__()[-1].__init__." +"__builtins__[\"print\"](\"Hello world\")): pass\n" +"...\n" +">>> annotationlib.get_annotations(f, format=annotationlib.Format.STRING)\n" +"Hello world\n" +"{'x': 'None'}" #: library/annotationlib.rst:539 msgid "" "This particular example works as of the time of writing, but it relies on " "implementation details and is not guaranteed to work in the future." msgstr "" +"Αυτό το συγκεκριμένο παράδειγμα λειτουργεί κατά τη στιγμή της συγγραφής, " +"αλλά βασίζεται σε λεπτομέρειες υλοποίησης και δεν είναι εγγυημένο ότι θα " +"λειτουργεί στο μέλλον." #: library/annotationlib.rst:542 msgid "" @@ -773,60 +1181,71 @@ msgid "" "code; others are unsupported, meaning that they may result in incorrect " "output or an error." msgstr "" +"Μεταξύ των διαφορετικών ειδών εκφράσεων που υπάρχουν στην Python, όπως " +"αναπαρίστανται από το module :mod:`ast`, ορισμένες εκφράσεις υποστηρίζονται, " +"που σημαίνει ότι η μορφή ``STRING`` μπορεί γενικά να ανακτήσει τον αρχικό " +"πηγαίο κώδικα· άλλες δεν υποστηρίζονται, που σημαίνει ότι μπορεί να " +"οδηγήσουν σε λανθασμένη έξοδο ή σφάλμα." #: library/annotationlib.rst:547 msgid "The following are supported (sometimes with caveats):" -msgstr "" +msgstr "Τα ακόλουθα υποστηρίζονται (μερικές φορές με επιφυλάξεις):" #: library/annotationlib.rst:549 msgid ":class:`ast.BinOp`" -msgstr "" +msgstr ":class:`ast.BinOp`" #: library/annotationlib.rst:550 msgid ":class:`ast.UnaryOp`" -msgstr "" +msgstr ":class:`ast.UnaryOp`" #: library/annotationlib.rst:552 msgid "" ":class:`ast.Invert` (``~``), :class:`ast.UAdd` (``+``), and :class:`ast." "USub` (``-``) are supported" msgstr "" +"Οι :class:`ast.Invert` (``~``), :class:`ast.UAdd` (``+``) και :class:`ast." +"USub` (``-``) υποστηρίζονται" #: library/annotationlib.rst:553 msgid ":class:`ast.Not` (``not``) is not supported" -msgstr "" +msgstr "Η :class:`ast.Not` (``not``) δεν υποστηρίζεται" #: library/annotationlib.rst:555 msgid ":class:`ast.Dict` (except when using ``**`` unpacking)" -msgstr "" +msgstr ":class:`ast.Dict` (εκτός αν χρησιμοποιείται αποσυσκευασία ``**``)" #: library/annotationlib.rst:556 msgid ":class:`ast.Set`" -msgstr "" +msgstr ":class:`ast.Set`" #: library/annotationlib.rst:557 msgid ":class:`ast.Compare`" -msgstr "" +msgstr ":class:`ast.Compare`" #: library/annotationlib.rst:559 msgid ":class:`ast.Eq` and :class:`ast.NotEq` are supported" -msgstr "" +msgstr "Οι :class:`ast.Eq` και :class:`ast.NotEq` υποστηρίζονται" #: library/annotationlib.rst:560 msgid "" ":class:`ast.Lt`, :class:`ast.LtE`, :class:`ast.Gt`, and :class:`ast.GtE` are " "supported, but the operand may be flipped" msgstr "" +"Οι :class:`ast.Lt`, :class:`ast.LtE`, :class:`ast.Gt` και :class:`ast.GtE` " +"υποστηρίζονται, αλλά το τελεστέο μπορεί να αναστραφεί" #: library/annotationlib.rst:561 msgid "" ":class:`ast.Is`, :class:`ast.IsNot`, :class:`ast.In`, and :class:`ast.NotIn` " "are not supported" msgstr "" +"Οι :class:`ast.Is`, :class:`ast.IsNot`, :class:`ast.In` και :class:`ast." +"NotIn` δεν υποστηρίζονται" #: library/annotationlib.rst:563 msgid ":class:`ast.Call` (except when using ``**`` unpacking)" -msgstr "" +msgstr ":class:`ast.Call` (εκτός αν χρησιμοποιείται αποσυσκευασία ``**``)" #: library/annotationlib.rst:564 msgid "" @@ -834,107 +1253,116 @@ msgid "" "for example, escape sequences in strings are lost; hexadecimal numbers are " "converted to decimal)" msgstr "" +":class:`ast.Constant` (αν και όχι η ακριβής αναπαράσταση της σταθεράς· για " +"παράδειγμα, οι ακολουθίες διαφυγής σε συμβολοσειρές χάνονται· οι " +"δεκαεξαδικοί αριθμοί μετατρέπονται σε δεκαδικούς)" #: library/annotationlib.rst:566 msgid ":class:`ast.Attribute` (assuming the value is not a constant)" -msgstr "" +msgstr ":class:`ast.Attribute` (υποθέτοντας ότι η τιμή δεν είναι σταθερά)" #: library/annotationlib.rst:567 msgid ":class:`ast.Subscript` (assuming the value is not a constant)" -msgstr "" +msgstr ":class:`ast.Subscript` (υποθέτοντας ότι η τιμή δεν είναι σταθερά)" #: library/annotationlib.rst:568 msgid ":class:`ast.Starred` (``*`` unpacking)" -msgstr "" +msgstr ":class:`ast.Starred` (αποσυσκευασία ``*``)" #: library/annotationlib.rst:569 msgid ":class:`ast.Name`" -msgstr "" +msgstr ":class:`ast.Name`" #: library/annotationlib.rst:570 msgid ":class:`ast.List`" -msgstr "" +msgstr ":class:`ast.List`" #: library/annotationlib.rst:571 msgid ":class:`ast.Tuple`" -msgstr "" +msgstr ":class:`ast.Tuple`" #: library/annotationlib.rst:572 msgid ":class:`ast.Slice`" -msgstr "" +msgstr ":class:`ast.Slice`" #: library/annotationlib.rst:574 msgid "" "The following are unsupported, but throw an informative error when " "encountered by the stringifier:" msgstr "" +"Τα ακόλουθα δεν υποστηρίζονται, αλλά εγείρει ένα ενημερωτικό σφάλμα όταν " +"συναντώνται από τον μετατροπέα συμβολοσειράς:" #: library/annotationlib.rst:577 msgid "" ":class:`ast.FormattedValue` (f-strings; error is not detected if conversion " "specifiers like ``!r`` are used)" msgstr "" +":class:`ast.FormattedValue` (f-strings· το σφάλμα δεν ανιχνεύεται αν " +"χρησιμοποιούνται προδιαγραφές μετατροπής όπως ``!r``)" #: library/annotationlib.rst:579 msgid ":class:`ast.JoinedStr` (f-strings)" -msgstr "" +msgstr ":class:`ast.JoinedStr` (f-strings)" #: library/annotationlib.rst:581 msgid "The following are unsupported and result in incorrect output:" -msgstr "" +msgstr "Τα ακόλουθα δεν υποστηρίζονται και οδηγούν σε λανθασμένη έξοδο:" #: library/annotationlib.rst:583 msgid ":class:`ast.BoolOp` (``and`` and ``or``)" -msgstr "" +msgstr ":class:`ast.BoolOp` (``and`` και ``or``)" #: library/annotationlib.rst:584 msgid ":class:`ast.IfExp`" -msgstr "" +msgstr ":class:`ast.IfExp`" #: library/annotationlib.rst:585 msgid ":class:`ast.Lambda`" -msgstr "" +msgstr ":class:`ast.Lambda`" #: library/annotationlib.rst:586 msgid ":class:`ast.ListComp`" -msgstr "" +msgstr ":class:`ast.ListComp`" #: library/annotationlib.rst:587 msgid ":class:`ast.SetComp`" -msgstr "" +msgstr ":class:`ast.SetComp`" #: library/annotationlib.rst:588 msgid ":class:`ast.DictComp`" -msgstr "" +msgstr ":class:`ast.DictComp`" #: library/annotationlib.rst:589 msgid ":class:`ast.GeneratorExp`" -msgstr "" +msgstr ":class:`ast.GeneratorExp`" #: library/annotationlib.rst:591 msgid "" "The following are disallowed in annotation scopes and therefore not relevant:" msgstr "" +"Τα ακόλουθα δεν επιτρέπονται σε εμβέλειες των annotations και επομένως δεν " +"είναι σχετικά:" #: library/annotationlib.rst:593 msgid ":class:`ast.NamedExpr` (``:=``)" -msgstr "" +msgstr ":class:`ast.NamedExpr` (``:=``)" #: library/annotationlib.rst:594 msgid ":class:`ast.Await`" -msgstr "" +msgstr ":class:`ast.Await`" #: library/annotationlib.rst:595 msgid ":class:`ast.Yield`" -msgstr "" +msgstr ":class:`ast.Yield`" #: library/annotationlib.rst:596 msgid ":class:`ast.YieldFrom`" -msgstr "" +msgstr ":class:`ast.YieldFrom`" #: library/annotationlib.rst:600 msgid "Limitations of the ``FORWARDREF`` format" -msgstr "" +msgstr "Περιορισμοί της μορφής ``FORWARDREF``" #: library/annotationlib.rst:602 msgid "" @@ -945,10 +1373,19 @@ msgid "" "literals or that use unsupported expression types may raise exceptions when " "evaluated using the :attr:`~Format.FORWARDREF` format." msgstr "" +"Η μορφή :attr:`~Format.FORWARDREF` στοχεύει στην παραγωγή πραγματικών τιμών " +"όσο το δυνατόν περισσότερο, αντικαθιστώντας οτιδήποτε δεν μπορεί να επιλυθεί " +"με αντικείμενα της :class:`ForwardRef`. Επηρεάζεται γενικά από τους ίδιους " +"περιορισμούς με τη μορφή :attr:`~Format.STRING`: τα annotations που εκτελούν " +"πράξεις σε literals ή που χρησιμοποιούν μη υποστηριζόμενους τύπους εκφράσεων " +"μπορεί να κάνουν raise εξαιρέσεις όταν αξιολογούνται χρησιμοποιώντας τη " +"μορφή :attr:`~Format.FORWARDREF`." #: library/annotationlib.rst:609 msgid "Below are a few examples of the behavior with unsupported expressions:" msgstr "" +"Παρακάτω είναι μερικά παραδείγματα της συμπεριφοράς με μη υποστηριζόμενες " +"εκφράσεις:" #: library/annotationlib.rst:611 msgid "" @@ -966,10 +1403,23 @@ msgid "" ">>> get_annotations(ifexp, format=Format.STRING)\n" "{'x': '1'}" msgstr "" +">>> from annotationlib import get_annotations, Format\n" +">>> def zerodiv(x: 1 / 0): ...\n" +">>> get_annotations(zerodiv, format=Format.STRING)\n" +"Traceback (most recent call last):\n" +" ...\n" +"ZeroDivisionError: division by zero\n" +">>> get_annotations(zerodiv, format=Format.FORWARDREF)\n" +"Traceback (most recent call last):\n" +" ...\n" +"ZeroDivisionError: division by zero\n" +">>> def ifexp(x: 1 if y else 0): ...\n" +">>> get_annotations(ifexp, format=Format.STRING)\n" +"{'x': '1'}" #: library/annotationlib.rst:630 msgid "Security implications of introspecting annotations" -msgstr "" +msgstr "Επιπτώσεις ασφαλείας από την ενδοσκόπηση των annotations" #: library/annotationlib.rst:632 msgid "" @@ -983,6 +1433,17 @@ msgid "" "functions in the :mod:`typing` module that work with annotations, such as :" "func:`typing.get_type_hints`." msgstr "" +"Η περισσότερη λειτουργικότητα σε αυτό το module περιλαμβάνει την εκτέλεση " +"κώδικα που σχετίζεται με annotations, ο οποίος μπορεί στη συνέχεια να κάνει " +"αυθαίρετα πράγματα. Για παράδειγμα, η :func:`get_annotations` μπορεί να " +"καλέσει μια αυθαίρετη :term:`συνάρτηση σχολιασμού `, και " +"η :meth:`ForwardRef.evaluate` μπορεί να καλέσει την :func:`eval` σε μια " +"αυθαίρετη συμβολοσειρά. Ο κώδικας που περιέχεται σε έναν σχολιασμό μπορεί να " +"κάνει αυθαίρετες κλήσεις συστήματος, να μπει σε ατέρμονο βρόχο ή να " +"εκτελέσει οποιαδήποτε άλλη λειτουργία. Αυτό ισχύει επίσης για κάθε πρόσβαση " +"στο χαρακτηριστικό :attr:`~object.__annotations__`, και για διάφορες " +"συναρτήσεις στο module :mod:`typing` που εργάζονται με annotations, όπως η :" +"func:`typing.get_type_hints`." #: library/annotationlib.rst:641 msgid "" @@ -994,3 +1455,11 @@ msgid "" "``__annotations__`` dictionary or directly creating a :class:`ForwardRef` " "object." msgstr "" +"Κάθε ζήτημα ασφαλείας, που προκύπτει από αυτό, ισχύει επίσης αμέσως μετά την " +"εισαγωγή κώδικα που μπορεί να περιέχει μη αξιόπιστα annotations: η εισαγωγή " +"κώδικα μπορεί πάντα να προκαλέσει την εκτέλεση αυθαίρετων λειτουργιών. " +"Ωστόσο, είναι μη ασφαλές να γίνονται αποδεκτές συμβολοσειρές ή άλλη είσοδος " +"από μη αξιόπιστη πηγή και να περνιούνται σε οποιοδήποτε από τα API για " +"ενδοσκόπηση των annotations, για παράδειγμα με την επεξεργασία ενός λεξικού " +"``__annotations__`` ή την άμεση δημιουργία ενός αντικειμένου της :class:" +"`ForwardRef`."