38 Commits

Author SHA1 Message Date
Sangbida Chaudhuri
02bfa4136f pyln-testing: add old_hsmsecret param to get_node.
This defaults to false for now: this breaks a lot of tests (since node ids change!)
once we switch to true.
2026-01-27 09:32:49 +10:30
Se7enZ
854dec008e devtools: Add pre-commit as a dev Python package. 2026-01-24 09:40:49 +10:00
Christian Decker
5c9d3884bb Add Python API documentation generation with pdoc3
This commit adds automated Python API documentation generation for all
workspace packages using pdoc3:

- Add contrib/api/generate-python-docs.py script to generate docs
- Add Makefile targets: python-docs and python-docs-clean
- Add GitHub Actions workflow for nightly documentation generation
- Documents 5 packages: pyln.client, pyln.proto, pyln.grpc, pyln.testing, pyln.spec.bolt7
- Creates beautiful index page with cards linking to each package
- Stores generated docs as artifacts with 90-day retention
- Add pdoc3 and markdown to dev dependencies

Bug fix:
- Fix pyln-client version.py: __all__ must contain strings, not class objects
  This was causing "TypeError: attribute name must be string, not 'type'" in pdoc3

Documentation is generated to docs/python/ which is excluded from version control.
Run 'make python-docs' to generate locally, or download from nightly workflow artifacts.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-08 16:37:02 +01:00
Christian Decker
4b9cffe183 Add comprehensive coverage infrastructure with clang source-based coverage
This commit introduces a modern coverage infrastructure for Core Lightning:

- Migrate from ad-hoc coverage script to integrated Makefile targets
- Add LLVM source-based coverage support with per-test profraw organization
- Integrate coverage collection into pytest framework via TailableProc
- Add GitHub Actions workflow for nightly coverage reports
- Add Taskfile.yml for convenient task automation
- Add codecov.yml for Codecov integration
- Add comprehensive coverage documentation in COVERAGE.md
- Update contributor workflow docs with new coverage script path
- Add coverage data files to .gitignore (*.profraw, *.profdata)
- Remove obsolete contrib/clang-coverage-report.sh
- Remove obsolete tests/conftest.py (now using pyln-testing markers)
- Update pyproject.toml to include pyln-testing in main dependencies

The new infrastructure automatically collects coverage data when CLN_COVERAGE_DIR
is set, organizing profraw files by test name for granular analysis.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-08 16:37:02 +01:00
Christian Decker
5c749fe4ee ci: Mark some tests as rerun 2025-12-06 12:32:38 +01:00
Christian Decker
7c28fdb689 ci: Run with rerunfailures rather than flaky 2025-12-06 12:32:38 +01:00
Christian Decker
287abfbd90 ci: Add a simple plugin to report test results to our falkiness tracker
Changelog-None
2025-12-06 12:32:38 +01:00
Rusty Russell
f49818c08c Python: update pyproject.toml so we can run tests/benchmarks.py.
I had forgotten this file existed, but it needs tqdm and pytest-benchmark, so add those dev
requirements.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2025-11-20 16:30:50 +10:30
Alex Myers
8a0e473ec8 bump minimum python to 3.9.2 and downgrade coincurve
This allows compatibility with python 3.14.0 which coincurve 21.0.0 did
not support.  The next coincurve release should restore compatibility.

Fixes: #8591

Changelog-changed: pyln-testing requires python>=3.9.2
2025-10-10 15:54:37 +10:30
Christian Decker
7a7a48c34d chore: Update python dependencies
I got a bit annoyed by all the "your protobuf gencode is too old"
warnings in downstream packages, so I spent a bit of time updating any
stale dependency and now we're back allowing packages up to the latest
release. That should maximize the compatibility, and allow downstream
packages to chose their own versions, as long as they are
compatible (semantic versioning).
2025-10-01 11:41:06 +09:30
Christian Decker
68db70696f misc: Make the root project not a package 2025-09-02 09:50:00 +09:30
Lakshya Singh
c56464ca08 refactor: pyproject.toml poetry to uv + hatch
make use of standard keys for project and dependeny specification

- provide sources to run uv build so that it can refer local packages
- using hatchling for build as is stock build option
- use optional-dependencies.dev for dev-dependencies
- add hatch targets for packages and includes where unclear

Changelog-Update: use uv with hatchling instead of poetry
2025-08-11 11:06:22 +09:30
daywalker90
2e7181d04f wss-proxy: replaced by a rust version
Changelog-Changed: wss-proxy.py was replaced by a rust version with support for multiple `wss-bind-addr`. If you install CLN from pre-compiled binaries you must remove the old wss-proxy directory first before installing CLN, usually
it is located in `/usr/local/libexec/c-lightning/plugins/wss-proxy`. If you compile from source `make` will take care of this automatically.
2025-07-24 12:42:06 -07:00
daywalker90
40d319b7be python: raise minimum supported python version to 3.9
Changelog-None
2025-06-12 13:51:18 +02:00
daywalker90
b97278fb9a python: upgrade grpcio-tools to 1.69.0 and protobuf to 5.29.4 for python3.13 compatibility
Changelog-None
2025-05-21 10:58:15 -05:00
daywalker90
cac9315c00 clnrest: replace with rust plugin
Changelog-Changed: clnrest is now a rust plugin
2025-01-29 18:32:23 -08:00
Pavol Rusnak
5c494488e7 pyln-proto: update cryptography to v42
Changelog-None
2024-07-31 16:34:55 +02:00
Rusty Russell
7c3aa9477f pyproject.toml: Update ancient flake8
v4.0 no longer works for me (see below, and widely reported elsewhere).
v5.0 doesn't understand f strings, and creates a flood of complaints.
v6.0 requires python >= 3.8.1, so we need to update that.
v7.0 is the latest, but why push it.

```
make check-python-flake8
Traceback (most recent call last):
  File "/home/rusty/.cache/pypoetry/virtualenvs/cln-meta-project-BgKQHyxC-py3.12/bin/flake8", line 8, in <module>
    sys.exit(main())
             ^^^^^^
  File "/home/rusty/.cache/pypoetry/virtualenvs/cln-meta-project-BgKQHyxC-py3.12/lib/python3.12/site-packages/flake8/main/cli.py", line 22, in main
    app.run(argv)
  File "/home/rusty/.cache/pypoetry/virtualenvs/cln-meta-project-BgKQHyxC-py3.12/lib/python3.12/site-packages/flake8/main/application.py", line 375, in run
    self._run(argv)
  File "/home/rusty/.cache/pypoetry/virtualenvs/cln-meta-project-BgKQHyxC-py3.12/lib/python3.12/site-packages/flake8/main/application.py", line 363, in _run
    self.initialize(argv)
  File "/home/rusty/.cache/pypoetry/virtualenvs/cln-meta-project-BgKQHyxC-py3.12/lib/python3.12/site-packages/flake8/main/application.py", line 343, in initialize
    self.find_plugins(config_finder)
  File "/home/rusty/.cache/pypoetry/virtualenvs/cln-meta-project-BgKQHyxC-py3.12/lib/python3.12/site-packages/flake8/main/application.py", line 157, in find_plugins
    self.check_plugins = plugin_manager.Checkers(local_plugins.extension)
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/rusty/.cache/pypoetry/virtualenvs/cln-meta-project-BgKQHyxC-py3.12/lib/python3.12/site-packages/flake8/plugins/manager.py", line 363, in __init__
    self.manager = PluginManager(
                   ^^^^^^^^^^^^^^
  File "/home/rusty/.cache/pypoetry/virtualenvs/cln-meta-project-BgKQHyxC-py3.12/lib/python3.12/site-packages/flake8/plugins/manager.py", line 243, in __init__
    self._load_entrypoint_plugins()
  File "/home/rusty/.cache/pypoetry/virtualenvs/cln-meta-project-BgKQHyxC-py3.12/lib/python3.12/site-packages/flake8/plugins/manager.py", line 261, in _load_entrypoint_plugins
    eps = importlib_metadata.entry_points().get(self.namespace, ())
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'EntryPoints' object has no attribute 'get'
make: *** [Makefile:535: check-python-flake8] Error 1
```

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2024-06-19 12:34:41 +02:00
Erik De Smedt
daf9d27777 poetry: Use non-package mode
Since `poetry=1.8.0` there is a non-package mode. This can be used to
create `pyproject.toml` files that are only used to track dependencies.

Performing `poetry install` in the project-root with a recent version of `poetry`
is currently generating a warning which will become an error in the
future.

Setting `package-mode=false` makes this error go away.

A side-effect is that the `name`, `version` and `description` in the
`pyproject.toml`-file will be ignored. Keeping the parameters in the
`pyproject.toml` file ensures it will still work for developers who are
using `poetry<1.8.0`.
2024-06-18 16:55:01 -07:00
daywalker90
1a2a9b0bae poetry: add pyln-grpc-proto dependency
Changelog-None
2024-04-24 11:42:32 +02:00
ShahanaFarooqui
720af34d43 plugins/wss-proxy: Plugin included in core lightning 2024-04-22 09:12:09 +09:30
Peter Neuroth
f26a758f1c poetry: Add requests dependency
The requests module is required by `devtools/changelog.py`

Signed-off-by: Peter Neuroth <pet.v.ne@gmail.com>
2023-10-30 11:54:30 +10:30
Christian Decker
8f4c997248 pytest: Mark test_splice as falky 2023-10-26 15:51:07 +02:00
Christian Decker
414f65fc66 py: Add the grpc extra to pyln-testing dependency 2023-09-29 16:00:05 +09:30
ShahanaFarooqui
6a756256c0 plugins/clnrest: Adding pyproject.toml for Poetry install
Reference links:
https://github.com/ElementsProject/lightning/issues/6637
https://github.com/nix-community/poetry2nix

Changelog-Changed: Upgraded clnrest to poetry project.
2023-09-29 16:00:05 +09:30
dependabot[bot]
5471289b39 build(deps): bump cryptography from 41.0.1 to 41.0.2
Bumps [cryptography](https://github.com/pyca/cryptography) from 41.0.1 to 41.0.2.
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pyca/cryptography/compare/41.0.1...41.0.2)

---
updated-dependencies:
- dependency-name: cryptography
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-22 11:47:26 +09:30
Shahana Farooqui
c0bb7f0721 lightningd: updating python v3.7 to v3.8 2023-07-20 11:44:46 +09:30
Rusty Russell
f0a9f1100a poetry, CI: insist in protobuf v21.12 in both Python and CI.
And re-ran poetry update which updated the lock file ofc.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2023-06-23 13:58:31 +09:30
Christian Decker
9f1e1ada2a py: Update dependencies and relax constraints
We were being very restrictive when describing the dependencies, so let's
relax them a bit.
2023-06-18 11:00:32 +09:30
Vincenzo Palazzo
13836ddd2f fix: increase version cryptography python dep
Due to a security report by github, we should increase
our cryptography lib version.

This may impact potential another version that is stuck
with a cryptography version.

Link: https://github.com/ElementsProject/lightning/issues/6164
Reported-by: @dni
Signed-off-by: Vincenzo Palazzo <vincenzopalazzodev@gmail.com>
2023-06-07 21:06:44 +02:00
Rusty Russell
5ccdab71e5 poetry: update grpcio to 1.54.0
Before this, I was getting build errors on installing gcprio on Ubuntu 23.04:

```
       src/python/grpcio/grpc/_cython/cygrpc.cpp: In function ‘_PyErr_StackItem* __Pyx_PyErr_GetTopmostException(PyThreadState*)’:
        src/python/grpcio/grpc/_cython/cygrpc.cpp:126592:23: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_type’
        126592 |     while ((exc_info->exc_type == NULL || exc_info->exc_type == Py_None) &&
               |                       ^~~~~~~~
        src/python/grpcio/grpc/_cython/cygrpc.cpp:126592:53: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_type’
        126592 |     while ((exc_info->exc_type == NULL || exc_info->exc_type == Py_None) &&
               |                                                     ^~~~~~~~
        src/python/grpcio/grpc/_cython/cygrpc.cpp: In function ‘void __Pyx__ExceptionSave(PyThreadState*, PyObject**, PyObject**, PyObject**)’:
        src/python/grpcio/grpc/_cython/cygrpc.cpp:126606:23: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_type’
        126606 |     *type = exc_info->exc_type;
               |                       ^~~~~~~~
        src/python/grpcio/grpc/_cython/cygrpc.cpp:126608:21: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_traceback’
        126608 |     *tb = exc_info->exc_traceback;
               |                     ^~~~~~~~~~~~~
        src/python/grpcio/grpc/_cython/cygrpc.cpp: In function ‘void __Pyx__ExceptionReset(PyThreadState*, PyObject*, PyObject*, PyObject*)’:
        src/python/grpcio/grpc/_cython/cygrpc.cpp:126622:26: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_type’
        126622 |     tmp_type = exc_info->exc_type;
               |                          ^~~~~~~~
        src/python/grpcio/grpc/_cython/cygrpc.cpp:126624:24: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_traceback’
        126624 |     tmp_tb = exc_info->exc_traceback;
               |                        ^~~~~~~~~~~~~
        src/python/grpcio/grpc/_cython/cygrpc.cpp:126625:15: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_type’
        126625 |     exc_info->exc_type = type;
               |               ^~~~~~~~
        src/python/grpcio/grpc/_cython/cygrpc.cpp:126627:15: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_traceback’
        126627 |     exc_info->exc_traceback = tb;
               |               ^~~~~~~~~~~~~
        src/python/grpcio/grpc/_cython/cygrpc.cpp: In function ‘int __Pyx__GetException(PyThreadState*, PyObject**, PyObject**, PyObject**)’:
        src/python/grpcio/grpc/_cython/cygrpc.cpp:126709:30: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_type’
        126709 |         tmp_type = exc_info->exc_type;
               |                              ^~~~~~~~
        src/python/grpcio/grpc/_cython/cygrpc.cpp:126711:28: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_traceback’
        126711 |         tmp_tb = exc_info->exc_traceback;
               |                            ^~~~~~~~~~~~~
        src/python/grpcio/grpc/_cython/cygrpc.cpp:126712:19: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_type’
        126712 |         exc_info->exc_type = local_type;
               |                   ^~~~~~~~
        src/python/grpcio/grpc/_cython/cygrpc.cpp:126714:19: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_traceback’
        126714 |         exc_info->exc_traceback = local_tb;
               |                   ^~~~~~~~~~~~~
        src/python/grpcio/grpc/_cython/cygrpc.cpp: In function ‘int __Pyx_PyBytes_Equals(PyObject*, PyObject*, int)’:
        src/python/grpcio/grpc/_cython/cygrpc.cpp:128708:43: warning: ‘PyBytesObject::ob_shash’ is deprecated [-Wdeprecated-declarations]
        128708 |             hash1 = ((PyBytesObject*)s1)->ob_shash;
               |                                           ^~~~~~~~
        In file included from /usr/include/python3.11/bytesobject.h:62,
                         from /usr/include/python3.11/Python.h:50:
        /usr/include/python3.11/cpython/bytesobject.h:7:35: note: declared here
            7 |     Py_DEPRECATED(3.11) Py_hash_t ob_shash;
              |                                   ^~~~~~~~
        src/python/grpcio/grpc/_cython/cygrpc.cpp:128708:43: warning: ‘PyBytesObject::ob_shash’ is deprecated [-Wdeprecated-declarations]
        128708 |             hash1 = ((PyBytesObject*)s1)->ob_shash;
               |                                           ^~~~~~~~
        /usr/include/python3.11/cpython/bytesobject.h:7:35: note: declared here
            7 |     Py_DEPRECATED(3.11) Py_hash_t ob_shash;
              |                                   ^~~~~~~~
        src/python/grpcio/grpc/_cython/cygrpc.cpp:128708:43: warning: ‘PyBytesObject::ob_shash’ is deprecated [-Wdeprecated-declarations]
        128708 |             hash1 = ((PyBytesObject*)s1)->ob_shash;
               |                                           ^~~~~~~~
        /usr/include/python3.11/cpython/bytesobject.h:7:35: note: declared here
            7 |     Py_DEPRECATED(3.11) Py_hash_t ob_shash;
              |                                   ^~~~~~~~
        src/python/grpcio/grpc/_cython/cygrpc.cpp:128709:43: warning: ‘PyBytesObject::ob_shash’ is deprecated [-Wdeprecated-declarations]
        128709 |             hash2 = ((PyBytesObject*)s2)->ob_shash;
               |                                           ^~~~~~~~
        /usr/include/python3.11/cpython/bytesobject.h:7:35: note: declared here
            7 |     Py_DEPRECATED(3.11) Py_hash_t ob_shash;
              |                                   ^~~~~~~~
        src/python/grpcio/grpc/_cython/cygrpc.cpp:128709:43: warning: ‘PyBytesObject::ob_shash’ is deprecated [-Wdeprecated-declarations]
        128709 |             hash2 = ((PyBytesObject*)s2)->ob_shash;
               |                                           ^~~~~~~~
        /usr/include/python3.11/cpython/bytesobject.h:7:35: note: declared here
            7 |     Py_DEPRECATED(3.11) Py_hash_t ob_shash;
              |                                   ^~~~~~~~
        src/python/grpcio/grpc/_cython/cygrpc.cpp:128709:43: warning: ‘PyBytesObject::ob_shash’ is deprecated [-Wdeprecated-declarations]
        128709 |             hash2 = ((PyBytesObject*)s2)->ob_shash;
               |                                           ^~~~~~~~
        /usr/include/python3.11/cpython/bytesobject.h:7:35: note: declared here
            7 |     Py_DEPRECATED(3.11) Py_hash_t ob_shash;
              |                                   ^~~~~~~~
        src/python/grpcio/grpc/_cython/cygrpc.cpp: In function ‘void __Pyx__ExceptionSwap(PyThreadState*, PyObject**, PyObject**, PyObject**)’:
        src/python/grpcio/grpc/_cython/cygrpc.cpp:128939:26: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_type’
        128939 |     tmp_type = exc_info->exc_type;
               |                          ^~~~~~~~
        src/python/grpcio/grpc/_cython/cygrpc.cpp:128941:24: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_traceback’
        128941 |     tmp_tb = exc_info->exc_traceback;
               |                        ^~~~~~~~~~~~~
        src/python/grpcio/grpc/_cython/cygrpc.cpp:128942:15: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_type’
        128942 |     exc_info->exc_type = *type;
               |               ^~~~~~~~
        src/python/grpcio/grpc/_cython/cygrpc.cpp:128944:15: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_traceback’
        128944 |     exc_info->exc_traceback = *tb;
               |               ^~~~~~~~~~~~~
        src/python/grpcio/grpc/_cython/cygrpc.cpp: In function ‘void __Pyx_Coroutine_ExceptionClear(_PyErr_StackItem*)’:
        src/python/grpcio/grpc/_cython/cygrpc.cpp:129262:20: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_type’
        129262 |     t = exc_state->exc_type;
               |                    ^~~~~~~~
        src/python/grpcio/grpc/_cython/cygrpc.cpp:129264:21: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_traceback’
        129264 |     tb = exc_state->exc_traceback;
               |                     ^~~~~~~~~~~~~
        src/python/grpcio/grpc/_cython/cygrpc.cpp:129265:16: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_type’
        129265 |     exc_state->exc_type = NULL;
               |                ^~~~~~~~
        src/python/grpcio/grpc/_cython/cygrpc.cpp:129267:16: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_traceback’
        129267 |     exc_state->exc_traceback = NULL;
               |                ^~~~~~~~~~~~~
        src/python/grpcio/grpc/_cython/cygrpc.cpp: In function ‘PyObject* __Pyx_Coroutine_SendEx(__pyx_CoroutineObject*, PyObject*, int)’:
        src/python/grpcio/grpc/_cython/cygrpc.cpp:129344:20: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_type’
        129344 |     if (exc_state->exc_type) {
               |                    ^~~~~~~~
        src/python/grpcio/grpc/_cython/cygrpc.cpp:129347:24: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_traceback’
        129347 |         if (exc_state->exc_traceback) {
               |                        ^~~~~~~~~~~~~
        src/python/grpcio/grpc/_cython/cygrpc.cpp:129348:70: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_traceback’
        129348 |             PyTracebackObject *tb = (PyTracebackObject *) exc_state->exc_traceback;
               |                                                                      ^~~~~~~~~~~~~
        src/python/grpcio/grpc/_cython/cygrpc.cpp:129352:14: error: invalid use of incomplete type ‘PyFrameObject’ {aka ‘struct _frame’}
        129352 |             f->f_back = PyThreadState_GetFrame(tstate);
               |              ^~
        In file included from /usr/include/python3.11/Python.h:42:
        /usr/include/python3.11/pytypedefs.h:22:16: note: forward declaration of ‘PyFrameObject’ {aka ‘struct _frame’}
           22 | typedef struct _frame PyFrameObject;
              |                ^~~~~~
        src/python/grpcio/grpc/_cython/cygrpc.cpp: In function ‘void __Pyx_Coroutine_ResetFrameBackpointer(_PyErr_StackItem*)’:
        src/python/grpcio/grpc/_cython/cygrpc.cpp:129383:35: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_traceback’
        129383 |     PyObject *exc_tb = exc_state->exc_traceback;
               |                                   ^~~~~~~~~~~~~
        In file included from /usr/include/python3.11/Python.h:38:
        src/python/grpcio/grpc/_cython/cygrpc.cpp:129389:19: error: invalid use of incomplete type ‘PyFrameObject’ {aka ‘struct _frame’}
        129389 |         Py_CLEAR(f->f_back);
               |                   ^~
        /usr/include/python3.11/pyport.h:24:38: note: in definition of macro ‘_Py_CAST’
           24 | #define _Py_CAST(type, expr) ((type)(expr))
              |                                      ^~~~
        /usr/include/python3.11/object.h:581:29: note: in expansion of macro ‘_PyObject_CAST’
          581 |         PyObject *_py_tmp = _PyObject_CAST(op); \
              |                             ^~~~~~~~~~~~~~
        src/python/grpcio/grpc/_cython/cygrpc.cpp:129389:9: note: in expansion of macro ‘Py_CLEAR’
        129389 |         Py_CLEAR(f->f_back);
               |         ^~~~~~~~
        /usr/include/python3.11/pytypedefs.h:22:16: note: forward declaration of ‘PyFrameObject’ {aka ‘struct _frame’}
           22 | typedef struct _frame PyFrameObject;
              |                ^~~~~~
        In file included from /usr/include/python3.11/Python.h:44:
        src/python/grpcio/grpc/_cython/cygrpc.cpp:129389:19: error: invalid use of incomplete type ‘PyFrameObject’ {aka ‘struct _frame’}
        129389 |         Py_CLEAR(f->f_back);
               |                   ^~
        /usr/include/python3.11/object.h:583:14: note: in definition of macro ‘Py_CLEAR’
          583 |             (op) = NULL;                        \
              |              ^~
        /usr/include/python3.11/pytypedefs.h:22:16: note: forward declaration of ‘PyFrameObject’ {aka ‘struct _frame’}
           22 | typedef struct _frame PyFrameObject;
              |                ^~~~~~
        In file included from /usr/include/python3.11/Python.h:45:
        src/python/grpcio/grpc/_cython/cygrpc.cpp: In function ‘int __Pyx_Coroutine_traverse_excstate(_PyErr_StackItem*, visitproc, void*)’:
        src/python/grpcio/grpc/_cython/cygrpc.cpp:129695:25: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_type’
        129695 |     Py_VISIT(exc_state->exc_type);
               |                         ^~~~~~~~
        /usr/include/python3.11/objimpl.h:199:13: note: in definition of macro ‘Py_VISIT’
          199 |         if (op) {                                                       \
              |             ^~
        src/python/grpcio/grpc/_cython/cygrpc.cpp:129695:25: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_type’
        129695 |     Py_VISIT(exc_state->exc_type);
               |                         ^~~~~~~~
        /usr/include/python3.11/pyport.h:24:38: note: in definition of macro ‘_Py_CAST’
           24 | #define _Py_CAST(type, expr) ((type)(expr))
              |                                      ^~~~
        /usr/include/python3.11/objimpl.h:200:30: note: in expansion of macro ‘_PyObject_CAST’
          200 |             int vret = visit(_PyObject_CAST(op), arg);                  \
              |                              ^~~~~~~~~~~~~~
        src/python/grpcio/grpc/_cython/cygrpc.cpp:129695:5: note: in expansion of macro ‘Py_VISIT’
        129695 |     Py_VISIT(exc_state->exc_type);
               |     ^~~~~~~~
        src/python/grpcio/grpc/_cython/cygrpc.cpp:129697:25: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_traceback’
        129697 |     Py_VISIT(exc_state->exc_traceback);
               |                         ^~~~~~~~~~~~~
        /usr/include/python3.11/objimpl.h:199:13: note: in definition of macro ‘Py_VISIT’
          199 |         if (op) {                                                       \
              |             ^~
        src/python/grpcio/grpc/_cython/cygrpc.cpp:129697:25: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_traceback’
        129697 |     Py_VISIT(exc_state->exc_traceback);
               |                         ^~~~~~~~~~~~~
        /usr/include/python3.11/pyport.h:24:38: note: in definition of macro ‘_Py_CAST’
           24 | #define _Py_CAST(type, expr) ((type)(expr))
              |                                      ^~~~
        /usr/include/python3.11/objimpl.h:200:30: note: in expansion of macro ‘_PyObject_CAST’
          200 |             int vret = visit(_PyObject_CAST(op), arg);                  \
              |                              ^~~~~~~~~~~~~~
        src/python/grpcio/grpc/_cython/cygrpc.cpp:129697:5: note: in expansion of macro ‘Py_VISIT’
        129697 |     Py_VISIT(exc_state->exc_traceback);
               |     ^~~~~~~~
        src/python/grpcio/grpc/_cython/cygrpc.cpp: In function ‘__pyx_CoroutineObject* __Pyx__Coroutine_NewInit(__pyx_CoroutineObject*, __pyx_coroutine_body_t, PyObject*, PyObject*, PyObject*, PyObject*, PyObject*)’:
        src/python/grpcio/grpc/_cython/cygrpc.cpp:129944:23: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_type’
        129944 |     gen->gi_exc_state.exc_type = NULL;
               |                       ^~~~~~~~
        src/python/grpcio/grpc/_cython/cygrpc.cpp:129946:23: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_traceback’
        129946 |     gen->gi_exc_state.exc_traceback = NULL;
               |                       ^~~~~~~~~~~~~
        x86_64-linux-gnu-gcc -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -fPIC -D_WIN32_WINNT=1536 -DGRPC_XDS_USER_AGENT_NAME_SUFFIX=\"Python\" -DGRPC_XDS_USER_AGENT_VERSION_SUFFIX=\"1.47.0\" -DGPR_BACKWARDS_COMPATIBILITY_MODE=1 -DHAVE_CONFIG_H=1 -DGRPC_ENABLE_FORK_SUPPORT=1 "-DPyMODINIT_FUNC=extern \"C\" __attribute__((visibility (\"default\"))) PyObject*" -DGRPC_POSIX_FORK_ALLOW_PTHREAD_ATFORK=1 -Isrc/python/grpcio -Iinclude -I. -Ithird_party/abseil-cpp -Ithird_party/address_sorting/include -Ithird_party/cares/cares/include -Ithird_party/cares -Ithird_party/cares/cares -Ithird_party/cares/config_linux -Ithird_party/re2 -Ithird_party/boringssl-with-bazel/src/include -Ithird_party/upb -Isrc/core/ext/upb-generated -Isrc/core/ext/upbdefs-generated -Ithird_party/xxhash -Ithird_party/zlib -I/home/rusty/.cache/pypoetry/virtualenvs/cln-meta-project-BgKQHyxC-py3.11/include -I/usr/include/python3.11 -c src/core/lib/debug/trace.cc -o python_build/temp.linux-x86_64-cpython-311/src/core/lib/debug/trace.o -std=c++14 -fvisibility=hidden -fno-wrapv -fno-exceptions -pthread
        src/python/grpcio/grpc/_cython/cygrpc.cpp: In function ‘void __Pyx__ReturnWithStopIteration(PyObject*)’:
        src/python/grpcio/grpc/_cython/cygrpc.cpp:130932:34: error: ‘_PyErr_StackItem’ {aka ‘struct _err_stackitem’} has no member named ‘exc_type’
        130932 |     if (!__pyx_tstate->exc_info->exc_type)
               |                                  ^~~~~~~~
        src/python/grpcio/grpc/_cython/cygrpc.cpp: In function ‘void __Pyx_AddTraceback(const char*, int, int, const char*)’:
        src/python/grpcio/grpc/_cython/cygrpc.cpp:1729:62: error: invalid use of incomplete type ‘PyFrameObject’ {aka ‘struct _frame’}
         1729 |   #define __Pyx_PyFrame_SetLineNumber(frame, lineno)  (frame)->f_lineno = (lineno)
              |                                                              ^~
        src/python/grpcio/grpc/_cython/cygrpc.cpp:131799:5: note: in expansion of macro ‘__Pyx_PyFrame_SetLineNumber’
        131799 |     __Pyx_PyFrame_SetLineNumber(py_frame, py_line);
               |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~
        /usr/include/python3.11/pytypedefs.h:22:16: note: forward declaration of ‘PyFrameObject’ {aka ‘struct _frame’}
           22 | typedef struct _frame PyFrameObject;
              |                ^~~~~~
```

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2023-06-01 06:40:47 +09:30
niftynei
34a0d7083a build: use ubuntu 22.04 LTS
Requires us to update to latest lnproto which is now using the most up
to date python-bitcoinlib, as well as updating our python lock files
(which pin the grpcio deps, because of locking problems h/t @cdecker)
2022-09-10 11:24:31 +09:30
Rusty Russell
50056ce918 doc: remove mrkd requirement, add lowdown requirement.
I guessed it's called "lowdown" for everyone?

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2022-09-08 00:36:51 +03:00
Rusty Russell
575b94c1ef pytest: Remove all trace of python's "flaky" module.
Over time, it has cost us more developer cycles than it has gained.
It has hidden intermittant bugs, and allowed cruft to accumulate:
when we eventually tried to figure out what was going wrong, the
actual change which caused it was now stale and forgotten.

This was a particular bane during the connectd rewrite, and I
worked through some issues which had occurred before, but were not
more likely.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2022-06-27 17:21:35 +09:30
Christian Decker
461a65ba16 py: Add grpcio-tools for the cln-grpc-plugin 2022-03-30 12:15:55 +10:30
Christian Decker
ac322e1e5b py: Make the pyln dependencies editable
This allows us to edit the pyln packages in-tree without having to
reinstall them after each change.
2022-03-22 19:17:13 +10:30
Christian Decker
81259bbd67 py: Update mrkd 2022-03-08 05:00:36 +10:30
Christian Decker
49d2779078 pyln: Use poetry and PEP 517 locks for the root project
Allows us to just rely on `poetry` to manage our dependencies, should
finally solve all the `mrkd`, `mako` and `mistune` issues we've had
for a while.
2022-03-08 05:00:36 +10:30