Rozszerzony i wbudowany interpreter Python
******************************************

Ten dokument opisuje jak pisać moduły w C lub C++ do rozszerzania
Python Interpreter o nowe moduły. Te moduły mogą nie tylko zawierać
nowe funkcje, ale też nowe obiekty i ich metody. Dokument również
zawiera opis jak wbudować interpreter Pyhona do innej aplikacji w celu
rozszerzenia języka.  Podsumowując pokażemy ci jak kompilować i
linkować rozszerzone moduły, tak że mogą być załadowane dynamicznie w
danej chwili przez interpreter, o ile dany system operacyjny wspiera
tą funkcję.

Ten dokument zawiera podstawową wiedzę o Pythonie. Z nieformalnym
wstępem do języka zapoznaj się z Python Tutorial. Dokumentacja języka
Python zawiera bardziej formalny opis języka. Dokumenty Biblioteka
standardowa Pythona zawierają istniejące typy obiektów, funkcje i
moduły (zarówno wbudowane jak i napisane w Pythonie) dające językowi
duże pole zastosowań.

Aby zapoznać się z dokładną instrukcją dla Python/C API, spójrz na
Python/C API Reference Manual.


Rekomendowane zewnętrzne narzędzia.
===================================

Ten przewodnik obejmuje tylko podstawowe narzędzia do tworzenia
rozszerzeń dostarczane jako część aktualnej wersji CPython. Narzędzia
innych firm, takie jak " Cython <http://cython.org/>'_, ' Cffi
<https://cffi.readthedocs.io>`_,' SWIG <http://www.swig.org > ` _ i
'Numba <https://numba.pydata.org / >' _ oferują zarówno prostsze, jak
i bardziej wyrafinowane podejście do tworzenia rozszerzeń C i C++ dla
Pythona.

Zobacz także:

  Pakiety Pythona Podręcznik Użytkownika: Rozszerzenia Binarne
  <https://packaging.python.org/guides/packaging-binary-extensions/
     Przewodnik Użytkownika Python Packaging nie tylko obejmuje kilka
     dostępnych narzędzi, które upraszczają tworzenie rozszerzeń
     binarnych, ale także omawia różne powody, dla których tworzenie
     modułu rozszerzeń może być pożądane w pierwszej kolejności.


Tworzenie rozszerzeń poprzez narzędzia zewnętrzne.
==================================================

Ta część przewodnika obejmuje tworzenie rozszerzeń C i C++ bez pomocy
narzędzi innych firm. Jest przeznaczony przede wszystkim dla twórców
tych narzędzi, a nie jest zalecanym sposobem tworzenia własnych
rozszerzeń C.

* 1. Rozszerzanie języka pytonowskiego za pomocą C lub C++

  * 1.1. Prosty przykład

  * 1.2. Intermezzo: Błędy i Wyjątki

  * 1.3. Z powrotem do Przykładu

  * 1.4. Zadanie zainicjowania i tabela sposobów postępowania modułu.

  * 1.5. Kompilacja i łączenie

  * 1.6. Wywoływanie zadań języka pytonowskiego z C

  * 1.7. Wydobywanie parametrów w zadaniach rozszerzających

  * 1.8. Parametry kluczowe dla zadań rozszerzających

  * 1.9. Budowanie Dowolnych Wartości

  * 1.10. Liczby odniesień

  * 1.11. Pisanie rozszerzeń w C++

  * 1.12. Dostarczanie sprzęgu programowania aplikacji (API) języka C
    dla modułu rozszerzającego

* 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. Finalizowanie i de-alokacja

  * 3.2. Prezentacja Przedmiotów

  * 3.3. Zarządzanie własnościami

  * 3.4. Porównywanie przedmiotów

  * 3.5. Wsparcie protokołu abstrakcyjnego

  * 3.6. Wsparcie dla słabych odniesień

  * 3.7. Więcej sugestii

* 4. Building C and C++ Extensions

  * 4.1. Building C and C++ Extensions with distutils

  * 4.2. Distributing your extension modules

* 5. Tworzenie rozszerzeń C i C++ w Windowsie

  * 5.1. A Cookbook Approach

  * 5.2. Różnice pomiędzy Unixem a Windowsem

  * 5.3. Using DLLs in Practice


Wbudowywanie runtime Cpython w większą aplikację.
=================================================

Czasami zamiast tworzyć rozszerzenie, które działa wewnątrz
interpretera Pythona jako głównej aplikacji, pożądane jest osadzenie
środowiska wykonawczego CPython w większej aplikacji. W tej sekcji
omówiono niektóre szczegóły związane z pomyślnym wykonaniem tego
zadania.

* 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
