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.
===================================

This guide only covers the basic tools for creating extensions
provided as part of this version of CPython. Third party tools like
Cython, cffi, SWIG and Numba offer both simpler and more sophisticated
approaches to creating C and C++ extensions for Python.

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 Pythona 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 setuptools

* 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 Cpython runtime 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
