Επέκταση και Ενσωμάτωση του Διερμηνέα της Python
************************************************

Αυτό το έγγραφο περιγράφει πώς να γράφετε modules σε C ή C++ για να
επεκτείνετε τον διερμηνέα της Python με νέα modules. Αυτά τα modules
δεν μπορούν μόνο να ορίσουν νέες συναρτήσεις αλλά και νέους τύπους
αντικειμένων και τις μεθόδους τους. Το έγγραφο επίσης περιγράφει πώς
να ενσωματώσετε τον διερμηνέα της Python σε μια άλλη εφαρμογή, ώστε να
χρησιμοποιείται ως γλώσσα επέκτασης. Τέλος, δείχνει πώς να
μεταγλωττίζετε και να συνδέετε τα modules επέκτασης ώστε να μπορούν να
φορτώνονται δυναμικά (κατά την εκτέλεση) στον διερμηνέα, εφόσον το
υποκείμενο λειτουργικό σύστημα υποστηρίζει αυτήν τη λειτουργία.

Αυτό το έγγραφο προϋποθέτει βασικές γνώσεις Python. Για μια ανεπίσημη
εισαγωγή στη γλώσσα, δείτε το Οδηγός εκμάθησης Python. Το Εγχειρίδιο
Αναφοράς της Γλώσσας Python παρέχει έναν πιο επίσημο ορισμό της
γλώσσας. Το The Python Standard Library τεκμηριώνει τους υπάρχοντες
τύπους αντικειμένων, τις συναρτήσεις και τα modules (ενσωματωμένα και
γραμμένα σε Python και τα δύο) που προσφέρουν στη γλώσσα το ευρύ πεδίο
εφαρμογών της.

Για μια λεπτομερή περιγραφή ολόκληρου του Python/C API, δείτε το
ξεχωριστό Python/C API Reference Manual.


Προτεινόμενα εργαλεία τρίτων
============================

Αυτός ο οδηγός καλύπτει μόνο τα βασικά εργαλεία για τη δημιουργία
επεκτάσεων που παρέχονται ως μέρος αυτής της έκδοσης της CPython.
Ορισμένα third party tools προσφέρουν απλούστερες και πιο εξελιγμένες
προσεγγίσεις για τη δημιουργία επεκτάσεων C και C++ για Python.


Δημιουργία επεκτάσεων χωρίς εργαλεία τρίτων
===========================================

Αυτό το μέρος του οδηγού καλύπτει τη δημιουργία επεκτάσεων σε C και
C++ χωρίς τη βοήθεια εργαλείων τρίτων. Απευθύνεται κυρίως σε
δημιουργούς αυτών των εργαλείων, παρά ως προτεινόμενη μέθοδος για τη
δημιουργία δικών σας επεκτάσεων σε C.

Δείτε επίσης: **PEP 489** -- Αρχικοποίηση πολυφασικής μονάδας επέκταση

* 1. Extending Python with C or C++

  * 1.1. A Simple Example

  * 1.2. Intermezzo: Errors and Exceptions

  * 1.3. Back to the Example

  * 1.4. The Module's Method Table and Initialization Function

  * 1.5. Compilation and Linkage

  * 1.6. Calling Python Functions from C

  * 1.7. Extracting Parameters in Extension Functions

  * 1.8. Keyword Parameters for Extension Functions

  * 1.9. Building Arbitrary Values

  * 1.10. Reference Counts

  * 1.11. Writing Extensions in C++

  * 1.12. Providing a C API for an Extension Module

* 2. Defining Extension Types: Tutorial

  * 2.1. The Basics

  * 2.2. Adding data and methods to the Basic example

  * 2.3. Providing finer control over data attributes

  * 2.4. Supporting cyclic garbage collection

  * 2.5. Subclassing other types

* 3. Defining Extension Types: Assorted Topics

  * 3.1. Finalization and De-allocation

  * 3.2. Object Presentation

  * 3.3. Attribute Management

  * 3.4. Object Comparison

  * 3.5. Abstract Protocol Support

  * 3.6. Weak Reference Support

  * 3.7. More Suggestions

* 4. Κατασκευή Επεκτάσεων C και C++

  * 4.1. Κατασκευή Επεκτάσεων C και C++ με το setuptools

* 5. Building C and C++ Extensions on Windows

  * 5.1. A Cookbook Approach

  * 5.2. Differences Between Unix and Windows

  * 5.3. Using DLLs in Practice


Ενσωμάτωση του χρόνου εκτέλεσης της CPython σε μεγαλύτερη εφαρμογή
==================================================================

Μερικές φορές, αντί να δημιουργήσουμε μια επέκταση που εκτελείται μέσα
στον διερμηνέα της Python ως κύρια εφαρμογή, είναι προτιμότερο να
ενσωματώσουμε τον χρόνο εκτέλεσης της CPython σε μια μεγαλύτερη
εφαρμογή. Αυτή η ενότητα καλύπτει μερικές λεπτομέρειες για το πώς να
το κάνετε αυτό με επιτυχία.

* 1. Embedding Python in Another Application

  * 1.1. Very High Level Embedding

  * 1.2. Beyond Very High Level Embedding: An overview

  * 1.3. Pure Embedding

  * 1.4. Extending Embedded Python

  * 1.5. Embedding Python in C++

  * 1.6. Compiling and Linking under Unix-like systems
