7 Commits

Author SHA1 Message Date
SomberNight
7611d4c3b3 scripts: fix "cannot schedule new futures after interpreter shutdown"
- looks like around python3.9, they changed it so that
  if we don't block on the main thread, it starts to shut things down
- polling thread.join() makes Ctrl+C work. kind of.

```
$ ./electrum/scripts/txradar.py 6bde84a981e72573666fcc51c81ec3f8f4a813709bf16451dce3f106a114d392
Exception in run: RuntimeError('cannot schedule new futures after interpreter shutdown')
Traceback (most recent call last):
  File "/home/user/wspace/electrum/electrum/util.py", line 1218, in wrapper
    return await func(*args, **kwargs)
  File "/home/user/wspace/electrum/electrum/interface.py", line 649, in wrapper_func
    return await func(self, *args, **kwargs)
  File "/home/user/wspace/electrum/electrum/interface.py", line 675, in run
    await self.open_session(ssl_context=ssl_context)
  File "/home/user/wspace/electrum/electrum/interface.py", line 872, in open_session
    async with _RSClient(
  File "/home/user/.local/lib/python3.10/site-packages/aiorpcx/rawsocket.py", line 167, in __aenter__
    _transport, protocol = await self.create_connection()
  File "/home/user/wspace/electrum/electrum/interface.py", line 285, in create_connection
    return await super().create_connection()
  File "/home/user/.local/lib/python3.10/site-packages/aiorpcx/rawsocket.py", line 163, in create_connection
    return await connector.create_connection(
  File "/usr/lib/python3.10/asyncio/base_events.py", line 1036, in create_connection
    infos = await self._ensure_resolved(
  File "/usr/lib/python3.10/asyncio/base_events.py", line 1418, in _ensure_resolved
    return await loop.getaddrinfo(host, port, family=family, type=type,
  File "/usr/lib/python3.10/asyncio/base_events.py", line 863, in getaddrinfo
    return await self.run_in_executor(
  File "/usr/lib/python3.10/asyncio/base_events.py", line 821, in run_in_executor
    executor.submit(func, *args), loop=self)
  File "/usr/lib/python3.10/concurrent/futures/thread.py", line 169, in submit
    raise RuntimeError('cannot schedule new futures after '
RuntimeError: cannot schedule new futures after interpreter shutdown
```
2025-07-15 12:00:31 +00:00
SomberNight
2f1095510c bitcoin.py/transaction.py: API changes: rm most hex usage
Instead of some functions operating with hex strings,
and others using bytes, this consolidates most things to use bytes.

This mainly focuses on bitcoin.py and transaction.py,
and then adapts the API usages in other files.

Notably,
- scripts,
- pubkeys,
- signatures
should be bytes in almost all places now.
2024-04-29 17:10:26 +00:00
SomberNight
adc3784bc2 network: allow mixed protocols among interfaces
Previously all the interfaces used either "t" or "s".
Now the network only tries to use "s" for all interfaces, except for
the main interface, which the user can manually specify to use "t".
(so e.g. if you run with "--server localhost:50002:t", the main server will use "t",
but all the rest will use "s")
2020-04-16 21:19:42 +02:00
SomberNight
d1026b5afe follow-up: SimpleConfig is supposed to be singleton
see cefa4762ba
and #5629
2019-09-10 16:38:10 +02:00
ThomasV
4ed8787433 remove 'util.py' from scripts 2019-02-05 20:33:50 +01:00
SomberNight
e37da62a1c fix most "scripts"
related: #4754
2018-11-02 20:14:59 +01:00
Janus
097ac144d9 file reorganization with top-level module 2018-07-13 14:01:37 +02:00