Metadata-Version: 2.4
Name: libcurl-ct
Version: 8.12.1.4b1
Summary: Python binding for the libcurl C library.
Author: Adam Karpierz
Author-email: adam@karpierz.net
Maintainer: Adam Karpierz
Maintainer-email: adam@karpierz.net
License: MIT License ; https://opensource.org/license/mit
Project-URL: Homepage, https://pypi.org/project/libcurl-ct/
Project-URL: Documentation, https://libcurl.readthedocs.io/
Project-URL: Download, https://pypi.org/project/libcurl-ct/
Project-URL: Source, https://github.com/karpierz/libcurl
Project-URL: Issues, https://github.com/karpierz/libcurl/issues
Keywords: curl,libcurl
Platform: any
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Natural Language :: Polish
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: <4.0.0,>=3.9.0
Description-Content-Type: text/x-rst; charset=UTF-8
License-File: LICENSE
License-File: COPYING
Requires-Dist: setuptools>=76.1.0
Requires-Dist: pkg-about>=1.2.10
Provides-Extra: doc
Requires-Dist: Sphinx>=7.4.7; extra == "doc"
Requires-Dist: sphinx-autodoc-typehints>=2.3.0; extra == "doc"
Requires-Dist: sphinx-toolbox>=3.9.0; extra == "doc"
Requires-Dist: sphinx-tabs>=3.4.5; extra == "doc"
Requires-Dist: sphinx-copybutton>=0.5.2; extra == "doc"
Requires-Dist: sphinxcontrib-spelling>=8.0.0; extra == "doc"
Requires-Dist: sphinx-lint>=1.0.0; extra == "doc"
Requires-Dist: restructuredtext-lint>=1.4.0; extra == "doc"
Requires-Dist: nbsphinx>=0.9.7; extra == "doc"
Provides-Extra: test
Requires-Dist: deepdiff>=8.4.2; extra == "test"
Requires-Dist: rich>=13.9.4; extra == "test"
Requires-Dist: ebcdic>=1.1.1; extra == "test"
Requires-Dist: pytest>=8.3.5; extra == "test"
Requires-Dist: cryptography>=44.0.2; (implementation_name != "pypy" or python_version <= "3.10") and extra == "test"
Requires-Dist: multipart>=1.2.1; extra == "test"
Requires-Dist: websockets>=15.0.1; extra == "test"
Requires-Dist: psutil>=7.0.0; extra == "test"
Dynamic: license-file

libcurl-ct
==========

Python binding for the *libcurl* C library.

Overview
========

| Python |package_bold| module is a low-level binding for *libcurl* C library.
| It is an effort to allow python programs full access to the API implemented
  and provided by the well known `*libcurl* <https://curl.se/libcurl/>`__ library.

`PyPI record`_.

`Documentation`_.

| |package_bold| is a lightweight Python package, based on the *ctypes* library.
| It is fully compliant implementation of the original C *libcurl* API
  by implementing whole its functionality in a clean Python instead of C.
|
| *libcurl* API documentation can be found at:

  `libcurl API overview <https://curl.se/libcurl/c/libcurl.html>`__

|package_bold| uses the underlying *libcurl* C shared library as specified in
libcurl.cfg (included libcurl-X.X.* is the default), but there is also ability
to specify it programmatically by one of the following ways:

.. code:: python

  import libcurl
  libcurl.config(LIBCURL="libcurl C shared library absolute path")
  # or
  libcurl.config(LIBCURL=None)  # included libcurl-X.X.* will be use

About original libcurl:
-----------------------

Borrowed from the `original website <https://curl.se/libcurl/>`__:

**libcurl** - the multiprotocol file transfer library

**Overview**

**libcurl** is a free and easy-to-use client-side URL transfer library,
supporting DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS,
LDAP, LDAPS, MQTT, POP3, POP3S, RTMP, RTMPS, RTSP, SCP, SFTP, SMB, SMBS,
SMTP, SMTPS, TELNET and TFTP.

**libcurl** supports SSL certificates, HTTP POST, HTTP PUT, FTP uploading,
HTTP form based upload, proxies, HTTP/2, HTTP/3, cookies, user+password
authentication (Basic, Digest, NTLM, Negotiate, Kerberos), file transfer
resume, http proxy tunneling and more!

**libcurl** is highly portable, it builds and works identically on numerous
platforms, including Solaris, NetBSD, FreeBSD, OpenBSD, Darwin, HPUX, IRIX,
AIX, Tru64, Linux, UnixWare, HURD, Windows, Amiga, OS/2, BeOs, Mac OS X,
Ultrix, QNX, OpenVMS, RISC OS, Novell NetWare, DOS and more...

**libcurl** is free, thread-safe, IPv6 compatible, feature rich, well
supported, fast, thoroughly documented and is already used by many known,
big and successful companies.

Requirements
============

- | It is a fully independent package.
  | All necessary things are installed during the normal installation process.
- ATTENTION: currently works and tested only for Windows.

Installation
============

Prerequisites:

+ Python 3.9 or higher

  * https://www.python.org/
  * with C libcurl 8.12.1 is a primary test environment.

+ pip and setuptools

  * https://pypi.org/project/pip/
  * https://pypi.org/project/setuptools/

To install run:

  .. parsed-literal::

    python -m pip install --upgrade |package|

Development
===========

Prerequisites:

+ Development is strictly based on *tox*. To install it run::

    python -m pip install --upgrade tox

Visit `Development page`_.

Installation from sources:

clone the sources:

  .. parsed-literal::

    git clone |respository| |package|

and run:

  .. parsed-literal::

    python -m pip install ./|package|

or on development mode:

  .. parsed-literal::

    python -m pip install --editable ./|package|

License
=======

  | |copyright|
  | Licensed under the MIT License
  | https://opensource.org/license/mit
  | Please refer to the accompanying LICENSE file.

Authors
=======

* Adam Karpierz <adam@karpierz.net>

.. |package| replace:: libcurl-ct
.. |package_bold| replace:: **libcurl-ct**
.. |copyright| replace:: Copyright (c) 2021-2025 Adam Karpierz
.. |respository| replace:: https://github.com/karpierz/libcurl.git
.. _Development page: https://github.com/karpierz/libcurl
.. _PyPI record: https://pypi.org/project/libcurl-ct/
.. _Documentation: https://libcurl.readthedocs.io/

Changelog
=========

8.12.1.4b1 (2025-03-01)
-----------------------
- Add support for Python 3.12 and 3.13
- Drop support for Python 3.7 and 3.8
- Add support for PyPy 3.10 and 3.11
- Drop support for PyPy 3.7, 3.8 and 3.9
- Upgrade: libcurl v.7.84.0 -> v.8.12.1
- Bugfix for type of version_info_data.feature_names.
- Bugfix for write_to_fd.
- | Previously unavailable obsoleted strequal() and strnequal()
  | are curently available.
- | Previously unavailable deprecated escape() and unescape()
  | are curently available.
- | Tox configuration has been moved to pyproject.toml
  | and now based on tox >= 4.0
- Many bugs fixed.
- Copyright year update.
- 100% code linting.
- Cleanup.
- Setup (dependencies) update.

7.84.0a2 (2022-08-27)
---------------------
- Upgrade: libcurl v.7.81.0 -> v.7.84.0
- Add support for Linux.
- Add support for Python 3.10 and 3.11
- Add support for PyPy 3.7, 3.8 and 3.9
- Added a performance util tests/sprinter.py
- Setup update (currently based mainly on pyproject.toml).

7.81.0a2 (2022-01-26)
---------------------
- Rename PyPi package to libcurl-ct due to name conflict.

7.81.0a1 (2022-01-26)
---------------------
- First release.

0.0.1 (2021-06-16)
------------------
- Initial release.
