mirror of
https://github.com/aljazceru/nutshell.git
synced 2026-01-09 19:54:20 +01:00
Mint: Talk to LND via gRPC (#595)
* protos + lnd_grpc.py + __init__ + status method * `create_invoice` * `pay_invoice`, `pay_partial_invoice` and router pb2 * `get_invoice_status` * channel keep-alive options * Update lnd_grpc.py * `get_payment_status` + make format * `get_payment_quote` and `paid_invoices_stream`. This was suspiciously easy... * download_and_build script modified to fix the imports on generated code * pyproject with new dependencies * update poetry.lock * fixed errors in `pay_partial_invoice` * update .env.example * make format * enable regtest * update .env.example * suggested fixes * suggested changes pt.2 * Update cashu/core/settings.py Co-authored-by: callebtc <93376500+callebtc@users.noreply.github.com> --------- Co-authored-by: callebtc <93376500+callebtc@users.noreply.github.com>
This commit is contained in:
24
.env.example
24
.env.example
@@ -60,14 +60,20 @@ MINT_DATABASE=data/mint
|
||||
# MINT_DATABASE=postgres://cashu:cashu@localhost:5432/cashu
|
||||
|
||||
# Funding source backends
|
||||
# Supported: FakeWallet, LndRestWallet, CLNRestWallet, BlinkWallet, LNbitsWallet, StrikeWallet, CoreLightningRestWallet (deprecated)
|
||||
# Set one funding source backend for each unit
|
||||
# Supported: FakeWallet, LndRestWallet, LndRPCWallet, CLNRestWallet, BlinkWallet, LNbitsWallet, StrikeWallet, CoreLightningRestWallet (deprecated)
|
||||
|
||||
MINT_BACKEND_BOLT11_SAT=FakeWallet
|
||||
# Only works if a usd derivation path is set
|
||||
# MINT_BACKEND_BOLT11_SAT=FakeWallet
|
||||
# MINT_BACKEND_BOLT11_USD=FakeWallet
|
||||
# MINT_BACKEND_BOLT11_EUR=FakeWallet
|
||||
|
||||
# for use with LNbitsWallet
|
||||
MINT_LNBITS_ENDPOINT=https://legend.lnbits.com
|
||||
MINT_LNBITS_KEY=yourkeyasdasdasd
|
||||
# Funding source settings
|
||||
|
||||
# Use with LndRPCWallet
|
||||
MINT_LND_RPC_ENDPOINT=localhost:10009
|
||||
MINT_LND_RPC_CERT="/path/to/tls.cert"
|
||||
MINT_LND_RPC_MACAROON="/path/to/admin.macaroon"
|
||||
|
||||
# Use with LndRestWallet
|
||||
MINT_LND_REST_ENDPOINT=https://127.0.0.1:8086
|
||||
@@ -75,6 +81,10 @@ MINT_LND_REST_CERT="/home/lnd/.lnd/tls.cert"
|
||||
MINT_LND_REST_MACAROON="/home/lnd/.lnd/data/chain/bitcoin/regtest/admin.macaroon"
|
||||
MINT_LND_REST_CERT_VERIFY=True
|
||||
|
||||
# Use with LND
|
||||
# This setting enables MPP support for Partial multi-path payments (NUT-15)
|
||||
MINT_LND_ENABLE_MPP=TRUE
|
||||
|
||||
# Use with CLNRestWallet
|
||||
MINT_CLNREST_URL=https://localhost:3010
|
||||
MINT_CLNREST_CERT="./clightning-2/regtest/ca.pem"
|
||||
@@ -86,6 +96,10 @@ MINT_CORELIGHTNING_REST_URL=https://localhost:3001
|
||||
MINT_CORELIGHTNING_REST_MACAROON="./clightning-rest/access.macaroon"
|
||||
MINT_CORELIGHTNING_REST_CERT="./clightning-2-rest/certificate.pem"
|
||||
|
||||
# Use with LNbitsWallet
|
||||
MINT_LNBITS_ENDPOINT=https://legend.lnbits.com
|
||||
MINT_LNBITS_KEY=yourkeyasdasdasd
|
||||
|
||||
# Use with BlinkWallet
|
||||
MINT_BLINK_KEY=blink_abcdefgh
|
||||
|
||||
|
||||
2
.github/workflows/ci.yml
vendored
2
.github/workflows/ci.yml
vendored
@@ -33,7 +33,7 @@ jobs:
|
||||
python-version: ["3.10"]
|
||||
poetry-version: ["1.7.1"]
|
||||
backend-wallet-class:
|
||||
["LndRestWallet", "CLNRestWallet", "CoreLightningRestWallet", "LNbitsWallet"]
|
||||
["LndRPCWallet", "LndRestWallet", "CLNRestWallet", "CoreLightningRestWallet", "LNbitsWallet"]
|
||||
mint-database: ["./test_data/test_mint", "postgres://cashu:cashu@localhost:5432/cashu"]
|
||||
# mint-database: ["./test_data/test_mint"]
|
||||
with:
|
||||
|
||||
7
.github/workflows/regtest.yml
vendored
7
.github/workflows/regtest.yml
vendored
@@ -52,11 +52,18 @@ jobs:
|
||||
MINT_TEST_DATABASE: ${{ inputs.mint-database }}
|
||||
TOR: false
|
||||
MINT_BACKEND_BOLT11_SAT: ${{ inputs.backend-wallet-class }}
|
||||
# LNbits wallet
|
||||
MINT_LNBITS_ENDPOINT: http://localhost:5001
|
||||
MINT_LNBITS_KEY: d08a3313322a4514af75d488bcc27eee
|
||||
# LndRestWallet
|
||||
MINT_LND_REST_ENDPOINT: https://localhost:8081/
|
||||
MINT_LND_REST_CERT: ./regtest/data/lnd-3/tls.cert
|
||||
MINT_LND_REST_MACAROON: ./regtest/data/lnd-3/data/chain/bitcoin/regtest/admin.macaroon
|
||||
# LndRPCWallet
|
||||
MINT_LND_RPC_ENDPOINT: localhost:10009
|
||||
MINT_LND_RPC_CERT: ./regtest/data/lnd-3/tls.cert
|
||||
MINT_LND_RPC_MACAROON: ./regtest/data/lnd-3/data/chain/bitcoin/regtest/admin.macaroon
|
||||
|
||||
MINT_LND_ENABLE_MPP: true
|
||||
# LND_GRPC_ENDPOINT: localhost
|
||||
# LND_GRPC_PORT: 10009
|
||||
|
||||
@@ -201,6 +201,10 @@ class LndRestFundingSource(MintSettings):
|
||||
mint_lnd_rest_invoice_macaroon: Optional[str] = Field(default=None)
|
||||
mint_lnd_enable_mpp: bool = Field(default=False)
|
||||
|
||||
class LndRPCFundingSource(MintSettings):
|
||||
mint_lnd_rpc_endpoint: Optional[str] = Field(default=None)
|
||||
mint_lnd_rpc_cert: Optional[str] = Field(default=None)
|
||||
mint_lnd_rpc_macaroon: Optional[str] = Field(default=None)
|
||||
|
||||
class CLNRestFundingSource(MintSettings):
|
||||
mint_clnrest_url: Optional[str] = Field(default=None)
|
||||
@@ -217,6 +221,7 @@ class CoreLightningRestFundingSource(MintSettings):
|
||||
|
||||
class Settings(
|
||||
EnvSettings,
|
||||
LndRPCFundingSource,
|
||||
LndRestFundingSource,
|
||||
CoreLightningRestFundingSource,
|
||||
CLNRestFundingSource,
|
||||
|
||||
@@ -5,6 +5,7 @@ from .clnrest import CLNRestWallet # noqa: F401
|
||||
from .corelightningrest import CoreLightningRestWallet # noqa: F401
|
||||
from .fake import FakeWallet # noqa: F401
|
||||
from .lnbits import LNbitsWallet # noqa: F401
|
||||
from .lnd_grpc.lnd_grpc import LndRPCWallet # noqa: F401
|
||||
from .lndrest import LndRestWallet # noqa: F401
|
||||
from .strike import StrikeWallet # noqa: F401
|
||||
|
||||
|
||||
372
cashu/lightning/lnd_grpc/lnd_grpc.py
Normal file
372
cashu/lightning/lnd_grpc/lnd_grpc.py
Normal file
@@ -0,0 +1,372 @@
|
||||
import asyncio
|
||||
import codecs
|
||||
import hashlib
|
||||
import os
|
||||
from typing import AsyncGenerator, Optional
|
||||
|
||||
import bolt11
|
||||
import grpc
|
||||
from bolt11 import (
|
||||
TagChar,
|
||||
)
|
||||
from grpc.aio import AioRpcError
|
||||
from loguru import logger
|
||||
|
||||
import cashu.lightning.lnd_grpc.protos.lightning_pb2 as lnrpc
|
||||
import cashu.lightning.lnd_grpc.protos.lightning_pb2_grpc as lightningstub
|
||||
import cashu.lightning.lnd_grpc.protos.router_pb2 as routerrpc
|
||||
import cashu.lightning.lnd_grpc.protos.router_pb2_grpc as routerstub
|
||||
from cashu.core.base import Amount, MeltQuote, Unit
|
||||
from cashu.core.helpers import fee_reserve
|
||||
from cashu.core.settings import settings
|
||||
from cashu.lightning.base import (
|
||||
InvoiceResponse,
|
||||
LightningBackend,
|
||||
PaymentQuoteResponse,
|
||||
PaymentResponse,
|
||||
PaymentStatus,
|
||||
PostMeltQuoteRequest,
|
||||
StatusResponse,
|
||||
)
|
||||
|
||||
# maps statuses to None, False, True:
|
||||
# https://api.lightning.community/?python=#paymentpaymentstatus
|
||||
PAYMENT_STATUSES = {
|
||||
lnrpc.Payment.PaymentStatus.UNKNOWN: None,
|
||||
lnrpc.Payment.PaymentStatus.IN_FLIGHT: None,
|
||||
lnrpc.Payment.PaymentStatus.INITIATED: None,
|
||||
lnrpc.Payment.PaymentStatus.SUCCEEDED: True,
|
||||
lnrpc.Payment.PaymentStatus.FAILED: False,
|
||||
}
|
||||
INVOICE_STATUSES = {
|
||||
lnrpc.Invoice.InvoiceState.OPEN: None,
|
||||
lnrpc.Invoice.InvoiceState.SETTLED: True,
|
||||
lnrpc.Invoice.InvoiceState.CANCELED: None,
|
||||
lnrpc.Invoice.InvoiceState.ACCEPTED: None,
|
||||
}
|
||||
|
||||
class LndRPCWallet(LightningBackend):
|
||||
|
||||
supports_mpp = settings.mint_lnd_enable_mpp
|
||||
supports_incoming_payment_stream = True
|
||||
supported_units = set([Unit.sat, Unit.msat])
|
||||
unit = Unit.sat
|
||||
|
||||
def __init__(self, unit: Unit = Unit.sat, **kwargs):
|
||||
self.assert_unit_supported(unit)
|
||||
self.unit = unit
|
||||
self.endpoint = settings.mint_lnd_rpc_endpoint
|
||||
cert_path = settings.mint_lnd_rpc_cert
|
||||
|
||||
macaroon_path = settings.mint_lnd_rpc_macaroon
|
||||
|
||||
if not self.endpoint:
|
||||
raise Exception("cannot initialize LndRPCWallet: no endpoint")
|
||||
|
||||
if not macaroon_path:
|
||||
raise Exception("cannot initialize LndRPCWallet: no macaroon")
|
||||
|
||||
if not cert_path:
|
||||
raise Exception("no certificate for LndRPCWallet provided")
|
||||
|
||||
self.macaroon = codecs.encode(open(macaroon_path, 'rb').read(), 'hex')
|
||||
|
||||
def metadata_callback(context, callback):
|
||||
callback([('macaroon', self.macaroon)], None)
|
||||
auth_creds = grpc.metadata_call_credentials(metadata_callback)
|
||||
|
||||
# create SSL credentials
|
||||
os.environ['GRPC_SSL_CIPHER_SUITES'] = 'HIGH+ECDSA'
|
||||
cert = open(cert_path, 'rb').read()
|
||||
ssl_creds = grpc.ssl_channel_credentials(cert)
|
||||
|
||||
# combine macaroon and SSL credentials
|
||||
self.combined_creds = grpc.composite_channel_credentials(ssl_creds, auth_creds)
|
||||
|
||||
if self.supports_mpp:
|
||||
logger.info("LndRPCWallet enabling MPP feature")
|
||||
|
||||
|
||||
async def status(self) -> StatusResponse:
|
||||
r = None
|
||||
try:
|
||||
async with grpc.aio.secure_channel(self.endpoint, self.combined_creds) as channel:
|
||||
lnstub = lightningstub.LightningStub(channel)
|
||||
r = await lnstub.ChannelBalance(lnrpc.ChannelBalanceRequest())
|
||||
except AioRpcError as e:
|
||||
return StatusResponse(
|
||||
error_message=f"Error calling Lnd gRPC: {e}", balance=0
|
||||
)
|
||||
# NOTE: `balance` field is deprecated. Change this.
|
||||
return StatusResponse(error_message=None, balance=r.balance*1000)
|
||||
|
||||
|
||||
async def create_invoice(
|
||||
self,
|
||||
amount: Amount,
|
||||
memo: Optional[str] = None,
|
||||
description_hash: Optional[bytes] = None,
|
||||
unhashed_description: Optional[bytes] = None,
|
||||
**kwargs,
|
||||
) -> InvoiceResponse:
|
||||
self.assert_unit_supported(amount.unit)
|
||||
data = lnrpc.Invoice(
|
||||
value=amount.to(Unit.sat).amount,
|
||||
private=True,
|
||||
memo=memo or "",
|
||||
)
|
||||
if kwargs.get("expiry"):
|
||||
data.expiry = kwargs["expiry"]
|
||||
if description_hash:
|
||||
data.description_hash = description_hash
|
||||
elif unhashed_description:
|
||||
data.description_hash = hashlib.sha256(unhashed_description).digest()
|
||||
|
||||
r = None
|
||||
try:
|
||||
async with grpc.aio.secure_channel(self.endpoint, self.combined_creds) as channel:
|
||||
lnstub = lightningstub.LightningStub(channel)
|
||||
r = await lnstub.AddInvoice(data)
|
||||
except AioRpcError as e:
|
||||
logger.error(f"AddInvoice failed: {e}")
|
||||
return InvoiceResponse(
|
||||
ok=False,
|
||||
error_message=f"AddInvoice failed: {e}",
|
||||
)
|
||||
|
||||
payment_request = r.payment_request
|
||||
payment_hash = r.r_hash.hex()
|
||||
checking_id = payment_hash
|
||||
|
||||
return InvoiceResponse(
|
||||
ok=True,
|
||||
checking_id=checking_id,
|
||||
payment_request=payment_request,
|
||||
error_message=None,
|
||||
)
|
||||
|
||||
async def pay_invoice(
|
||||
self, quote: MeltQuote, fee_limit_msat: int
|
||||
) -> PaymentResponse:
|
||||
# if the amount of the melt quote is different from the request
|
||||
# call pay_partial_invoice instead
|
||||
invoice = bolt11.decode(quote.request)
|
||||
if invoice.amount_msat:
|
||||
amount_msat = int(invoice.amount_msat)
|
||||
if amount_msat != quote.amount * 1000 and self.supports_mpp:
|
||||
return await self.pay_partial_invoice(
|
||||
quote, Amount(Unit.sat, quote.amount), fee_limit_msat
|
||||
)
|
||||
|
||||
# set the fee limit for the payment
|
||||
feelimit = lnrpc.FeeLimit(
|
||||
fixed_msat=fee_limit_msat
|
||||
)
|
||||
r = None
|
||||
try:
|
||||
async with grpc.aio.secure_channel(self.endpoint, self.combined_creds) as channel:
|
||||
lnstub = lightningstub.LightningStub(channel)
|
||||
r = await lnstub.SendPaymentSync(
|
||||
lnrpc.SendRequest(
|
||||
payment_request=quote.request,
|
||||
fee_limit=feelimit,
|
||||
)
|
||||
)
|
||||
except AioRpcError as e:
|
||||
error_message = f"SendPaymentSync failed: {e}"
|
||||
return PaymentResponse(
|
||||
ok=False,
|
||||
error_message=error_message,
|
||||
)
|
||||
|
||||
if r.payment_error:
|
||||
return PaymentResponse(
|
||||
ok=False,
|
||||
error_message=r.payment_error,
|
||||
)
|
||||
|
||||
checking_id = r.payment_hash.hex()
|
||||
fee_msat = r.payment_route.total_fees_msat
|
||||
preimage = r.payment_preimage.hex()
|
||||
return PaymentResponse(
|
||||
ok=True,
|
||||
checking_id=checking_id,
|
||||
fee=Amount(unit=Unit.msat, amount=fee_msat) if fee_msat else None,
|
||||
preimage=preimage,
|
||||
error_message=None,
|
||||
)
|
||||
|
||||
async def pay_partial_invoice(
|
||||
self, quote: MeltQuote, amount: Amount, fee_limit_msat: int
|
||||
) -> PaymentResponse:
|
||||
# set the fee limit for the payment
|
||||
feelimit = lnrpc.FeeLimit(
|
||||
fixed_msat=fee_limit_msat
|
||||
)
|
||||
invoice = bolt11.decode(quote.request)
|
||||
|
||||
invoice_amount = invoice.amount_msat
|
||||
assert invoice_amount, "invoice has no amount."
|
||||
total_amount_msat = int(invoice_amount)
|
||||
|
||||
payee = invoice.tags.get(TagChar.payee)
|
||||
assert payee
|
||||
pubkey = str(payee.data)
|
||||
|
||||
payer_addr_tag = invoice.tags.get(bolt11.TagChar("s"))
|
||||
assert payer_addr_tag
|
||||
payer_addr = str(payer_addr_tag.data)
|
||||
|
||||
# get the route
|
||||
r = None
|
||||
try:
|
||||
async with grpc.aio.secure_channel(self.endpoint, self.combined_creds) as channel:
|
||||
lnstub = lightningstub.LightningStub(channel)
|
||||
router_stub = routerstub.RouterStub(channel)
|
||||
r = await lnstub.QueryRoutes(
|
||||
lnrpc.QueryRoutesRequest(
|
||||
pub_key=pubkey,
|
||||
amt=amount.to(Unit.sat).amount,
|
||||
fee_limit=feelimit,
|
||||
)
|
||||
)
|
||||
'''
|
||||
# We need to set the mpp_record for a partial payment
|
||||
mpp_record = lnrpc.MPPRecord(
|
||||
payment_addr=bytes.fromhex(payer_addr),
|
||||
total_amt_msat=total_amount_msat,
|
||||
)
|
||||
'''
|
||||
# modify the mpp_record in the last hop
|
||||
route_nr = 0
|
||||
r.routes[route_nr].hops[-1].mpp_record.payment_addr = bytes.fromhex(payer_addr)
|
||||
r.routes[route_nr].hops[-1].mpp_record.total_amt_msat = total_amount_msat
|
||||
|
||||
# Send to route request
|
||||
r = await router_stub.SendToRouteV2(
|
||||
routerrpc.SendToRouteRequest(
|
||||
payment_hash=bytes.fromhex(invoice.payment_hash),
|
||||
route=r.routes[route_nr],
|
||||
)
|
||||
)
|
||||
except AioRpcError as e:
|
||||
logger.error(f"QueryRoute or SendToRouteV2 failed: {e}")
|
||||
return PaymentResponse(
|
||||
ok=False,
|
||||
error_message=str(e),
|
||||
)
|
||||
|
||||
if r.status == lnrpc.HTLCAttempt.HTLCStatus.FAILED:
|
||||
error_message = f"Sending to route failed with code {r.failure.code}"
|
||||
logger.error(error_message)
|
||||
return PaymentResponse(
|
||||
ok=False,
|
||||
error_message=error_message,
|
||||
)
|
||||
|
||||
ok = r.status == lnrpc.HTLCAttempt.HTLCStatus.SUCCEEDED
|
||||
checking_id = invoice.payment_hash
|
||||
fee_msat = r.route.total_fees_msat
|
||||
preimage = r.preimage.hex()
|
||||
return PaymentResponse(
|
||||
ok=ok,
|
||||
checking_id=checking_id,
|
||||
fee=Amount(unit=Unit.msat, amount=fee_msat) if fee_msat else None,
|
||||
preimage=preimage,
|
||||
error_message=None,
|
||||
)
|
||||
|
||||
async def get_invoice_status(self, checking_id: str) -> PaymentStatus:
|
||||
r = None
|
||||
try:
|
||||
async with grpc.aio.secure_channel(self.endpoint, self.combined_creds) as channel:
|
||||
lnstub = lightningstub.LightningStub(channel)
|
||||
r = await lnstub.LookupInvoice(
|
||||
lnrpc.PaymentHash(
|
||||
r_hash=bytes.fromhex(checking_id)
|
||||
)
|
||||
)
|
||||
except AioRpcError as e:
|
||||
error_message = f"LookupInvoice failed: {e}"
|
||||
logger.error(error_message)
|
||||
return PaymentStatus(paid=None)
|
||||
|
||||
return PaymentStatus(paid=INVOICE_STATUSES[r.state])
|
||||
|
||||
async def get_payment_status(self, checking_id: str) -> PaymentStatus:
|
||||
"""
|
||||
This routine checks the payment status using routerpc.TrackPaymentV2.
|
||||
"""
|
||||
# convert checking_id from hex to bytes and some LND magic
|
||||
try:
|
||||
checking_id_bytes = bytes.fromhex(checking_id)
|
||||
except ValueError:
|
||||
logger.error(f"Couldn't convert {checking_id = } to bytes")
|
||||
return PaymentStatus(paid=None)
|
||||
|
||||
request = routerrpc.TrackPaymentRequest(payment_hash=checking_id_bytes)
|
||||
|
||||
try:
|
||||
async with grpc.aio.secure_channel(self.endpoint, self.combined_creds) as channel:
|
||||
router_stub = routerstub.RouterStub(channel)
|
||||
async for payment in router_stub.TrackPaymentV2(request):
|
||||
if payment is not None and payment.status:
|
||||
return PaymentStatus(
|
||||
paid=PAYMENT_STATUSES[payment.status],
|
||||
fee=(
|
||||
Amount(unit=Unit.msat, amount=payment.fee_msat)
|
||||
if payment.fee_msat
|
||||
else None
|
||||
),
|
||||
preimage=payment.payment_preimage,
|
||||
)
|
||||
except AioRpcError as e:
|
||||
error_message = f"TrackPaymentV2 failed: {e}"
|
||||
logger.error(error_message)
|
||||
|
||||
return PaymentStatus(paid=None)
|
||||
|
||||
async def paid_invoices_stream(self) -> AsyncGenerator[str, None]:
|
||||
while True:
|
||||
try:
|
||||
async with grpc.aio.secure_channel(self.endpoint, self.combined_creds) as channel:
|
||||
lnstub = lightningstub.LightningStub(channel)
|
||||
async for invoice in lnstub.SubscribeInvoices(lnrpc.InvoiceSubscription()):
|
||||
if invoice.state != lnrpc.Invoice.InvoiceState.SETTLED:
|
||||
continue
|
||||
payment_hash = invoice.r_hash.hex()
|
||||
yield payment_hash
|
||||
except AioRpcError as exc:
|
||||
logger.error(
|
||||
f"SubscribeInvoices failed: {exc}. Retrying in 1 sec..."
|
||||
)
|
||||
await asyncio.sleep(1)
|
||||
|
||||
async def get_payment_quote(
|
||||
self, melt_quote: PostMeltQuoteRequest
|
||||
) -> PaymentQuoteResponse:
|
||||
# get amount from melt_quote or from bolt11
|
||||
amount = (
|
||||
Amount(Unit[melt_quote.unit], melt_quote.mpp_amount)
|
||||
if melt_quote.is_mpp
|
||||
else None
|
||||
)
|
||||
|
||||
invoice_obj = bolt11.decode(melt_quote.request)
|
||||
assert invoice_obj.amount_msat, "invoice has no amount."
|
||||
|
||||
if amount:
|
||||
amount_msat = amount.to(Unit.msat).amount
|
||||
else:
|
||||
amount_msat = int(invoice_obj.amount_msat)
|
||||
|
||||
fees_msat = fee_reserve(amount_msat)
|
||||
fees = Amount(unit=Unit.msat, amount=fees_msat)
|
||||
|
||||
amount = Amount(unit=Unit.msat, amount=amount_msat)
|
||||
|
||||
return PaymentQuoteResponse(
|
||||
checking_id=invoice_obj.payment_hash,
|
||||
fee=fees.to(self.unit, round="up"),
|
||||
amount=amount.to(self.unit, round="up"),
|
||||
)
|
||||
36
cashu/lightning/lnd_grpc/protos/download_and_build.sh
Normal file
36
cashu/lightning/lnd_grpc/protos/download_and_build.sh
Normal file
@@ -0,0 +1,36 @@
|
||||
#!/bin/bash
|
||||
|
||||
# *** RUN THIS FROM THE ROOT OF THE PROJECT ***
|
||||
|
||||
BASE_DIR=./cashu/lightning/lnd_grpc/protos
|
||||
echo "base dir: $BASE_DIR"
|
||||
|
||||
# Check if the googleapis directory exists
|
||||
if [ -d "$BASE_DIR/googleapis" ]; then
|
||||
echo "$BASE_DIR/googleapis directory already exists. Skipping clone."
|
||||
else
|
||||
echo "Cloning googleapis..."
|
||||
echo "If this doesn't work, clone it manually."
|
||||
git clone https://github.com/googleapis/googleapis.git $BASE_DIR/googleapis
|
||||
fi
|
||||
|
||||
echo "Installing pip packages..."
|
||||
poetry add grpcio grpcio-tools googleapis-common-protos mypy-protobuf types-protobuf
|
||||
|
||||
echo "curl-ing protos"
|
||||
curl -o $BASE_DIR/lightning.proto -s https://raw.githubusercontent.com/lightningnetwork/lnd/master/lnrpc/lightning.proto
|
||||
curl -o $BASE_DIR/router.proto -s https://raw.githubusercontent.com/lightningnetwork/lnd/master/lnrpc/routerrpc/router.proto
|
||||
|
||||
echo "auto-generate code from protos..."
|
||||
python -m grpc_tools.protoc --proto_path=$BASE_DIR/googleapis:$BASE_DIR --mypy_out=$BASE_DIR --python_out=$BASE_DIR --grpc_python_out=$BASE_DIR $BASE_DIR/lightning.proto
|
||||
python -m grpc_tools.protoc --proto_path=$BASE_DIR/googleapis:$BASE_DIR --mypy_out=$BASE_DIR --python_out=$BASE_DIR --grpc_python_out=$BASE_DIR $BASE_DIR/router.proto
|
||||
|
||||
echo "fixing imports on autogenerated files..."
|
||||
for file in $BASE_DIR/*.{py,pyi}; do
|
||||
if [ -f "$file" ]; then
|
||||
sed -i -e 's/lightning_pb2/cashu.lightning.lnd_grpc.protos.lightning_pb2/g' -e 's/router_pb2/cashu.lightning.lnd_grpc.protos.router_pb2/g' $file
|
||||
fi
|
||||
done
|
||||
|
||||
echo "Done!"
|
||||
|
||||
5062
cashu/lightning/lnd_grpc/protos/lightning.proto
Normal file
5062
cashu/lightning/lnd_grpc/protos/lightning.proto
Normal file
File diff suppressed because it is too large
Load Diff
674
cashu/lightning/lnd_grpc/protos/lightning_pb2.py
Normal file
674
cashu/lightning/lnd_grpc/protos/lightning_pb2.py
Normal file
File diff suppressed because one or more lines are too long
8506
cashu/lightning/lnd_grpc/protos/lightning_pb2.pyi
Normal file
8506
cashu/lightning/lnd_grpc/protos/lightning_pb2.pyi
Normal file
File diff suppressed because it is too large
Load Diff
3382
cashu/lightning/lnd_grpc/protos/lightning_pb2_grpc.py
Normal file
3382
cashu/lightning/lnd_grpc/protos/lightning_pb2_grpc.py
Normal file
File diff suppressed because it is too large
Load Diff
2481
cashu/lightning/lnd_grpc/protos/lightning_pb2_grpc.pyi
Normal file
2481
cashu/lightning/lnd_grpc/protos/lightning_pb2_grpc.pyi
Normal file
File diff suppressed because it is too large
Load Diff
1023
cashu/lightning/lnd_grpc/protos/router.proto
Normal file
1023
cashu/lightning/lnd_grpc/protos/router.proto
Normal file
File diff suppressed because it is too large
Load Diff
146
cashu/lightning/lnd_grpc/protos/router_pb2.py
Normal file
146
cashu/lightning/lnd_grpc/protos/router_pb2.py
Normal file
File diff suppressed because one or more lines are too long
1572
cashu/lightning/lnd_grpc/protos/router_pb2.pyi
Normal file
1572
cashu/lightning/lnd_grpc/protos/router_pb2.pyi
Normal file
File diff suppressed because it is too large
Load Diff
972
cashu/lightning/lnd_grpc/protos/router_pb2_grpc.py
Normal file
972
cashu/lightning/lnd_grpc/protos/router_pb2_grpc.py
Normal file
@@ -0,0 +1,972 @@
|
||||
# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
|
||||
"""Client and server classes corresponding to protobuf-defined services."""
|
||||
import warnings
|
||||
|
||||
import grpc
|
||||
|
||||
import cashu.lightning.lnd_grpc.protos.lightning_pb2 as lightning__pb2
|
||||
import cashu.lightning.lnd_grpc.protos.router_pb2 as router__pb2
|
||||
|
||||
GRPC_GENERATED_VERSION = '1.63.0'
|
||||
GRPC_VERSION = grpc.__version__
|
||||
EXPECTED_ERROR_RELEASE = '1.65.0'
|
||||
SCHEDULED_RELEASE_DATE = 'June 25, 2024'
|
||||
_version_not_supported = False
|
||||
|
||||
try:
|
||||
from grpc._utilities import first_version_is_lower
|
||||
_version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION)
|
||||
except ImportError:
|
||||
_version_not_supported = True
|
||||
|
||||
if _version_not_supported:
|
||||
warnings.warn(
|
||||
f'The grpc package installed is at version {GRPC_VERSION},'
|
||||
+ ' but the generated code in cashu.lightning.lnd_grpc.protos.router_pb2_grpc.py depends on'
|
||||
+ f' grpcio>={GRPC_GENERATED_VERSION}.'
|
||||
+ f' Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}'
|
||||
+ f' or downgrade your generated code using grpcio-tools<={GRPC_VERSION}.'
|
||||
+ f' This warning will become an error in {EXPECTED_ERROR_RELEASE},'
|
||||
+ f' scheduled for release on {SCHEDULED_RELEASE_DATE}.',
|
||||
RuntimeWarning
|
||||
)
|
||||
|
||||
|
||||
class RouterStub(object):
|
||||
"""
|
||||
Comments in this file will be directly parsed into the API
|
||||
Documentation as descriptions of the associated method, message, or field.
|
||||
These descriptions should go right above the definition of the object, and
|
||||
can be in either block or // comment format.
|
||||
|
||||
An RPC method can be matched to an lncli command by placing a line in the
|
||||
beginning of the description in exactly the following format:
|
||||
lncli: `methodname`
|
||||
|
||||
Failure to specify the exact name of the command will cause documentation
|
||||
generation to fail.
|
||||
|
||||
More information on how exactly the gRPC documentation is generated from
|
||||
this proto file can be found here:
|
||||
https://github.com/lightninglabs/lightning-api
|
||||
|
||||
Router is a service that offers advanced interaction with the router
|
||||
subsystem of the daemon.
|
||||
"""
|
||||
|
||||
def __init__(self, channel):
|
||||
"""Constructor.
|
||||
|
||||
Args:
|
||||
channel: A grpc.Channel.
|
||||
"""
|
||||
self.SendPaymentV2 = channel.unary_stream(
|
||||
'/routerrpc.Router/SendPaymentV2',
|
||||
request_serializer=router__pb2.SendPaymentRequest.SerializeToString,
|
||||
response_deserializer=lightning__pb2.Payment.FromString,
|
||||
_registered_method=True)
|
||||
self.TrackPaymentV2 = channel.unary_stream(
|
||||
'/routerrpc.Router/TrackPaymentV2',
|
||||
request_serializer=router__pb2.TrackPaymentRequest.SerializeToString,
|
||||
response_deserializer=lightning__pb2.Payment.FromString,
|
||||
_registered_method=True)
|
||||
self.TrackPayments = channel.unary_stream(
|
||||
'/routerrpc.Router/TrackPayments',
|
||||
request_serializer=router__pb2.TrackPaymentsRequest.SerializeToString,
|
||||
response_deserializer=lightning__pb2.Payment.FromString,
|
||||
_registered_method=True)
|
||||
self.EstimateRouteFee = channel.unary_unary(
|
||||
'/routerrpc.Router/EstimateRouteFee',
|
||||
request_serializer=router__pb2.RouteFeeRequest.SerializeToString,
|
||||
response_deserializer=router__pb2.RouteFeeResponse.FromString,
|
||||
_registered_method=True)
|
||||
self.SendToRoute = channel.unary_unary(
|
||||
'/routerrpc.Router/SendToRoute',
|
||||
request_serializer=router__pb2.SendToRouteRequest.SerializeToString,
|
||||
response_deserializer=router__pb2.SendToRouteResponse.FromString,
|
||||
_registered_method=True)
|
||||
self.SendToRouteV2 = channel.unary_unary(
|
||||
'/routerrpc.Router/SendToRouteV2',
|
||||
request_serializer=router__pb2.SendToRouteRequest.SerializeToString,
|
||||
response_deserializer=lightning__pb2.HTLCAttempt.FromString,
|
||||
_registered_method=True)
|
||||
self.ResetMissionControl = channel.unary_unary(
|
||||
'/routerrpc.Router/ResetMissionControl',
|
||||
request_serializer=router__pb2.ResetMissionControlRequest.SerializeToString,
|
||||
response_deserializer=router__pb2.ResetMissionControlResponse.FromString,
|
||||
_registered_method=True)
|
||||
self.QueryMissionControl = channel.unary_unary(
|
||||
'/routerrpc.Router/QueryMissionControl',
|
||||
request_serializer=router__pb2.QueryMissionControlRequest.SerializeToString,
|
||||
response_deserializer=router__pb2.QueryMissionControlResponse.FromString,
|
||||
_registered_method=True)
|
||||
self.XImportMissionControl = channel.unary_unary(
|
||||
'/routerrpc.Router/XImportMissionControl',
|
||||
request_serializer=router__pb2.XImportMissionControlRequest.SerializeToString,
|
||||
response_deserializer=router__pb2.XImportMissionControlResponse.FromString,
|
||||
_registered_method=True)
|
||||
self.GetMissionControlConfig = channel.unary_unary(
|
||||
'/routerrpc.Router/GetMissionControlConfig',
|
||||
request_serializer=router__pb2.GetMissionControlConfigRequest.SerializeToString,
|
||||
response_deserializer=router__pb2.GetMissionControlConfigResponse.FromString,
|
||||
_registered_method=True)
|
||||
self.SetMissionControlConfig = channel.unary_unary(
|
||||
'/routerrpc.Router/SetMissionControlConfig',
|
||||
request_serializer=router__pb2.SetMissionControlConfigRequest.SerializeToString,
|
||||
response_deserializer=router__pb2.SetMissionControlConfigResponse.FromString,
|
||||
_registered_method=True)
|
||||
self.QueryProbability = channel.unary_unary(
|
||||
'/routerrpc.Router/QueryProbability',
|
||||
request_serializer=router__pb2.QueryProbabilityRequest.SerializeToString,
|
||||
response_deserializer=router__pb2.QueryProbabilityResponse.FromString,
|
||||
_registered_method=True)
|
||||
self.BuildRoute = channel.unary_unary(
|
||||
'/routerrpc.Router/BuildRoute',
|
||||
request_serializer=router__pb2.BuildRouteRequest.SerializeToString,
|
||||
response_deserializer=router__pb2.BuildRouteResponse.FromString,
|
||||
_registered_method=True)
|
||||
self.SubscribeHtlcEvents = channel.unary_stream(
|
||||
'/routerrpc.Router/SubscribeHtlcEvents',
|
||||
request_serializer=router__pb2.SubscribeHtlcEventsRequest.SerializeToString,
|
||||
response_deserializer=router__pb2.HtlcEvent.FromString,
|
||||
_registered_method=True)
|
||||
self.SendPayment = channel.unary_stream(
|
||||
'/routerrpc.Router/SendPayment',
|
||||
request_serializer=router__pb2.SendPaymentRequest.SerializeToString,
|
||||
response_deserializer=router__pb2.PaymentStatus.FromString,
|
||||
_registered_method=True)
|
||||
self.TrackPayment = channel.unary_stream(
|
||||
'/routerrpc.Router/TrackPayment',
|
||||
request_serializer=router__pb2.TrackPaymentRequest.SerializeToString,
|
||||
response_deserializer=router__pb2.PaymentStatus.FromString,
|
||||
_registered_method=True)
|
||||
self.HtlcInterceptor = channel.stream_stream(
|
||||
'/routerrpc.Router/HtlcInterceptor',
|
||||
request_serializer=router__pb2.ForwardHtlcInterceptResponse.SerializeToString,
|
||||
response_deserializer=router__pb2.ForwardHtlcInterceptRequest.FromString,
|
||||
_registered_method=True)
|
||||
self.UpdateChanStatus = channel.unary_unary(
|
||||
'/routerrpc.Router/UpdateChanStatus',
|
||||
request_serializer=router__pb2.UpdateChanStatusRequest.SerializeToString,
|
||||
response_deserializer=router__pb2.UpdateChanStatusResponse.FromString,
|
||||
_registered_method=True)
|
||||
|
||||
|
||||
class RouterServicer(object):
|
||||
"""
|
||||
Comments in this file will be directly parsed into the API
|
||||
Documentation as descriptions of the associated method, message, or field.
|
||||
These descriptions should go right above the definition of the object, and
|
||||
can be in either block or // comment format.
|
||||
|
||||
An RPC method can be matched to an lncli command by placing a line in the
|
||||
beginning of the description in exactly the following format:
|
||||
lncli: `methodname`
|
||||
|
||||
Failure to specify the exact name of the command will cause documentation
|
||||
generation to fail.
|
||||
|
||||
More information on how exactly the gRPC documentation is generated from
|
||||
this proto file can be found here:
|
||||
https://github.com/lightninglabs/lightning-api
|
||||
|
||||
Router is a service that offers advanced interaction with the router
|
||||
subsystem of the daemon.
|
||||
"""
|
||||
|
||||
def SendPaymentV2(self, request, context):
|
||||
"""
|
||||
SendPaymentV2 attempts to route a payment described by the passed
|
||||
PaymentRequest to the final destination. The call returns a stream of
|
||||
payment updates. When using this RPC, make sure to set a fee limit, as the
|
||||
default routing fee limit is 0 sats. Without a non-zero fee limit only
|
||||
routes without fees will be attempted which often fails with
|
||||
FAILURE_REASON_NO_ROUTE.
|
||||
"""
|
||||
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
||||
context.set_details('Method not implemented!')
|
||||
raise NotImplementedError('Method not implemented!')
|
||||
|
||||
def TrackPaymentV2(self, request, context):
|
||||
"""lncli: `trackpayment`
|
||||
TrackPaymentV2 returns an update stream for the payment identified by the
|
||||
payment hash.
|
||||
"""
|
||||
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
||||
context.set_details('Method not implemented!')
|
||||
raise NotImplementedError('Method not implemented!')
|
||||
|
||||
def TrackPayments(self, request, context):
|
||||
"""
|
||||
TrackPayments returns an update stream for every payment that is not in a
|
||||
terminal state. Note that if payments are in-flight while starting a new
|
||||
subscription, the start of the payment stream could produce out-of-order
|
||||
and/or duplicate events. In order to get updates for every in-flight
|
||||
payment attempt make sure to subscribe to this method before initiating any
|
||||
payments.
|
||||
"""
|
||||
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
||||
context.set_details('Method not implemented!')
|
||||
raise NotImplementedError('Method not implemented!')
|
||||
|
||||
def EstimateRouteFee(self, request, context):
|
||||
"""
|
||||
EstimateRouteFee allows callers to obtain a lower bound w.r.t how much it
|
||||
may cost to send an HTLC to the target end destination.
|
||||
"""
|
||||
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
||||
context.set_details('Method not implemented!')
|
||||
raise NotImplementedError('Method not implemented!')
|
||||
|
||||
def SendToRoute(self, request, context):
|
||||
"""
|
||||
Deprecated, use SendToRouteV2. SendToRoute attempts to make a payment via
|
||||
the specified route. This method differs from SendPayment in that it
|
||||
allows users to specify a full route manually. This can be used for
|
||||
things like rebalancing, and atomic swaps. It differs from the newer
|
||||
SendToRouteV2 in that it doesn't return the full HTLC information.
|
||||
"""
|
||||
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
||||
context.set_details('Method not implemented!')
|
||||
raise NotImplementedError('Method not implemented!')
|
||||
|
||||
def SendToRouteV2(self, request, context):
|
||||
"""
|
||||
SendToRouteV2 attempts to make a payment via the specified route. This
|
||||
method differs from SendPayment in that it allows users to specify a full
|
||||
route manually. This can be used for things like rebalancing, and atomic
|
||||
swaps.
|
||||
"""
|
||||
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
||||
context.set_details('Method not implemented!')
|
||||
raise NotImplementedError('Method not implemented!')
|
||||
|
||||
def ResetMissionControl(self, request, context):
|
||||
"""lncli: `resetmc`
|
||||
ResetMissionControl clears all mission control state and starts with a clean
|
||||
slate.
|
||||
"""
|
||||
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
||||
context.set_details('Method not implemented!')
|
||||
raise NotImplementedError('Method not implemented!')
|
||||
|
||||
def QueryMissionControl(self, request, context):
|
||||
"""lncli: `querymc`
|
||||
QueryMissionControl exposes the internal mission control state to callers.
|
||||
It is a development feature.
|
||||
"""
|
||||
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
||||
context.set_details('Method not implemented!')
|
||||
raise NotImplementedError('Method not implemented!')
|
||||
|
||||
def XImportMissionControl(self, request, context):
|
||||
"""lncli: `importmc`
|
||||
XImportMissionControl is an experimental API that imports the state provided
|
||||
to the internal mission control's state, using all results which are more
|
||||
recent than our existing values. These values will only be imported
|
||||
in-memory, and will not be persisted across restarts.
|
||||
"""
|
||||
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
||||
context.set_details('Method not implemented!')
|
||||
raise NotImplementedError('Method not implemented!')
|
||||
|
||||
def GetMissionControlConfig(self, request, context):
|
||||
"""lncli: `getmccfg`
|
||||
GetMissionControlConfig returns mission control's current config.
|
||||
"""
|
||||
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
||||
context.set_details('Method not implemented!')
|
||||
raise NotImplementedError('Method not implemented!')
|
||||
|
||||
def SetMissionControlConfig(self, request, context):
|
||||
"""lncli: `setmccfg`
|
||||
SetMissionControlConfig will set mission control's config, if the config
|
||||
provided is valid.
|
||||
"""
|
||||
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
||||
context.set_details('Method not implemented!')
|
||||
raise NotImplementedError('Method not implemented!')
|
||||
|
||||
def QueryProbability(self, request, context):
|
||||
"""lncli: `queryprob`
|
||||
Deprecated. QueryProbability returns the current success probability
|
||||
estimate for a given node pair and amount. The call returns a zero success
|
||||
probability if no channel is available or if the amount violates min/max
|
||||
HTLC constraints.
|
||||
"""
|
||||
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
||||
context.set_details('Method not implemented!')
|
||||
raise NotImplementedError('Method not implemented!')
|
||||
|
||||
def BuildRoute(self, request, context):
|
||||
"""lncli: `buildroute`
|
||||
BuildRoute builds a fully specified route based on a list of hop public
|
||||
keys. It retrieves the relevant channel policies from the graph in order to
|
||||
calculate the correct fees and time locks.
|
||||
Note that LND will use its default final_cltv_delta if no value is supplied.
|
||||
Make sure to add the correct final_cltv_delta depending on the invoice
|
||||
restriction. Moreover the caller has to make sure to provide the
|
||||
payment_addr if the route is paying an invoice which signaled it.
|
||||
"""
|
||||
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
||||
context.set_details('Method not implemented!')
|
||||
raise NotImplementedError('Method not implemented!')
|
||||
|
||||
def SubscribeHtlcEvents(self, request, context):
|
||||
"""
|
||||
SubscribeHtlcEvents creates a uni-directional stream from the server to
|
||||
the client which delivers a stream of htlc events.
|
||||
"""
|
||||
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
||||
context.set_details('Method not implemented!')
|
||||
raise NotImplementedError('Method not implemented!')
|
||||
|
||||
def SendPayment(self, request, context):
|
||||
"""
|
||||
Deprecated, use SendPaymentV2. SendPayment attempts to route a payment
|
||||
described by the passed PaymentRequest to the final destination. The call
|
||||
returns a stream of payment status updates.
|
||||
"""
|
||||
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
||||
context.set_details('Method not implemented!')
|
||||
raise NotImplementedError('Method not implemented!')
|
||||
|
||||
def TrackPayment(self, request, context):
|
||||
"""
|
||||
Deprecated, use TrackPaymentV2. TrackPayment returns an update stream for
|
||||
the payment identified by the payment hash.
|
||||
"""
|
||||
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
||||
context.set_details('Method not implemented!')
|
||||
raise NotImplementedError('Method not implemented!')
|
||||
|
||||
def HtlcInterceptor(self, request_iterator, context):
|
||||
"""*
|
||||
HtlcInterceptor dispatches a bi-directional streaming RPC in which
|
||||
Forwarded HTLC requests are sent to the client and the client responds with
|
||||
a boolean that tells LND if this htlc should be intercepted.
|
||||
In case of interception, the htlc can be either settled, cancelled or
|
||||
resumed later by using the ResolveHoldForward endpoint.
|
||||
"""
|
||||
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
||||
context.set_details('Method not implemented!')
|
||||
raise NotImplementedError('Method not implemented!')
|
||||
|
||||
def UpdateChanStatus(self, request, context):
|
||||
"""lncli: `updatechanstatus`
|
||||
UpdateChanStatus attempts to manually set the state of a channel
|
||||
(enabled, disabled, or auto). A manual "disable" request will cause the
|
||||
channel to stay disabled until a subsequent manual request of either
|
||||
"enable" or "auto".
|
||||
"""
|
||||
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
||||
context.set_details('Method not implemented!')
|
||||
raise NotImplementedError('Method not implemented!')
|
||||
|
||||
|
||||
def add_RouterServicer_to_server(servicer, server):
|
||||
rpc_method_handlers = {
|
||||
'SendPaymentV2': grpc.unary_stream_rpc_method_handler(
|
||||
servicer.SendPaymentV2,
|
||||
request_deserializer=router__pb2.SendPaymentRequest.FromString,
|
||||
response_serializer=lightning__pb2.Payment.SerializeToString,
|
||||
),
|
||||
'TrackPaymentV2': grpc.unary_stream_rpc_method_handler(
|
||||
servicer.TrackPaymentV2,
|
||||
request_deserializer=router__pb2.TrackPaymentRequest.FromString,
|
||||
response_serializer=lightning__pb2.Payment.SerializeToString,
|
||||
),
|
||||
'TrackPayments': grpc.unary_stream_rpc_method_handler(
|
||||
servicer.TrackPayments,
|
||||
request_deserializer=router__pb2.TrackPaymentsRequest.FromString,
|
||||
response_serializer=lightning__pb2.Payment.SerializeToString,
|
||||
),
|
||||
'EstimateRouteFee': grpc.unary_unary_rpc_method_handler(
|
||||
servicer.EstimateRouteFee,
|
||||
request_deserializer=router__pb2.RouteFeeRequest.FromString,
|
||||
response_serializer=router__pb2.RouteFeeResponse.SerializeToString,
|
||||
),
|
||||
'SendToRoute': grpc.unary_unary_rpc_method_handler(
|
||||
servicer.SendToRoute,
|
||||
request_deserializer=router__pb2.SendToRouteRequest.FromString,
|
||||
response_serializer=router__pb2.SendToRouteResponse.SerializeToString,
|
||||
),
|
||||
'SendToRouteV2': grpc.unary_unary_rpc_method_handler(
|
||||
servicer.SendToRouteV2,
|
||||
request_deserializer=router__pb2.SendToRouteRequest.FromString,
|
||||
response_serializer=lightning__pb2.HTLCAttempt.SerializeToString,
|
||||
),
|
||||
'ResetMissionControl': grpc.unary_unary_rpc_method_handler(
|
||||
servicer.ResetMissionControl,
|
||||
request_deserializer=router__pb2.ResetMissionControlRequest.FromString,
|
||||
response_serializer=router__pb2.ResetMissionControlResponse.SerializeToString,
|
||||
),
|
||||
'QueryMissionControl': grpc.unary_unary_rpc_method_handler(
|
||||
servicer.QueryMissionControl,
|
||||
request_deserializer=router__pb2.QueryMissionControlRequest.FromString,
|
||||
response_serializer=router__pb2.QueryMissionControlResponse.SerializeToString,
|
||||
),
|
||||
'XImportMissionControl': grpc.unary_unary_rpc_method_handler(
|
||||
servicer.XImportMissionControl,
|
||||
request_deserializer=router__pb2.XImportMissionControlRequest.FromString,
|
||||
response_serializer=router__pb2.XImportMissionControlResponse.SerializeToString,
|
||||
),
|
||||
'GetMissionControlConfig': grpc.unary_unary_rpc_method_handler(
|
||||
servicer.GetMissionControlConfig,
|
||||
request_deserializer=router__pb2.GetMissionControlConfigRequest.FromString,
|
||||
response_serializer=router__pb2.GetMissionControlConfigResponse.SerializeToString,
|
||||
),
|
||||
'SetMissionControlConfig': grpc.unary_unary_rpc_method_handler(
|
||||
servicer.SetMissionControlConfig,
|
||||
request_deserializer=router__pb2.SetMissionControlConfigRequest.FromString,
|
||||
response_serializer=router__pb2.SetMissionControlConfigResponse.SerializeToString,
|
||||
),
|
||||
'QueryProbability': grpc.unary_unary_rpc_method_handler(
|
||||
servicer.QueryProbability,
|
||||
request_deserializer=router__pb2.QueryProbabilityRequest.FromString,
|
||||
response_serializer=router__pb2.QueryProbabilityResponse.SerializeToString,
|
||||
),
|
||||
'BuildRoute': grpc.unary_unary_rpc_method_handler(
|
||||
servicer.BuildRoute,
|
||||
request_deserializer=router__pb2.BuildRouteRequest.FromString,
|
||||
response_serializer=router__pb2.BuildRouteResponse.SerializeToString,
|
||||
),
|
||||
'SubscribeHtlcEvents': grpc.unary_stream_rpc_method_handler(
|
||||
servicer.SubscribeHtlcEvents,
|
||||
request_deserializer=router__pb2.SubscribeHtlcEventsRequest.FromString,
|
||||
response_serializer=router__pb2.HtlcEvent.SerializeToString,
|
||||
),
|
||||
'SendPayment': grpc.unary_stream_rpc_method_handler(
|
||||
servicer.SendPayment,
|
||||
request_deserializer=router__pb2.SendPaymentRequest.FromString,
|
||||
response_serializer=router__pb2.PaymentStatus.SerializeToString,
|
||||
),
|
||||
'TrackPayment': grpc.unary_stream_rpc_method_handler(
|
||||
servicer.TrackPayment,
|
||||
request_deserializer=router__pb2.TrackPaymentRequest.FromString,
|
||||
response_serializer=router__pb2.PaymentStatus.SerializeToString,
|
||||
),
|
||||
'HtlcInterceptor': grpc.stream_stream_rpc_method_handler(
|
||||
servicer.HtlcInterceptor,
|
||||
request_deserializer=router__pb2.ForwardHtlcInterceptResponse.FromString,
|
||||
response_serializer=router__pb2.ForwardHtlcInterceptRequest.SerializeToString,
|
||||
),
|
||||
'UpdateChanStatus': grpc.unary_unary_rpc_method_handler(
|
||||
servicer.UpdateChanStatus,
|
||||
request_deserializer=router__pb2.UpdateChanStatusRequest.FromString,
|
||||
response_serializer=router__pb2.UpdateChanStatusResponse.SerializeToString,
|
||||
),
|
||||
}
|
||||
generic_handler = grpc.method_handlers_generic_handler(
|
||||
'routerrpc.Router', rpc_method_handlers)
|
||||
server.add_generic_rpc_handlers((generic_handler,))
|
||||
|
||||
|
||||
# This class is part of an EXPERIMENTAL API.
|
||||
class Router(object):
|
||||
"""
|
||||
Comments in this file will be directly parsed into the API
|
||||
Documentation as descriptions of the associated method, message, or field.
|
||||
These descriptions should go right above the definition of the object, and
|
||||
can be in either block or // comment format.
|
||||
|
||||
An RPC method can be matched to an lncli command by placing a line in the
|
||||
beginning of the description in exactly the following format:
|
||||
lncli: `methodname`
|
||||
|
||||
Failure to specify the exact name of the command will cause documentation
|
||||
generation to fail.
|
||||
|
||||
More information on how exactly the gRPC documentation is generated from
|
||||
this proto file can be found here:
|
||||
https://github.com/lightninglabs/lightning-api
|
||||
|
||||
Router is a service that offers advanced interaction with the router
|
||||
subsystem of the daemon.
|
||||
"""
|
||||
|
||||
@staticmethod
|
||||
def SendPaymentV2(request,
|
||||
target,
|
||||
options=(),
|
||||
channel_credentials=None,
|
||||
call_credentials=None,
|
||||
insecure=False,
|
||||
compression=None,
|
||||
wait_for_ready=None,
|
||||
timeout=None,
|
||||
metadata=None):
|
||||
return grpc.experimental.unary_stream(
|
||||
request,
|
||||
target,
|
||||
'/routerrpc.Router/SendPaymentV2',
|
||||
router__pb2.SendPaymentRequest.SerializeToString,
|
||||
lightning__pb2.Payment.FromString,
|
||||
options,
|
||||
channel_credentials,
|
||||
insecure,
|
||||
call_credentials,
|
||||
compression,
|
||||
wait_for_ready,
|
||||
timeout,
|
||||
metadata,
|
||||
_registered_method=True)
|
||||
|
||||
@staticmethod
|
||||
def TrackPaymentV2(request,
|
||||
target,
|
||||
options=(),
|
||||
channel_credentials=None,
|
||||
call_credentials=None,
|
||||
insecure=False,
|
||||
compression=None,
|
||||
wait_for_ready=None,
|
||||
timeout=None,
|
||||
metadata=None):
|
||||
return grpc.experimental.unary_stream(
|
||||
request,
|
||||
target,
|
||||
'/routerrpc.Router/TrackPaymentV2',
|
||||
router__pb2.TrackPaymentRequest.SerializeToString,
|
||||
lightning__pb2.Payment.FromString,
|
||||
options,
|
||||
channel_credentials,
|
||||
insecure,
|
||||
call_credentials,
|
||||
compression,
|
||||
wait_for_ready,
|
||||
timeout,
|
||||
metadata,
|
||||
_registered_method=True)
|
||||
|
||||
@staticmethod
|
||||
def TrackPayments(request,
|
||||
target,
|
||||
options=(),
|
||||
channel_credentials=None,
|
||||
call_credentials=None,
|
||||
insecure=False,
|
||||
compression=None,
|
||||
wait_for_ready=None,
|
||||
timeout=None,
|
||||
metadata=None):
|
||||
return grpc.experimental.unary_stream(
|
||||
request,
|
||||
target,
|
||||
'/routerrpc.Router/TrackPayments',
|
||||
router__pb2.TrackPaymentsRequest.SerializeToString,
|
||||
lightning__pb2.Payment.FromString,
|
||||
options,
|
||||
channel_credentials,
|
||||
insecure,
|
||||
call_credentials,
|
||||
compression,
|
||||
wait_for_ready,
|
||||
timeout,
|
||||
metadata,
|
||||
_registered_method=True)
|
||||
|
||||
@staticmethod
|
||||
def EstimateRouteFee(request,
|
||||
target,
|
||||
options=(),
|
||||
channel_credentials=None,
|
||||
call_credentials=None,
|
||||
insecure=False,
|
||||
compression=None,
|
||||
wait_for_ready=None,
|
||||
timeout=None,
|
||||
metadata=None):
|
||||
return grpc.experimental.unary_unary(
|
||||
request,
|
||||
target,
|
||||
'/routerrpc.Router/EstimateRouteFee',
|
||||
router__pb2.RouteFeeRequest.SerializeToString,
|
||||
router__pb2.RouteFeeResponse.FromString,
|
||||
options,
|
||||
channel_credentials,
|
||||
insecure,
|
||||
call_credentials,
|
||||
compression,
|
||||
wait_for_ready,
|
||||
timeout,
|
||||
metadata,
|
||||
_registered_method=True)
|
||||
|
||||
@staticmethod
|
||||
def SendToRoute(request,
|
||||
target,
|
||||
options=(),
|
||||
channel_credentials=None,
|
||||
call_credentials=None,
|
||||
insecure=False,
|
||||
compression=None,
|
||||
wait_for_ready=None,
|
||||
timeout=None,
|
||||
metadata=None):
|
||||
return grpc.experimental.unary_unary(
|
||||
request,
|
||||
target,
|
||||
'/routerrpc.Router/SendToRoute',
|
||||
router__pb2.SendToRouteRequest.SerializeToString,
|
||||
router__pb2.SendToRouteResponse.FromString,
|
||||
options,
|
||||
channel_credentials,
|
||||
insecure,
|
||||
call_credentials,
|
||||
compression,
|
||||
wait_for_ready,
|
||||
timeout,
|
||||
metadata,
|
||||
_registered_method=True)
|
||||
|
||||
@staticmethod
|
||||
def SendToRouteV2(request,
|
||||
target,
|
||||
options=(),
|
||||
channel_credentials=None,
|
||||
call_credentials=None,
|
||||
insecure=False,
|
||||
compression=None,
|
||||
wait_for_ready=None,
|
||||
timeout=None,
|
||||
metadata=None):
|
||||
return grpc.experimental.unary_unary(
|
||||
request,
|
||||
target,
|
||||
'/routerrpc.Router/SendToRouteV2',
|
||||
router__pb2.SendToRouteRequest.SerializeToString,
|
||||
lightning__pb2.HTLCAttempt.FromString,
|
||||
options,
|
||||
channel_credentials,
|
||||
insecure,
|
||||
call_credentials,
|
||||
compression,
|
||||
wait_for_ready,
|
||||
timeout,
|
||||
metadata,
|
||||
_registered_method=True)
|
||||
|
||||
@staticmethod
|
||||
def ResetMissionControl(request,
|
||||
target,
|
||||
options=(),
|
||||
channel_credentials=None,
|
||||
call_credentials=None,
|
||||
insecure=False,
|
||||
compression=None,
|
||||
wait_for_ready=None,
|
||||
timeout=None,
|
||||
metadata=None):
|
||||
return grpc.experimental.unary_unary(
|
||||
request,
|
||||
target,
|
||||
'/routerrpc.Router/ResetMissionControl',
|
||||
router__pb2.ResetMissionControlRequest.SerializeToString,
|
||||
router__pb2.ResetMissionControlResponse.FromString,
|
||||
options,
|
||||
channel_credentials,
|
||||
insecure,
|
||||
call_credentials,
|
||||
compression,
|
||||
wait_for_ready,
|
||||
timeout,
|
||||
metadata,
|
||||
_registered_method=True)
|
||||
|
||||
@staticmethod
|
||||
def QueryMissionControl(request,
|
||||
target,
|
||||
options=(),
|
||||
channel_credentials=None,
|
||||
call_credentials=None,
|
||||
insecure=False,
|
||||
compression=None,
|
||||
wait_for_ready=None,
|
||||
timeout=None,
|
||||
metadata=None):
|
||||
return grpc.experimental.unary_unary(
|
||||
request,
|
||||
target,
|
||||
'/routerrpc.Router/QueryMissionControl',
|
||||
router__pb2.QueryMissionControlRequest.SerializeToString,
|
||||
router__pb2.QueryMissionControlResponse.FromString,
|
||||
options,
|
||||
channel_credentials,
|
||||
insecure,
|
||||
call_credentials,
|
||||
compression,
|
||||
wait_for_ready,
|
||||
timeout,
|
||||
metadata,
|
||||
_registered_method=True)
|
||||
|
||||
@staticmethod
|
||||
def XImportMissionControl(request,
|
||||
target,
|
||||
options=(),
|
||||
channel_credentials=None,
|
||||
call_credentials=None,
|
||||
insecure=False,
|
||||
compression=None,
|
||||
wait_for_ready=None,
|
||||
timeout=None,
|
||||
metadata=None):
|
||||
return grpc.experimental.unary_unary(
|
||||
request,
|
||||
target,
|
||||
'/routerrpc.Router/XImportMissionControl',
|
||||
router__pb2.XImportMissionControlRequest.SerializeToString,
|
||||
router__pb2.XImportMissionControlResponse.FromString,
|
||||
options,
|
||||
channel_credentials,
|
||||
insecure,
|
||||
call_credentials,
|
||||
compression,
|
||||
wait_for_ready,
|
||||
timeout,
|
||||
metadata,
|
||||
_registered_method=True)
|
||||
|
||||
@staticmethod
|
||||
def GetMissionControlConfig(request,
|
||||
target,
|
||||
options=(),
|
||||
channel_credentials=None,
|
||||
call_credentials=None,
|
||||
insecure=False,
|
||||
compression=None,
|
||||
wait_for_ready=None,
|
||||
timeout=None,
|
||||
metadata=None):
|
||||
return grpc.experimental.unary_unary(
|
||||
request,
|
||||
target,
|
||||
'/routerrpc.Router/GetMissionControlConfig',
|
||||
router__pb2.GetMissionControlConfigRequest.SerializeToString,
|
||||
router__pb2.GetMissionControlConfigResponse.FromString,
|
||||
options,
|
||||
channel_credentials,
|
||||
insecure,
|
||||
call_credentials,
|
||||
compression,
|
||||
wait_for_ready,
|
||||
timeout,
|
||||
metadata,
|
||||
_registered_method=True)
|
||||
|
||||
@staticmethod
|
||||
def SetMissionControlConfig(request,
|
||||
target,
|
||||
options=(),
|
||||
channel_credentials=None,
|
||||
call_credentials=None,
|
||||
insecure=False,
|
||||
compression=None,
|
||||
wait_for_ready=None,
|
||||
timeout=None,
|
||||
metadata=None):
|
||||
return grpc.experimental.unary_unary(
|
||||
request,
|
||||
target,
|
||||
'/routerrpc.Router/SetMissionControlConfig',
|
||||
router__pb2.SetMissionControlConfigRequest.SerializeToString,
|
||||
router__pb2.SetMissionControlConfigResponse.FromString,
|
||||
options,
|
||||
channel_credentials,
|
||||
insecure,
|
||||
call_credentials,
|
||||
compression,
|
||||
wait_for_ready,
|
||||
timeout,
|
||||
metadata,
|
||||
_registered_method=True)
|
||||
|
||||
@staticmethod
|
||||
def QueryProbability(request,
|
||||
target,
|
||||
options=(),
|
||||
channel_credentials=None,
|
||||
call_credentials=None,
|
||||
insecure=False,
|
||||
compression=None,
|
||||
wait_for_ready=None,
|
||||
timeout=None,
|
||||
metadata=None):
|
||||
return grpc.experimental.unary_unary(
|
||||
request,
|
||||
target,
|
||||
'/routerrpc.Router/QueryProbability',
|
||||
router__pb2.QueryProbabilityRequest.SerializeToString,
|
||||
router__pb2.QueryProbabilityResponse.FromString,
|
||||
options,
|
||||
channel_credentials,
|
||||
insecure,
|
||||
call_credentials,
|
||||
compression,
|
||||
wait_for_ready,
|
||||
timeout,
|
||||
metadata,
|
||||
_registered_method=True)
|
||||
|
||||
@staticmethod
|
||||
def BuildRoute(request,
|
||||
target,
|
||||
options=(),
|
||||
channel_credentials=None,
|
||||
call_credentials=None,
|
||||
insecure=False,
|
||||
compression=None,
|
||||
wait_for_ready=None,
|
||||
timeout=None,
|
||||
metadata=None):
|
||||
return grpc.experimental.unary_unary(
|
||||
request,
|
||||
target,
|
||||
'/routerrpc.Router/BuildRoute',
|
||||
router__pb2.BuildRouteRequest.SerializeToString,
|
||||
router__pb2.BuildRouteResponse.FromString,
|
||||
options,
|
||||
channel_credentials,
|
||||
insecure,
|
||||
call_credentials,
|
||||
compression,
|
||||
wait_for_ready,
|
||||
timeout,
|
||||
metadata,
|
||||
_registered_method=True)
|
||||
|
||||
@staticmethod
|
||||
def SubscribeHtlcEvents(request,
|
||||
target,
|
||||
options=(),
|
||||
channel_credentials=None,
|
||||
call_credentials=None,
|
||||
insecure=False,
|
||||
compression=None,
|
||||
wait_for_ready=None,
|
||||
timeout=None,
|
||||
metadata=None):
|
||||
return grpc.experimental.unary_stream(
|
||||
request,
|
||||
target,
|
||||
'/routerrpc.Router/SubscribeHtlcEvents',
|
||||
router__pb2.SubscribeHtlcEventsRequest.SerializeToString,
|
||||
router__pb2.HtlcEvent.FromString,
|
||||
options,
|
||||
channel_credentials,
|
||||
insecure,
|
||||
call_credentials,
|
||||
compression,
|
||||
wait_for_ready,
|
||||
timeout,
|
||||
metadata,
|
||||
_registered_method=True)
|
||||
|
||||
@staticmethod
|
||||
def SendPayment(request,
|
||||
target,
|
||||
options=(),
|
||||
channel_credentials=None,
|
||||
call_credentials=None,
|
||||
insecure=False,
|
||||
compression=None,
|
||||
wait_for_ready=None,
|
||||
timeout=None,
|
||||
metadata=None):
|
||||
return grpc.experimental.unary_stream(
|
||||
request,
|
||||
target,
|
||||
'/routerrpc.Router/SendPayment',
|
||||
router__pb2.SendPaymentRequest.SerializeToString,
|
||||
router__pb2.PaymentStatus.FromString,
|
||||
options,
|
||||
channel_credentials,
|
||||
insecure,
|
||||
call_credentials,
|
||||
compression,
|
||||
wait_for_ready,
|
||||
timeout,
|
||||
metadata,
|
||||
_registered_method=True)
|
||||
|
||||
@staticmethod
|
||||
def TrackPayment(request,
|
||||
target,
|
||||
options=(),
|
||||
channel_credentials=None,
|
||||
call_credentials=None,
|
||||
insecure=False,
|
||||
compression=None,
|
||||
wait_for_ready=None,
|
||||
timeout=None,
|
||||
metadata=None):
|
||||
return grpc.experimental.unary_stream(
|
||||
request,
|
||||
target,
|
||||
'/routerrpc.Router/TrackPayment',
|
||||
router__pb2.TrackPaymentRequest.SerializeToString,
|
||||
router__pb2.PaymentStatus.FromString,
|
||||
options,
|
||||
channel_credentials,
|
||||
insecure,
|
||||
call_credentials,
|
||||
compression,
|
||||
wait_for_ready,
|
||||
timeout,
|
||||
metadata,
|
||||
_registered_method=True)
|
||||
|
||||
@staticmethod
|
||||
def HtlcInterceptor(request_iterator,
|
||||
target,
|
||||
options=(),
|
||||
channel_credentials=None,
|
||||
call_credentials=None,
|
||||
insecure=False,
|
||||
compression=None,
|
||||
wait_for_ready=None,
|
||||
timeout=None,
|
||||
metadata=None):
|
||||
return grpc.experimental.stream_stream(
|
||||
request_iterator,
|
||||
target,
|
||||
'/routerrpc.Router/HtlcInterceptor',
|
||||
router__pb2.ForwardHtlcInterceptResponse.SerializeToString,
|
||||
router__pb2.ForwardHtlcInterceptRequest.FromString,
|
||||
options,
|
||||
channel_credentials,
|
||||
insecure,
|
||||
call_credentials,
|
||||
compression,
|
||||
wait_for_ready,
|
||||
timeout,
|
||||
metadata,
|
||||
_registered_method=True)
|
||||
|
||||
@staticmethod
|
||||
def UpdateChanStatus(request,
|
||||
target,
|
||||
options=(),
|
||||
channel_credentials=None,
|
||||
call_credentials=None,
|
||||
insecure=False,
|
||||
compression=None,
|
||||
wait_for_ready=None,
|
||||
timeout=None,
|
||||
metadata=None):
|
||||
return grpc.experimental.unary_unary(
|
||||
request,
|
||||
target,
|
||||
'/routerrpc.Router/UpdateChanStatus',
|
||||
router__pb2.UpdateChanStatusRequest.SerializeToString,
|
||||
router__pb2.UpdateChanStatusResponse.FromString,
|
||||
options,
|
||||
channel_credentials,
|
||||
insecure,
|
||||
call_credentials,
|
||||
compression,
|
||||
wait_for_ready,
|
||||
timeout,
|
||||
metadata,
|
||||
_registered_method=True)
|
||||
693
cashu/lightning/lnd_grpc/protos/router_pb2_grpc.pyi
Normal file
693
cashu/lightning/lnd_grpc/protos/router_pb2_grpc.pyi
Normal file
@@ -0,0 +1,693 @@
|
||||
"""
|
||||
@generated by mypy-protobuf. Do not edit manually!
|
||||
isort:skip_file
|
||||
"""
|
||||
|
||||
import abc
|
||||
import collections.abc
|
||||
import typing
|
||||
|
||||
import grpc
|
||||
import grpc.aio
|
||||
|
||||
import cashu.lightning.lnd_grpc.protos.lightning_pb2
|
||||
import cashu.lightning.lnd_grpc.protos.router_pb2
|
||||
|
||||
_T = typing.TypeVar("_T")
|
||||
|
||||
class _MaybeAsyncIterator(collections.abc.AsyncIterator[_T], collections.abc.Iterator[_T], metaclass=abc.ABCMeta): ...
|
||||
|
||||
class _ServicerContext(grpc.ServicerContext, grpc.aio.ServicerContext): # type: ignore[misc, type-arg]
|
||||
...
|
||||
|
||||
class RouterStub:
|
||||
"""
|
||||
Comments in this file will be directly parsed into the API
|
||||
Documentation as descriptions of the associated method, message, or field.
|
||||
These descriptions should go right above the definition of the object, and
|
||||
can be in either block or // comment format.
|
||||
|
||||
An RPC method can be matched to an lncli command by placing a line in the
|
||||
beginning of the description in exactly the following format:
|
||||
lncli: `methodname`
|
||||
|
||||
Failure to specify the exact name of the command will cause documentation
|
||||
generation to fail.
|
||||
|
||||
More information on how exactly the gRPC documentation is generated from
|
||||
this proto file can be found here:
|
||||
https://github.com/lightninglabs/lightning-api
|
||||
|
||||
Router is a service that offers advanced interaction with the router
|
||||
subsystem of the daemon.
|
||||
"""
|
||||
|
||||
def __init__(self, channel: typing.Union[grpc.Channel, grpc.aio.Channel]) -> None: ...
|
||||
SendPaymentV2: grpc.UnaryStreamMultiCallable[
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.SendPaymentRequest,
|
||||
cashu.lightning.lnd_grpc.protos.lightning_pb2.Payment,
|
||||
]
|
||||
"""
|
||||
SendPaymentV2 attempts to route a payment described by the passed
|
||||
PaymentRequest to the final destination. The call returns a stream of
|
||||
payment updates. When using this RPC, make sure to set a fee limit, as the
|
||||
default routing fee limit is 0 sats. Without a non-zero fee limit only
|
||||
routes without fees will be attempted which often fails with
|
||||
FAILURE_REASON_NO_ROUTE.
|
||||
"""
|
||||
|
||||
TrackPaymentV2: grpc.UnaryStreamMultiCallable[
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.TrackPaymentRequest,
|
||||
cashu.lightning.lnd_grpc.protos.lightning_pb2.Payment,
|
||||
]
|
||||
"""lncli: `trackpayment`
|
||||
TrackPaymentV2 returns an update stream for the payment identified by the
|
||||
payment hash.
|
||||
"""
|
||||
|
||||
TrackPayments: grpc.UnaryStreamMultiCallable[
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.TrackPaymentsRequest,
|
||||
cashu.lightning.lnd_grpc.protos.lightning_pb2.Payment,
|
||||
]
|
||||
"""
|
||||
TrackPayments returns an update stream for every payment that is not in a
|
||||
terminal state. Note that if payments are in-flight while starting a new
|
||||
subscription, the start of the payment stream could produce out-of-order
|
||||
and/or duplicate events. In order to get updates for every in-flight
|
||||
payment attempt make sure to subscribe to this method before initiating any
|
||||
payments.
|
||||
"""
|
||||
|
||||
EstimateRouteFee: grpc.UnaryUnaryMultiCallable[
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.RouteFeeRequest,
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.RouteFeeResponse,
|
||||
]
|
||||
"""
|
||||
EstimateRouteFee allows callers to obtain a lower bound w.r.t how much it
|
||||
may cost to send an HTLC to the target end destination.
|
||||
"""
|
||||
|
||||
SendToRoute: grpc.UnaryUnaryMultiCallable[
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.SendToRouteRequest,
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.SendToRouteResponse,
|
||||
]
|
||||
"""
|
||||
Deprecated, use SendToRouteV2. SendToRoute attempts to make a payment via
|
||||
the specified route. This method differs from SendPayment in that it
|
||||
allows users to specify a full route manually. This can be used for
|
||||
things like rebalancing, and atomic swaps. It differs from the newer
|
||||
SendToRouteV2 in that it doesn't return the full HTLC information.
|
||||
"""
|
||||
|
||||
SendToRouteV2: grpc.UnaryUnaryMultiCallable[
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.SendToRouteRequest,
|
||||
cashu.lightning.lnd_grpc.protos.lightning_pb2.HTLCAttempt,
|
||||
]
|
||||
"""
|
||||
SendToRouteV2 attempts to make a payment via the specified route. This
|
||||
method differs from SendPayment in that it allows users to specify a full
|
||||
route manually. This can be used for things like rebalancing, and atomic
|
||||
swaps.
|
||||
"""
|
||||
|
||||
ResetMissionControl: grpc.UnaryUnaryMultiCallable[
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.ResetMissionControlRequest,
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.ResetMissionControlResponse,
|
||||
]
|
||||
"""lncli: `resetmc`
|
||||
ResetMissionControl clears all mission control state and starts with a clean
|
||||
slate.
|
||||
"""
|
||||
|
||||
QueryMissionControl: grpc.UnaryUnaryMultiCallable[
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.QueryMissionControlRequest,
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.QueryMissionControlResponse,
|
||||
]
|
||||
"""lncli: `querymc`
|
||||
QueryMissionControl exposes the internal mission control state to callers.
|
||||
It is a development feature.
|
||||
"""
|
||||
|
||||
XImportMissionControl: grpc.UnaryUnaryMultiCallable[
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.XImportMissionControlRequest,
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.XImportMissionControlResponse,
|
||||
]
|
||||
"""lncli: `importmc`
|
||||
XImportMissionControl is an experimental API that imports the state provided
|
||||
to the internal mission control's state, using all results which are more
|
||||
recent than our existing values. These values will only be imported
|
||||
in-memory, and will not be persisted across restarts.
|
||||
"""
|
||||
|
||||
GetMissionControlConfig: grpc.UnaryUnaryMultiCallable[
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.GetMissionControlConfigRequest,
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.GetMissionControlConfigResponse,
|
||||
]
|
||||
"""lncli: `getmccfg`
|
||||
GetMissionControlConfig returns mission control's current config.
|
||||
"""
|
||||
|
||||
SetMissionControlConfig: grpc.UnaryUnaryMultiCallable[
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.SetMissionControlConfigRequest,
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.SetMissionControlConfigResponse,
|
||||
]
|
||||
"""lncli: `setmccfg`
|
||||
SetMissionControlConfig will set mission control's config, if the config
|
||||
provided is valid.
|
||||
"""
|
||||
|
||||
QueryProbability: grpc.UnaryUnaryMultiCallable[
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.QueryProbabilityRequest,
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.QueryProbabilityResponse,
|
||||
]
|
||||
"""lncli: `queryprob`
|
||||
Deprecated. QueryProbability returns the current success probability
|
||||
estimate for a given node pair and amount. The call returns a zero success
|
||||
probability if no channel is available or if the amount violates min/max
|
||||
HTLC constraints.
|
||||
"""
|
||||
|
||||
BuildRoute: grpc.UnaryUnaryMultiCallable[
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.BuildRouteRequest,
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.BuildRouteResponse,
|
||||
]
|
||||
"""lncli: `buildroute`
|
||||
BuildRoute builds a fully specified route based on a list of hop public
|
||||
keys. It retrieves the relevant channel policies from the graph in order to
|
||||
calculate the correct fees and time locks.
|
||||
Note that LND will use its default final_cltv_delta if no value is supplied.
|
||||
Make sure to add the correct final_cltv_delta depending on the invoice
|
||||
restriction. Moreover the caller has to make sure to provide the
|
||||
payment_addr if the route is paying an invoice which signaled it.
|
||||
"""
|
||||
|
||||
SubscribeHtlcEvents: grpc.UnaryStreamMultiCallable[
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.SubscribeHtlcEventsRequest,
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.HtlcEvent,
|
||||
]
|
||||
"""
|
||||
SubscribeHtlcEvents creates a uni-directional stream from the server to
|
||||
the client which delivers a stream of htlc events.
|
||||
"""
|
||||
|
||||
SendPayment: grpc.UnaryStreamMultiCallable[
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.SendPaymentRequest,
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.PaymentStatus,
|
||||
]
|
||||
"""
|
||||
Deprecated, use SendPaymentV2. SendPayment attempts to route a payment
|
||||
described by the passed PaymentRequest to the final destination. The call
|
||||
returns a stream of payment status updates.
|
||||
"""
|
||||
|
||||
TrackPayment: grpc.UnaryStreamMultiCallable[
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.TrackPaymentRequest,
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.PaymentStatus,
|
||||
]
|
||||
"""
|
||||
Deprecated, use TrackPaymentV2. TrackPayment returns an update stream for
|
||||
the payment identified by the payment hash.
|
||||
"""
|
||||
|
||||
HtlcInterceptor: grpc.StreamStreamMultiCallable[
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.ForwardHtlcInterceptResponse,
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.ForwardHtlcInterceptRequest,
|
||||
]
|
||||
"""*
|
||||
HtlcInterceptor dispatches a bi-directional streaming RPC in which
|
||||
Forwarded HTLC requests are sent to the client and the client responds with
|
||||
a boolean that tells LND if this htlc should be intercepted.
|
||||
In case of interception, the htlc can be either settled, cancelled or
|
||||
resumed later by using the ResolveHoldForward endpoint.
|
||||
"""
|
||||
|
||||
UpdateChanStatus: grpc.UnaryUnaryMultiCallable[
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.UpdateChanStatusRequest,
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.UpdateChanStatusResponse,
|
||||
]
|
||||
"""lncli: `updatechanstatus`
|
||||
UpdateChanStatus attempts to manually set the state of a channel
|
||||
(enabled, disabled, or auto). A manual "disable" request will cause the
|
||||
channel to stay disabled until a subsequent manual request of either
|
||||
"enable" or "auto".
|
||||
"""
|
||||
|
||||
class RouterAsyncStub:
|
||||
"""
|
||||
Comments in this file will be directly parsed into the API
|
||||
Documentation as descriptions of the associated method, message, or field.
|
||||
These descriptions should go right above the definition of the object, and
|
||||
can be in either block or // comment format.
|
||||
|
||||
An RPC method can be matched to an lncli command by placing a line in the
|
||||
beginning of the description in exactly the following format:
|
||||
lncli: `methodname`
|
||||
|
||||
Failure to specify the exact name of the command will cause documentation
|
||||
generation to fail.
|
||||
|
||||
More information on how exactly the gRPC documentation is generated from
|
||||
this proto file can be found here:
|
||||
https://github.com/lightninglabs/lightning-api
|
||||
|
||||
Router is a service that offers advanced interaction with the router
|
||||
subsystem of the daemon.
|
||||
"""
|
||||
|
||||
SendPaymentV2: grpc.aio.UnaryStreamMultiCallable[
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.SendPaymentRequest,
|
||||
cashu.lightning.lnd_grpc.protos.lightning_pb2.Payment,
|
||||
]
|
||||
"""
|
||||
SendPaymentV2 attempts to route a payment described by the passed
|
||||
PaymentRequest to the final destination. The call returns a stream of
|
||||
payment updates. When using this RPC, make sure to set a fee limit, as the
|
||||
default routing fee limit is 0 sats. Without a non-zero fee limit only
|
||||
routes without fees will be attempted which often fails with
|
||||
FAILURE_REASON_NO_ROUTE.
|
||||
"""
|
||||
|
||||
TrackPaymentV2: grpc.aio.UnaryStreamMultiCallable[
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.TrackPaymentRequest,
|
||||
cashu.lightning.lnd_grpc.protos.lightning_pb2.Payment,
|
||||
]
|
||||
"""lncli: `trackpayment`
|
||||
TrackPaymentV2 returns an update stream for the payment identified by the
|
||||
payment hash.
|
||||
"""
|
||||
|
||||
TrackPayments: grpc.aio.UnaryStreamMultiCallable[
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.TrackPaymentsRequest,
|
||||
cashu.lightning.lnd_grpc.protos.lightning_pb2.Payment,
|
||||
]
|
||||
"""
|
||||
TrackPayments returns an update stream for every payment that is not in a
|
||||
terminal state. Note that if payments are in-flight while starting a new
|
||||
subscription, the start of the payment stream could produce out-of-order
|
||||
and/or duplicate events. In order to get updates for every in-flight
|
||||
payment attempt make sure to subscribe to this method before initiating any
|
||||
payments.
|
||||
"""
|
||||
|
||||
EstimateRouteFee: grpc.aio.UnaryUnaryMultiCallable[
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.RouteFeeRequest,
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.RouteFeeResponse,
|
||||
]
|
||||
"""
|
||||
EstimateRouteFee allows callers to obtain a lower bound w.r.t how much it
|
||||
may cost to send an HTLC to the target end destination.
|
||||
"""
|
||||
|
||||
SendToRoute: grpc.aio.UnaryUnaryMultiCallable[
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.SendToRouteRequest,
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.SendToRouteResponse,
|
||||
]
|
||||
"""
|
||||
Deprecated, use SendToRouteV2. SendToRoute attempts to make a payment via
|
||||
the specified route. This method differs from SendPayment in that it
|
||||
allows users to specify a full route manually. This can be used for
|
||||
things like rebalancing, and atomic swaps. It differs from the newer
|
||||
SendToRouteV2 in that it doesn't return the full HTLC information.
|
||||
"""
|
||||
|
||||
SendToRouteV2: grpc.aio.UnaryUnaryMultiCallable[
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.SendToRouteRequest,
|
||||
cashu.lightning.lnd_grpc.protos.lightning_pb2.HTLCAttempt,
|
||||
]
|
||||
"""
|
||||
SendToRouteV2 attempts to make a payment via the specified route. This
|
||||
method differs from SendPayment in that it allows users to specify a full
|
||||
route manually. This can be used for things like rebalancing, and atomic
|
||||
swaps.
|
||||
"""
|
||||
|
||||
ResetMissionControl: grpc.aio.UnaryUnaryMultiCallable[
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.ResetMissionControlRequest,
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.ResetMissionControlResponse,
|
||||
]
|
||||
"""lncli: `resetmc`
|
||||
ResetMissionControl clears all mission control state and starts with a clean
|
||||
slate.
|
||||
"""
|
||||
|
||||
QueryMissionControl: grpc.aio.UnaryUnaryMultiCallable[
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.QueryMissionControlRequest,
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.QueryMissionControlResponse,
|
||||
]
|
||||
"""lncli: `querymc`
|
||||
QueryMissionControl exposes the internal mission control state to callers.
|
||||
It is a development feature.
|
||||
"""
|
||||
|
||||
XImportMissionControl: grpc.aio.UnaryUnaryMultiCallable[
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.XImportMissionControlRequest,
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.XImportMissionControlResponse,
|
||||
]
|
||||
"""lncli: `importmc`
|
||||
XImportMissionControl is an experimental API that imports the state provided
|
||||
to the internal mission control's state, using all results which are more
|
||||
recent than our existing values. These values will only be imported
|
||||
in-memory, and will not be persisted across restarts.
|
||||
"""
|
||||
|
||||
GetMissionControlConfig: grpc.aio.UnaryUnaryMultiCallable[
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.GetMissionControlConfigRequest,
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.GetMissionControlConfigResponse,
|
||||
]
|
||||
"""lncli: `getmccfg`
|
||||
GetMissionControlConfig returns mission control's current config.
|
||||
"""
|
||||
|
||||
SetMissionControlConfig: grpc.aio.UnaryUnaryMultiCallable[
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.SetMissionControlConfigRequest,
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.SetMissionControlConfigResponse,
|
||||
]
|
||||
"""lncli: `setmccfg`
|
||||
SetMissionControlConfig will set mission control's config, if the config
|
||||
provided is valid.
|
||||
"""
|
||||
|
||||
QueryProbability: grpc.aio.UnaryUnaryMultiCallable[
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.QueryProbabilityRequest,
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.QueryProbabilityResponse,
|
||||
]
|
||||
"""lncli: `queryprob`
|
||||
Deprecated. QueryProbability returns the current success probability
|
||||
estimate for a given node pair and amount. The call returns a zero success
|
||||
probability if no channel is available or if the amount violates min/max
|
||||
HTLC constraints.
|
||||
"""
|
||||
|
||||
BuildRoute: grpc.aio.UnaryUnaryMultiCallable[
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.BuildRouteRequest,
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.BuildRouteResponse,
|
||||
]
|
||||
"""lncli: `buildroute`
|
||||
BuildRoute builds a fully specified route based on a list of hop public
|
||||
keys. It retrieves the relevant channel policies from the graph in order to
|
||||
calculate the correct fees and time locks.
|
||||
Note that LND will use its default final_cltv_delta if no value is supplied.
|
||||
Make sure to add the correct final_cltv_delta depending on the invoice
|
||||
restriction. Moreover the caller has to make sure to provide the
|
||||
payment_addr if the route is paying an invoice which signaled it.
|
||||
"""
|
||||
|
||||
SubscribeHtlcEvents: grpc.aio.UnaryStreamMultiCallable[
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.SubscribeHtlcEventsRequest,
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.HtlcEvent,
|
||||
]
|
||||
"""
|
||||
SubscribeHtlcEvents creates a uni-directional stream from the server to
|
||||
the client which delivers a stream of htlc events.
|
||||
"""
|
||||
|
||||
SendPayment: grpc.aio.UnaryStreamMultiCallable[
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.SendPaymentRequest,
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.PaymentStatus,
|
||||
]
|
||||
"""
|
||||
Deprecated, use SendPaymentV2. SendPayment attempts to route a payment
|
||||
described by the passed PaymentRequest to the final destination. The call
|
||||
returns a stream of payment status updates.
|
||||
"""
|
||||
|
||||
TrackPayment: grpc.aio.UnaryStreamMultiCallable[
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.TrackPaymentRequest,
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.PaymentStatus,
|
||||
]
|
||||
"""
|
||||
Deprecated, use TrackPaymentV2. TrackPayment returns an update stream for
|
||||
the payment identified by the payment hash.
|
||||
"""
|
||||
|
||||
HtlcInterceptor: grpc.aio.StreamStreamMultiCallable[
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.ForwardHtlcInterceptResponse,
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.ForwardHtlcInterceptRequest,
|
||||
]
|
||||
"""*
|
||||
HtlcInterceptor dispatches a bi-directional streaming RPC in which
|
||||
Forwarded HTLC requests are sent to the client and the client responds with
|
||||
a boolean that tells LND if this htlc should be intercepted.
|
||||
In case of interception, the htlc can be either settled, cancelled or
|
||||
resumed later by using the ResolveHoldForward endpoint.
|
||||
"""
|
||||
|
||||
UpdateChanStatus: grpc.aio.UnaryUnaryMultiCallable[
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.UpdateChanStatusRequest,
|
||||
cashu.lightning.lnd_grpc.protos.router_pb2.UpdateChanStatusResponse,
|
||||
]
|
||||
"""lncli: `updatechanstatus`
|
||||
UpdateChanStatus attempts to manually set the state of a channel
|
||||
(enabled, disabled, or auto). A manual "disable" request will cause the
|
||||
channel to stay disabled until a subsequent manual request of either
|
||||
"enable" or "auto".
|
||||
"""
|
||||
|
||||
class RouterServicer(metaclass=abc.ABCMeta):
|
||||
"""
|
||||
Comments in this file will be directly parsed into the API
|
||||
Documentation as descriptions of the associated method, message, or field.
|
||||
These descriptions should go right above the definition of the object, and
|
||||
can be in either block or // comment format.
|
||||
|
||||
An RPC method can be matched to an lncli command by placing a line in the
|
||||
beginning of the description in exactly the following format:
|
||||
lncli: `methodname`
|
||||
|
||||
Failure to specify the exact name of the command will cause documentation
|
||||
generation to fail.
|
||||
|
||||
More information on how exactly the gRPC documentation is generated from
|
||||
this proto file can be found here:
|
||||
https://github.com/lightninglabs/lightning-api
|
||||
|
||||
Router is a service that offers advanced interaction with the router
|
||||
subsystem of the daemon.
|
||||
"""
|
||||
|
||||
@abc.abstractmethod
|
||||
def SendPaymentV2(
|
||||
self,
|
||||
request: cashu.lightning.lnd_grpc.protos.router_pb2.SendPaymentRequest,
|
||||
context: _ServicerContext,
|
||||
) -> typing.Union[collections.abc.Iterator[cashu.lightning.lnd_grpc.protos.lightning_pb2.Payment], collections.abc.AsyncIterator[cashu.lightning.lnd_grpc.protos.lightning_pb2.Payment]]:
|
||||
"""
|
||||
SendPaymentV2 attempts to route a payment described by the passed
|
||||
PaymentRequest to the final destination. The call returns a stream of
|
||||
payment updates. When using this RPC, make sure to set a fee limit, as the
|
||||
default routing fee limit is 0 sats. Without a non-zero fee limit only
|
||||
routes without fees will be attempted which often fails with
|
||||
FAILURE_REASON_NO_ROUTE.
|
||||
"""
|
||||
|
||||
@abc.abstractmethod
|
||||
def TrackPaymentV2(
|
||||
self,
|
||||
request: cashu.lightning.lnd_grpc.protos.router_pb2.TrackPaymentRequest,
|
||||
context: _ServicerContext,
|
||||
) -> typing.Union[collections.abc.Iterator[cashu.lightning.lnd_grpc.protos.lightning_pb2.Payment], collections.abc.AsyncIterator[cashu.lightning.lnd_grpc.protos.lightning_pb2.Payment]]:
|
||||
"""lncli: `trackpayment`
|
||||
TrackPaymentV2 returns an update stream for the payment identified by the
|
||||
payment hash.
|
||||
"""
|
||||
|
||||
@abc.abstractmethod
|
||||
def TrackPayments(
|
||||
self,
|
||||
request: cashu.lightning.lnd_grpc.protos.router_pb2.TrackPaymentsRequest,
|
||||
context: _ServicerContext,
|
||||
) -> typing.Union[collections.abc.Iterator[cashu.lightning.lnd_grpc.protos.lightning_pb2.Payment], collections.abc.AsyncIterator[cashu.lightning.lnd_grpc.protos.lightning_pb2.Payment]]:
|
||||
"""
|
||||
TrackPayments returns an update stream for every payment that is not in a
|
||||
terminal state. Note that if payments are in-flight while starting a new
|
||||
subscription, the start of the payment stream could produce out-of-order
|
||||
and/or duplicate events. In order to get updates for every in-flight
|
||||
payment attempt make sure to subscribe to this method before initiating any
|
||||
payments.
|
||||
"""
|
||||
|
||||
@abc.abstractmethod
|
||||
def EstimateRouteFee(
|
||||
self,
|
||||
request: cashu.lightning.lnd_grpc.protos.router_pb2.RouteFeeRequest,
|
||||
context: _ServicerContext,
|
||||
) -> typing.Union[cashu.lightning.lnd_grpc.protos.router_pb2.RouteFeeResponse, collections.abc.Awaitable[cashu.lightning.lnd_grpc.protos.router_pb2.RouteFeeResponse]]:
|
||||
"""
|
||||
EstimateRouteFee allows callers to obtain a lower bound w.r.t how much it
|
||||
may cost to send an HTLC to the target end destination.
|
||||
"""
|
||||
|
||||
@abc.abstractmethod
|
||||
def SendToRoute(
|
||||
self,
|
||||
request: cashu.lightning.lnd_grpc.protos.router_pb2.SendToRouteRequest,
|
||||
context: _ServicerContext,
|
||||
) -> typing.Union[cashu.lightning.lnd_grpc.protos.router_pb2.SendToRouteResponse, collections.abc.Awaitable[cashu.lightning.lnd_grpc.protos.router_pb2.SendToRouteResponse]]:
|
||||
"""
|
||||
Deprecated, use SendToRouteV2. SendToRoute attempts to make a payment via
|
||||
the specified route. This method differs from SendPayment in that it
|
||||
allows users to specify a full route manually. This can be used for
|
||||
things like rebalancing, and atomic swaps. It differs from the newer
|
||||
SendToRouteV2 in that it doesn't return the full HTLC information.
|
||||
"""
|
||||
|
||||
@abc.abstractmethod
|
||||
def SendToRouteV2(
|
||||
self,
|
||||
request: cashu.lightning.lnd_grpc.protos.router_pb2.SendToRouteRequest,
|
||||
context: _ServicerContext,
|
||||
) -> typing.Union[cashu.lightning.lnd_grpc.protos.lightning_pb2.HTLCAttempt, collections.abc.Awaitable[cashu.lightning.lnd_grpc.protos.lightning_pb2.HTLCAttempt]]:
|
||||
"""
|
||||
SendToRouteV2 attempts to make a payment via the specified route. This
|
||||
method differs from SendPayment in that it allows users to specify a full
|
||||
route manually. This can be used for things like rebalancing, and atomic
|
||||
swaps.
|
||||
"""
|
||||
|
||||
@abc.abstractmethod
|
||||
def ResetMissionControl(
|
||||
self,
|
||||
request: cashu.lightning.lnd_grpc.protos.router_pb2.ResetMissionControlRequest,
|
||||
context: _ServicerContext,
|
||||
) -> typing.Union[cashu.lightning.lnd_grpc.protos.router_pb2.ResetMissionControlResponse, collections.abc.Awaitable[cashu.lightning.lnd_grpc.protos.router_pb2.ResetMissionControlResponse]]:
|
||||
"""lncli: `resetmc`
|
||||
ResetMissionControl clears all mission control state and starts with a clean
|
||||
slate.
|
||||
"""
|
||||
|
||||
@abc.abstractmethod
|
||||
def QueryMissionControl(
|
||||
self,
|
||||
request: cashu.lightning.lnd_grpc.protos.router_pb2.QueryMissionControlRequest,
|
||||
context: _ServicerContext,
|
||||
) -> typing.Union[cashu.lightning.lnd_grpc.protos.router_pb2.QueryMissionControlResponse, collections.abc.Awaitable[cashu.lightning.lnd_grpc.protos.router_pb2.QueryMissionControlResponse]]:
|
||||
"""lncli: `querymc`
|
||||
QueryMissionControl exposes the internal mission control state to callers.
|
||||
It is a development feature.
|
||||
"""
|
||||
|
||||
@abc.abstractmethod
|
||||
def XImportMissionControl(
|
||||
self,
|
||||
request: cashu.lightning.lnd_grpc.protos.router_pb2.XImportMissionControlRequest,
|
||||
context: _ServicerContext,
|
||||
) -> typing.Union[cashu.lightning.lnd_grpc.protos.router_pb2.XImportMissionControlResponse, collections.abc.Awaitable[cashu.lightning.lnd_grpc.protos.router_pb2.XImportMissionControlResponse]]:
|
||||
"""lncli: `importmc`
|
||||
XImportMissionControl is an experimental API that imports the state provided
|
||||
to the internal mission control's state, using all results which are more
|
||||
recent than our existing values. These values will only be imported
|
||||
in-memory, and will not be persisted across restarts.
|
||||
"""
|
||||
|
||||
@abc.abstractmethod
|
||||
def GetMissionControlConfig(
|
||||
self,
|
||||
request: cashu.lightning.lnd_grpc.protos.router_pb2.GetMissionControlConfigRequest,
|
||||
context: _ServicerContext,
|
||||
) -> typing.Union[cashu.lightning.lnd_grpc.protos.router_pb2.GetMissionControlConfigResponse, collections.abc.Awaitable[cashu.lightning.lnd_grpc.protos.router_pb2.GetMissionControlConfigResponse]]:
|
||||
"""lncli: `getmccfg`
|
||||
GetMissionControlConfig returns mission control's current config.
|
||||
"""
|
||||
|
||||
@abc.abstractmethod
|
||||
def SetMissionControlConfig(
|
||||
self,
|
||||
request: cashu.lightning.lnd_grpc.protos.router_pb2.SetMissionControlConfigRequest,
|
||||
context: _ServicerContext,
|
||||
) -> typing.Union[cashu.lightning.lnd_grpc.protos.router_pb2.SetMissionControlConfigResponse, collections.abc.Awaitable[cashu.lightning.lnd_grpc.protos.router_pb2.SetMissionControlConfigResponse]]:
|
||||
"""lncli: `setmccfg`
|
||||
SetMissionControlConfig will set mission control's config, if the config
|
||||
provided is valid.
|
||||
"""
|
||||
|
||||
@abc.abstractmethod
|
||||
def QueryProbability(
|
||||
self,
|
||||
request: cashu.lightning.lnd_grpc.protos.router_pb2.QueryProbabilityRequest,
|
||||
context: _ServicerContext,
|
||||
) -> typing.Union[cashu.lightning.lnd_grpc.protos.router_pb2.QueryProbabilityResponse, collections.abc.Awaitable[cashu.lightning.lnd_grpc.protos.router_pb2.QueryProbabilityResponse]]:
|
||||
"""lncli: `queryprob`
|
||||
Deprecated. QueryProbability returns the current success probability
|
||||
estimate for a given node pair and amount. The call returns a zero success
|
||||
probability if no channel is available or if the amount violates min/max
|
||||
HTLC constraints.
|
||||
"""
|
||||
|
||||
@abc.abstractmethod
|
||||
def BuildRoute(
|
||||
self,
|
||||
request: cashu.lightning.lnd_grpc.protos.router_pb2.BuildRouteRequest,
|
||||
context: _ServicerContext,
|
||||
) -> typing.Union[cashu.lightning.lnd_grpc.protos.router_pb2.BuildRouteResponse, collections.abc.Awaitable[cashu.lightning.lnd_grpc.protos.router_pb2.BuildRouteResponse]]:
|
||||
"""lncli: `buildroute`
|
||||
BuildRoute builds a fully specified route based on a list of hop public
|
||||
keys. It retrieves the relevant channel policies from the graph in order to
|
||||
calculate the correct fees and time locks.
|
||||
Note that LND will use its default final_cltv_delta if no value is supplied.
|
||||
Make sure to add the correct final_cltv_delta depending on the invoice
|
||||
restriction. Moreover the caller has to make sure to provide the
|
||||
payment_addr if the route is paying an invoice which signaled it.
|
||||
"""
|
||||
|
||||
@abc.abstractmethod
|
||||
def SubscribeHtlcEvents(
|
||||
self,
|
||||
request: cashu.lightning.lnd_grpc.protos.router_pb2.SubscribeHtlcEventsRequest,
|
||||
context: _ServicerContext,
|
||||
) -> typing.Union[collections.abc.Iterator[cashu.lightning.lnd_grpc.protos.router_pb2.HtlcEvent], collections.abc.AsyncIterator[cashu.lightning.lnd_grpc.protos.router_pb2.HtlcEvent]]:
|
||||
"""
|
||||
SubscribeHtlcEvents creates a uni-directional stream from the server to
|
||||
the client which delivers a stream of htlc events.
|
||||
"""
|
||||
|
||||
@abc.abstractmethod
|
||||
def SendPayment(
|
||||
self,
|
||||
request: cashu.lightning.lnd_grpc.protos.router_pb2.SendPaymentRequest,
|
||||
context: _ServicerContext,
|
||||
) -> typing.Union[collections.abc.Iterator[cashu.lightning.lnd_grpc.protos.router_pb2.PaymentStatus], collections.abc.AsyncIterator[cashu.lightning.lnd_grpc.protos.router_pb2.PaymentStatus]]:
|
||||
"""
|
||||
Deprecated, use SendPaymentV2. SendPayment attempts to route a payment
|
||||
described by the passed PaymentRequest to the final destination. The call
|
||||
returns a stream of payment status updates.
|
||||
"""
|
||||
|
||||
@abc.abstractmethod
|
||||
def TrackPayment(
|
||||
self,
|
||||
request: cashu.lightning.lnd_grpc.protos.router_pb2.TrackPaymentRequest,
|
||||
context: _ServicerContext,
|
||||
) -> typing.Union[collections.abc.Iterator[cashu.lightning.lnd_grpc.protos.router_pb2.PaymentStatus], collections.abc.AsyncIterator[cashu.lightning.lnd_grpc.protos.router_pb2.PaymentStatus]]:
|
||||
"""
|
||||
Deprecated, use TrackPaymentV2. TrackPayment returns an update stream for
|
||||
the payment identified by the payment hash.
|
||||
"""
|
||||
|
||||
@abc.abstractmethod
|
||||
def HtlcInterceptor(
|
||||
self,
|
||||
request_iterator: _MaybeAsyncIterator[cashu.lightning.lnd_grpc.protos.router_pb2.ForwardHtlcInterceptResponse],
|
||||
context: _ServicerContext,
|
||||
) -> typing.Union[collections.abc.Iterator[cashu.lightning.lnd_grpc.protos.router_pb2.ForwardHtlcInterceptRequest], collections.abc.AsyncIterator[cashu.lightning.lnd_grpc.protos.router_pb2.ForwardHtlcInterceptRequest]]:
|
||||
"""*
|
||||
HtlcInterceptor dispatches a bi-directional streaming RPC in which
|
||||
Forwarded HTLC requests are sent to the client and the client responds with
|
||||
a boolean that tells LND if this htlc should be intercepted.
|
||||
In case of interception, the htlc can be either settled, cancelled or
|
||||
resumed later by using the ResolveHoldForward endpoint.
|
||||
"""
|
||||
|
||||
@abc.abstractmethod
|
||||
def UpdateChanStatus(
|
||||
self,
|
||||
request: cashu.lightning.lnd_grpc.protos.router_pb2.UpdateChanStatusRequest,
|
||||
context: _ServicerContext,
|
||||
) -> typing.Union[cashu.lightning.lnd_grpc.protos.router_pb2.UpdateChanStatusResponse, collections.abc.Awaitable[cashu.lightning.lnd_grpc.protos.router_pb2.UpdateChanStatusResponse]]:
|
||||
"""lncli: `updatechanstatus`
|
||||
UpdateChanStatus attempts to manually set the state of a channel
|
||||
(enabled, disabled, or auto). A manual "disable" request will cause the
|
||||
channel to stay disabled until a subsequent manual request of either
|
||||
"enable" or "auto".
|
||||
"""
|
||||
|
||||
def add_RouterServicer_to_server(servicer: RouterServicer, server: typing.Union[grpc.Server, grpc.aio.Server]) -> None: ...
|
||||
375
poetry.lock
generated
375
poetry.lock
generated
@@ -1,4 +1,4 @@
|
||||
# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand.
|
||||
# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand.
|
||||
|
||||
[[package]]
|
||||
name = "aiosqlite"
|
||||
@@ -172,13 +172,13 @@ files = [
|
||||
|
||||
[[package]]
|
||||
name = "bolt11"
|
||||
version = "2.0.6"
|
||||
version = "2.1.0"
|
||||
description = "A library for encoding and decoding BOLT11 payment requests."
|
||||
optional = false
|
||||
python-versions = ">=3.8.1"
|
||||
files = [
|
||||
{file = "bolt11-2.0.6-py3-none-any.whl", hash = "sha256:5a1b4d33e028ce110bd3e5a2b8a95d8a2c5221f2e0dd64cbccb8c70153e7d643"},
|
||||
{file = "bolt11-2.0.6.tar.gz", hash = "sha256:02d7e6273a8869911504dbcb732894d58e1d8c96b53ed0e968a9c5f90ab5c5a7"},
|
||||
{file = "bolt11-2.1.0-py3-none-any.whl", hash = "sha256:1535e441233414a9d8031a99fd3be07de4674bffda948033579404d44a42f614"},
|
||||
{file = "bolt11-2.1.0.tar.gz", hash = "sha256:177c63cd88d1eaba669eddb5937364676226253f2e9e5b77e8fe317ef32e62dd"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
@@ -186,8 +186,7 @@ base58 = "*"
|
||||
bech32 = "*"
|
||||
bitstring = "*"
|
||||
click = "*"
|
||||
ecdsa = "*"
|
||||
secp256k1 = "*"
|
||||
coincurve = "*"
|
||||
|
||||
[[package]]
|
||||
name = "cbor2"
|
||||
@@ -408,63 +407,63 @@ files = [
|
||||
|
||||
[[package]]
|
||||
name = "coverage"
|
||||
version = "7.5.4"
|
||||
version = "7.6.0"
|
||||
description = "Code coverage measurement for Python"
|
||||
optional = false
|
||||
python-versions = ">=3.8"
|
||||
files = [
|
||||
{file = "coverage-7.5.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6cfb5a4f556bb51aba274588200a46e4dd6b505fb1a5f8c5ae408222eb416f99"},
|
||||
{file = "coverage-7.5.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2174e7c23e0a454ffe12267a10732c273243b4f2d50d07544a91198f05c48f47"},
|
||||
{file = "coverage-7.5.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2214ee920787d85db1b6a0bd9da5f8503ccc8fcd5814d90796c2f2493a2f4d2e"},
|
||||
{file = "coverage-7.5.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1137f46adb28e3813dec8c01fefadcb8c614f33576f672962e323b5128d9a68d"},
|
||||
{file = "coverage-7.5.4-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b385d49609f8e9efc885790a5a0e89f2e3ae042cdf12958b6034cc442de428d3"},
|
||||
{file = "coverage-7.5.4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b4a474f799456e0eb46d78ab07303286a84a3140e9700b9e154cfebc8f527016"},
|
||||
{file = "coverage-7.5.4-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:5cd64adedf3be66f8ccee418473c2916492d53cbafbfcff851cbec5a8454b136"},
|
||||
{file = "coverage-7.5.4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:e564c2cf45d2f44a9da56f4e3a26b2236504a496eb4cb0ca7221cd4cc7a9aca9"},
|
||||
{file = "coverage-7.5.4-cp310-cp310-win32.whl", hash = "sha256:7076b4b3a5f6d2b5d7f1185fde25b1e54eb66e647a1dfef0e2c2bfaf9b4c88c8"},
|
||||
{file = "coverage-7.5.4-cp310-cp310-win_amd64.whl", hash = "sha256:018a12985185038a5b2bcafab04ab833a9a0f2c59995b3cec07e10074c78635f"},
|
||||
{file = "coverage-7.5.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:db14f552ac38f10758ad14dd7b983dbab424e731588d300c7db25b6f89e335b5"},
|
||||
{file = "coverage-7.5.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3257fdd8e574805f27bb5342b77bc65578e98cbc004a92232106344053f319ba"},
|
||||
{file = "coverage-7.5.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3a6612c99081d8d6134005b1354191e103ec9705d7ba2754e848211ac8cacc6b"},
|
||||
{file = "coverage-7.5.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d45d3cbd94159c468b9b8c5a556e3f6b81a8d1af2a92b77320e887c3e7a5d080"},
|
||||
{file = "coverage-7.5.4-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed550e7442f278af76d9d65af48069f1fb84c9f745ae249c1a183c1e9d1b025c"},
|
||||
{file = "coverage-7.5.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7a892be37ca35eb5019ec85402c3371b0f7cda5ab5056023a7f13da0961e60da"},
|
||||
{file = "coverage-7.5.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:8192794d120167e2a64721d88dbd688584675e86e15d0569599257566dec9bf0"},
|
||||
{file = "coverage-7.5.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:820bc841faa502e727a48311948e0461132a9c8baa42f6b2b84a29ced24cc078"},
|
||||
{file = "coverage-7.5.4-cp311-cp311-win32.whl", hash = "sha256:6aae5cce399a0f065da65c7bb1e8abd5c7a3043da9dceb429ebe1b289bc07806"},
|
||||
{file = "coverage-7.5.4-cp311-cp311-win_amd64.whl", hash = "sha256:d2e344d6adc8ef81c5a233d3a57b3c7d5181f40e79e05e1c143da143ccb6377d"},
|
||||
{file = "coverage-7.5.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:54317c2b806354cbb2dc7ac27e2b93f97096912cc16b18289c5d4e44fc663233"},
|
||||
{file = "coverage-7.5.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:042183de01f8b6d531e10c197f7f0315a61e8d805ab29c5f7b51a01d62782747"},
|
||||
{file = "coverage-7.5.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a6bb74ed465d5fb204b2ec41d79bcd28afccf817de721e8a807d5141c3426638"},
|
||||
{file = "coverage-7.5.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b3d45ff86efb129c599a3b287ae2e44c1e281ae0f9a9bad0edc202179bcc3a2e"},
|
||||
{file = "coverage-7.5.4-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5013ed890dc917cef2c9f765c4c6a8ae9df983cd60dbb635df8ed9f4ebc9f555"},
|
||||
{file = "coverage-7.5.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1014fbf665fef86cdfd6cb5b7371496ce35e4d2a00cda501cf9f5b9e6fced69f"},
|
||||
{file = "coverage-7.5.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:3684bc2ff328f935981847082ba4fdc950d58906a40eafa93510d1b54c08a66c"},
|
||||
{file = "coverage-7.5.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:581ea96f92bf71a5ec0974001f900db495488434a6928a2ca7f01eee20c23805"},
|
||||
{file = "coverage-7.5.4-cp312-cp312-win32.whl", hash = "sha256:73ca8fbc5bc622e54627314c1a6f1dfdd8db69788f3443e752c215f29fa87a0b"},
|
||||
{file = "coverage-7.5.4-cp312-cp312-win_amd64.whl", hash = "sha256:cef4649ec906ea7ea5e9e796e68b987f83fa9a718514fe147f538cfeda76d7a7"},
|
||||
{file = "coverage-7.5.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cdd31315fc20868c194130de9ee6bfd99755cc9565edff98ecc12585b90be882"},
|
||||
{file = "coverage-7.5.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:02ff6e898197cc1e9fa375581382b72498eb2e6d5fc0b53f03e496cfee3fac6d"},
|
||||
{file = "coverage-7.5.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d05c16cf4b4c2fc880cb12ba4c9b526e9e5d5bb1d81313d4d732a5b9fe2b9d53"},
|
||||
{file = "coverage-7.5.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c5986ee7ea0795a4095ac4d113cbb3448601efca7f158ec7f7087a6c705304e4"},
|
||||
{file = "coverage-7.5.4-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5df54843b88901fdc2f598ac06737f03d71168fd1175728054c8f5a2739ac3e4"},
|
||||
{file = "coverage-7.5.4-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:ab73b35e8d109bffbda9a3e91c64e29fe26e03e49addf5b43d85fc426dde11f9"},
|
||||
{file = "coverage-7.5.4-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:aea072a941b033813f5e4814541fc265a5c12ed9720daef11ca516aeacd3bd7f"},
|
||||
{file = "coverage-7.5.4-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:16852febd96acd953b0d55fc842ce2dac1710f26729b31c80b940b9afcd9896f"},
|
||||
{file = "coverage-7.5.4-cp38-cp38-win32.whl", hash = "sha256:8f894208794b164e6bd4bba61fc98bf6b06be4d390cf2daacfa6eca0a6d2bb4f"},
|
||||
{file = "coverage-7.5.4-cp38-cp38-win_amd64.whl", hash = "sha256:e2afe743289273209c992075a5a4913e8d007d569a406ffed0bd080ea02b0633"},
|
||||
{file = "coverage-7.5.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b95c3a8cb0463ba9f77383d0fa8c9194cf91f64445a63fc26fb2327e1e1eb088"},
|
||||
{file = "coverage-7.5.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3d7564cc09dd91b5a6001754a5b3c6ecc4aba6323baf33a12bd751036c998be4"},
|
||||
{file = "coverage-7.5.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:44da56a2589b684813f86d07597fdf8a9c6ce77f58976727329272f5a01f99f7"},
|
||||
{file = "coverage-7.5.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e16f3d6b491c48c5ae726308e6ab1e18ee830b4cdd6913f2d7f77354b33f91c8"},
|
||||
{file = "coverage-7.5.4-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dbc5958cb471e5a5af41b0ddaea96a37e74ed289535e8deca404811f6cb0bc3d"},
|
||||
{file = "coverage-7.5.4-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:a04e990a2a41740b02d6182b498ee9796cf60eefe40cf859b016650147908029"},
|
||||
{file = "coverage-7.5.4-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:ddbd2f9713a79e8e7242d7c51f1929611e991d855f414ca9996c20e44a895f7c"},
|
||||
{file = "coverage-7.5.4-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:b1ccf5e728ccf83acd313c89f07c22d70d6c375a9c6f339233dcf792094bcbf7"},
|
||||
{file = "coverage-7.5.4-cp39-cp39-win32.whl", hash = "sha256:56b4eafa21c6c175b3ede004ca12c653a88b6f922494b023aeb1e836df953ace"},
|
||||
{file = "coverage-7.5.4-cp39-cp39-win_amd64.whl", hash = "sha256:65e528e2e921ba8fd67d9055e6b9f9e34b21ebd6768ae1c1723f4ea6ace1234d"},
|
||||
{file = "coverage-7.5.4-pp38.pp39.pp310-none-any.whl", hash = "sha256:79b356f3dd5b26f3ad23b35c75dbdaf1f9e2450b6bcefc6d0825ea0aa3f86ca5"},
|
||||
{file = "coverage-7.5.4.tar.gz", hash = "sha256:a44963520b069e12789d0faea4e9fdb1e410cdc4aab89d94f7f55cbb7fef0353"},
|
||||
{file = "coverage-7.6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:dff044f661f59dace805eedb4a7404c573b6ff0cdba4a524141bc63d7be5c7fd"},
|
||||
{file = "coverage-7.6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a8659fd33ee9e6ca03950cfdcdf271d645cf681609153f218826dd9805ab585c"},
|
||||
{file = "coverage-7.6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7792f0ab20df8071d669d929c75c97fecfa6bcab82c10ee4adb91c7a54055463"},
|
||||
{file = "coverage-7.6.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d4b3cd1ca7cd73d229487fa5caca9e4bc1f0bca96526b922d61053ea751fe791"},
|
||||
{file = "coverage-7.6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e7e128f85c0b419907d1f38e616c4f1e9f1d1b37a7949f44df9a73d5da5cd53c"},
|
||||
{file = "coverage-7.6.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a94925102c89247530ae1dab7dc02c690942566f22e189cbd53579b0693c0783"},
|
||||
{file = "coverage-7.6.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:dcd070b5b585b50e6617e8972f3fbbee786afca71b1936ac06257f7e178f00f6"},
|
||||
{file = "coverage-7.6.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:d50a252b23b9b4dfeefc1f663c568a221092cbaded20a05a11665d0dbec9b8fb"},
|
||||
{file = "coverage-7.6.0-cp310-cp310-win32.whl", hash = "sha256:0e7b27d04131c46e6894f23a4ae186a6a2207209a05df5b6ad4caee6d54a222c"},
|
||||
{file = "coverage-7.6.0-cp310-cp310-win_amd64.whl", hash = "sha256:54dece71673b3187c86226c3ca793c5f891f9fc3d8aa183f2e3653da18566169"},
|
||||
{file = "coverage-7.6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c7b525ab52ce18c57ae232ba6f7010297a87ced82a2383b1afd238849c1ff933"},
|
||||
{file = "coverage-7.6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4bea27c4269234e06f621f3fac3925f56ff34bc14521484b8f66a580aacc2e7d"},
|
||||
{file = "coverage-7.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ed8d1d1821ba5fc88d4a4f45387b65de52382fa3ef1f0115a4f7a20cdfab0e94"},
|
||||
{file = "coverage-7.6.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:01c322ef2bbe15057bc4bf132b525b7e3f7206f071799eb8aa6ad1940bcf5fb1"},
|
||||
{file = "coverage-7.6.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03cafe82c1b32b770a29fd6de923625ccac3185a54a5e66606da26d105f37dac"},
|
||||
{file = "coverage-7.6.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0d1b923fc4a40c5832be4f35a5dab0e5ff89cddf83bb4174499e02ea089daf57"},
|
||||
{file = "coverage-7.6.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4b03741e70fb811d1a9a1d75355cf391f274ed85847f4b78e35459899f57af4d"},
|
||||
{file = "coverage-7.6.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a73d18625f6a8a1cbb11eadc1d03929f9510f4131879288e3f7922097a429f63"},
|
||||
{file = "coverage-7.6.0-cp311-cp311-win32.whl", hash = "sha256:65fa405b837060db569a61ec368b74688f429b32fa47a8929a7a2f9b47183713"},
|
||||
{file = "coverage-7.6.0-cp311-cp311-win_amd64.whl", hash = "sha256:6379688fb4cfa921ae349c76eb1a9ab26b65f32b03d46bb0eed841fd4cb6afb1"},
|
||||
{file = "coverage-7.6.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f7db0b6ae1f96ae41afe626095149ecd1b212b424626175a6633c2999eaad45b"},
|
||||
{file = "coverage-7.6.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:bbdf9a72403110a3bdae77948b8011f644571311c2fb35ee15f0f10a8fc082e8"},
|
||||
{file = "coverage-7.6.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cc44bf0315268e253bf563f3560e6c004efe38f76db03a1558274a6e04bf5d5"},
|
||||
{file = "coverage-7.6.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:da8549d17489cd52f85a9829d0e1d91059359b3c54a26f28bec2c5d369524807"},
|
||||
{file = "coverage-7.6.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0086cd4fc71b7d485ac93ca4239c8f75732c2ae3ba83f6be1c9be59d9e2c6382"},
|
||||
{file = "coverage-7.6.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1fad32ee9b27350687035cb5fdf9145bc9cf0a094a9577d43e909948ebcfa27b"},
|
||||
{file = "coverage-7.6.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:044a0985a4f25b335882b0966625270a8d9db3d3409ddc49a4eb00b0ef5e8cee"},
|
||||
{file = "coverage-7.6.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:76d5f82213aa78098b9b964ea89de4617e70e0d43e97900c2778a50856dac605"},
|
||||
{file = "coverage-7.6.0-cp312-cp312-win32.whl", hash = "sha256:3c59105f8d58ce500f348c5b56163a4113a440dad6daa2294b5052a10db866da"},
|
||||
{file = "coverage-7.6.0-cp312-cp312-win_amd64.whl", hash = "sha256:ca5d79cfdae420a1d52bf177de4bc2289c321d6c961ae321503b2ca59c17ae67"},
|
||||
{file = "coverage-7.6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d39bd10f0ae453554798b125d2f39884290c480f56e8a02ba7a6ed552005243b"},
|
||||
{file = "coverage-7.6.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:beb08e8508e53a568811016e59f3234d29c2583f6b6e28572f0954a6b4f7e03d"},
|
||||
{file = "coverage-7.6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b2e16f4cd2bc4d88ba30ca2d3bbf2f21f00f382cf4e1ce3b1ddc96c634bc48ca"},
|
||||
{file = "coverage-7.6.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6616d1c9bf1e3faea78711ee42a8b972367d82ceae233ec0ac61cc7fec09fa6b"},
|
||||
{file = "coverage-7.6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad4567d6c334c46046d1c4c20024de2a1c3abc626817ae21ae3da600f5779b44"},
|
||||
{file = "coverage-7.6.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:d17c6a415d68cfe1091d3296ba5749d3d8696e42c37fca5d4860c5bf7b729f03"},
|
||||
{file = "coverage-7.6.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:9146579352d7b5f6412735d0f203bbd8d00113a680b66565e205bc605ef81bc6"},
|
||||
{file = "coverage-7.6.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:cdab02a0a941af190df8782aafc591ef3ad08824f97850b015c8c6a8b3877b0b"},
|
||||
{file = "coverage-7.6.0-cp38-cp38-win32.whl", hash = "sha256:df423f351b162a702c053d5dddc0fc0ef9a9e27ea3f449781ace5f906b664428"},
|
||||
{file = "coverage-7.6.0-cp38-cp38-win_amd64.whl", hash = "sha256:f2501d60d7497fd55e391f423f965bbe9e650e9ffc3c627d5f0ac516026000b8"},
|
||||
{file = "coverage-7.6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:7221f9ac9dad9492cecab6f676b3eaf9185141539d5c9689d13fd6b0d7de840c"},
|
||||
{file = "coverage-7.6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ddaaa91bfc4477d2871442bbf30a125e8fe6b05da8a0015507bfbf4718228ab2"},
|
||||
{file = "coverage-7.6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4cbe651f3904e28f3a55d6f371203049034b4ddbce65a54527a3f189ca3b390"},
|
||||
{file = "coverage-7.6.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:831b476d79408ab6ccfadaaf199906c833f02fdb32c9ab907b1d4aa0713cfa3b"},
|
||||
{file = "coverage-7.6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:46c3d091059ad0b9c59d1034de74a7f36dcfa7f6d3bde782c49deb42438f2450"},
|
||||
{file = "coverage-7.6.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:4d5fae0a22dc86259dee66f2cc6c1d3e490c4a1214d7daa2a93d07491c5c04b6"},
|
||||
{file = "coverage-7.6.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:07ed352205574aad067482e53dd606926afebcb5590653121063fbf4e2175166"},
|
||||
{file = "coverage-7.6.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:49c76cdfa13015c4560702574bad67f0e15ca5a2872c6a125f6327ead2b731dd"},
|
||||
{file = "coverage-7.6.0-cp39-cp39-win32.whl", hash = "sha256:482855914928c8175735a2a59c8dc5806cf7d8f032e4820d52e845d1f731dca2"},
|
||||
{file = "coverage-7.6.0-cp39-cp39-win_amd64.whl", hash = "sha256:543ef9179bc55edfd895154a51792b01c017c87af0ebaae092720152e19e42ca"},
|
||||
{file = "coverage-7.6.0-pp38.pp39.pp310-none-any.whl", hash = "sha256:6fe885135c8a479d3e37a7aae61cbd3a0fb2deccb4dda3c25f92a49189f766d6"},
|
||||
{file = "coverage-7.6.0.tar.gz", hash = "sha256:289cc803fa1dc901f84701ac10c9ee873619320f2f9aff38794db4a4a0268d51"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
@@ -587,13 +586,13 @@ tests = ["dj-database-url", "dj-email-url", "django-cache-url", "pytest"]
|
||||
|
||||
[[package]]
|
||||
name = "exceptiongroup"
|
||||
version = "1.2.1"
|
||||
version = "1.2.2"
|
||||
description = "Backport of PEP 654 (exception groups)"
|
||||
optional = false
|
||||
python-versions = ">=3.7"
|
||||
files = [
|
||||
{file = "exceptiongroup-1.2.1-py3-none-any.whl", hash = "sha256:5258b9ed329c5bbdd31a309f53cbfb0b155341807f6ff7606a1e801a891b29ad"},
|
||||
{file = "exceptiongroup-1.2.1.tar.gz", hash = "sha256:a4785e48b045528f5bfe627b6ad554ff32def154f42372786903b7abcfe1aa16"},
|
||||
{file = "exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b"},
|
||||
{file = "exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc"},
|
||||
]
|
||||
|
||||
[package.extras]
|
||||
@@ -649,6 +648,23 @@ docs = ["furo (>=2023.9.10)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1
|
||||
testing = ["covdefaults (>=2.3)", "coverage (>=7.3.2)", "diff-cover (>=8.0.1)", "pytest (>=7.4.3)", "pytest-asyncio (>=0.21)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)", "pytest-timeout (>=2.2)", "virtualenv (>=20.26.2)"]
|
||||
typing = ["typing-extensions (>=4.8)"]
|
||||
|
||||
[[package]]
|
||||
name = "googleapis-common-protos"
|
||||
version = "1.63.2"
|
||||
description = "Common protobufs used in Google APIs"
|
||||
optional = false
|
||||
python-versions = ">=3.7"
|
||||
files = [
|
||||
{file = "googleapis-common-protos-1.63.2.tar.gz", hash = "sha256:27c5abdffc4911f28101e635de1533fb4cfd2c37fbaa9174587c799fac90aa87"},
|
||||
{file = "googleapis_common_protos-1.63.2-py2.py3-none-any.whl", hash = "sha256:27a2499c7e8aff199665b22741997e485eccc8645aa9176c7c988e6fae507945"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
protobuf = ">=3.20.2,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<6.0.0.dev0"
|
||||
|
||||
[package.extras]
|
||||
grpc = ["grpcio (>=1.44.0,<2.0.0.dev0)"]
|
||||
|
||||
[[package]]
|
||||
name = "greenlet"
|
||||
version = "3.0.3"
|
||||
@@ -720,6 +736,124 @@ files = [
|
||||
docs = ["Sphinx", "furo"]
|
||||
test = ["objgraph", "psutil"]
|
||||
|
||||
[[package]]
|
||||
name = "grpcio"
|
||||
version = "1.65.1"
|
||||
description = "HTTP/2-based RPC framework"
|
||||
optional = false
|
||||
python-versions = ">=3.8"
|
||||
files = [
|
||||
{file = "grpcio-1.65.1-cp310-cp310-linux_armv7l.whl", hash = "sha256:3dc5f928815b8972fb83b78d8db5039559f39e004ec93ebac316403fe031a062"},
|
||||
{file = "grpcio-1.65.1-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:8333ca46053c35484c9f2f7e8d8ec98c1383a8675a449163cea31a2076d93de8"},
|
||||
{file = "grpcio-1.65.1-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:7af64838b6e615fff0ec711960ed9b6ee83086edfa8c32670eafb736f169d719"},
|
||||
{file = "grpcio-1.65.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbb64b4166362d9326f7efbf75b1c72106c1aa87f13a8c8b56a1224fac152f5c"},
|
||||
{file = "grpcio-1.65.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8422dc13ad93ec8caa2612b5032a2b9cd6421c13ed87f54db4a3a2c93afaf77"},
|
||||
{file = "grpcio-1.65.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:4effc0562b6c65d4add6a873ca132e46ba5e5a46f07c93502c37a9ae7f043857"},
|
||||
{file = "grpcio-1.65.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a6c71575a2fedf259724981fd73a18906513d2f306169c46262a5bae956e6364"},
|
||||
{file = "grpcio-1.65.1-cp310-cp310-win32.whl", hash = "sha256:34966cf526ef0ea616e008d40d989463e3db157abb213b2f20c6ce0ae7928875"},
|
||||
{file = "grpcio-1.65.1-cp310-cp310-win_amd64.whl", hash = "sha256:ca931de5dd6d9eb94ff19a2c9434b23923bce6f767179fef04dfa991f282eaad"},
|
||||
{file = "grpcio-1.65.1-cp311-cp311-linux_armv7l.whl", hash = "sha256:bbb46330cc643ecf10bd9bd4ca8e7419a14b6b9dedd05f671c90fb2c813c6037"},
|
||||
{file = "grpcio-1.65.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d827a6fb9215b961eb73459ad7977edb9e748b23e3407d21c845d1d8ef6597e5"},
|
||||
{file = "grpcio-1.65.1-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:6e71aed8835f8d9fbcb84babc93a9da95955d1685021cceb7089f4f1e717d719"},
|
||||
{file = "grpcio-1.65.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9a1c84560b3b2d34695c9ba53ab0264e2802721c530678a8f0a227951f453462"},
|
||||
{file = "grpcio-1.65.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:27adee2338d697e71143ed147fe286c05810965d5d30ec14dd09c22479bfe48a"},
|
||||
{file = "grpcio-1.65.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:f62652ddcadc75d0e7aa629e96bb61658f85a993e748333715b4ab667192e4e8"},
|
||||
{file = "grpcio-1.65.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:71a05fd814700dd9cb7d9a507f2f6a1ef85866733ccaf557eedacec32d65e4c2"},
|
||||
{file = "grpcio-1.65.1-cp311-cp311-win32.whl", hash = "sha256:b590f1ad056294dfaeac0b7e1b71d3d5ace638d8dd1f1147ce4bd13458783ba8"},
|
||||
{file = "grpcio-1.65.1-cp311-cp311-win_amd64.whl", hash = "sha256:12e9bdf3b5fd48e5fbe5b3da382ad8f97c08b47969f3cca81dd9b36b86ed39e2"},
|
||||
{file = "grpcio-1.65.1-cp312-cp312-linux_armv7l.whl", hash = "sha256:54cb822e177374b318b233e54b6856c692c24cdbd5a3ba5335f18a47396bac8f"},
|
||||
{file = "grpcio-1.65.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:aaf3c54419a28d45bd1681372029f40e5bfb58e5265e3882eaf21e4a5f81a119"},
|
||||
{file = "grpcio-1.65.1-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:557de35bdfbe8bafea0a003dbd0f4da6d89223ac6c4c7549d78e20f92ead95d9"},
|
||||
{file = "grpcio-1.65.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8bfd95ef3b097f0cc86ade54eafefa1c8ed623aa01a26fbbdcd1a3650494dd11"},
|
||||
{file = "grpcio-1.65.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e6a8f3d6c41e6b642870afe6cafbaf7b61c57317f9ec66d0efdaf19db992b90"},
|
||||
{file = "grpcio-1.65.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:1faaf7355ceed07ceaef0b9dcefa4c98daf1dd8840ed75c2de128c3f4a4d859d"},
|
||||
{file = "grpcio-1.65.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:60f1f38eed830488ad2a1b11579ef0f345ff16fffdad1d24d9fbc97ba31804ff"},
|
||||
{file = "grpcio-1.65.1-cp312-cp312-win32.whl", hash = "sha256:e75acfa52daf5ea0712e8aa82f0003bba964de7ae22c26d208cbd7bc08500177"},
|
||||
{file = "grpcio-1.65.1-cp312-cp312-win_amd64.whl", hash = "sha256:ff5a84907e51924973aa05ed8759210d8cdae7ffcf9e44fd17646cf4a902df59"},
|
||||
{file = "grpcio-1.65.1-cp38-cp38-linux_armv7l.whl", hash = "sha256:1fbd6331f18c3acd7e09d17fd840c096f56eaf0ef830fbd50af45ae9dc8dfd83"},
|
||||
{file = "grpcio-1.65.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:de5b6be29116e094c5ef9d9e4252e7eb143e3d5f6bd6d50a78075553ab4930b0"},
|
||||
{file = "grpcio-1.65.1-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:e4a3cdba62b2d6aeae6027ae65f350de6dc082b72e6215eccf82628e79efe9ba"},
|
||||
{file = "grpcio-1.65.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:941c4869aa229d88706b78187d60d66aca77fe5c32518b79e3c3e03fc26109a2"},
|
||||
{file = "grpcio-1.65.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f40cebe5edb518d78b8131e87cb83b3ee688984de38a232024b9b44e74ee53d3"},
|
||||
{file = "grpcio-1.65.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:2ca684ba331fb249d8a1ce88db5394e70dbcd96e58d8c4b7e0d7b141a453dce9"},
|
||||
{file = "grpcio-1.65.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8558f0083ddaf5de64a59c790bffd7568e353914c0c551eae2955f54ee4b857f"},
|
||||
{file = "grpcio-1.65.1-cp38-cp38-win32.whl", hash = "sha256:8d8143a3e3966f85dce6c5cc45387ec36552174ba5712c5dc6fcc0898fb324c0"},
|
||||
{file = "grpcio-1.65.1-cp38-cp38-win_amd64.whl", hash = "sha256:76e81a86424d6ca1ce7c16b15bdd6a964a42b40544bf796a48da241fdaf61153"},
|
||||
{file = "grpcio-1.65.1-cp39-cp39-linux_armv7l.whl", hash = "sha256:cb5175f45c980ff418998723ea1b3869cce3766d2ab4e4916fbd3cedbc9d0ed3"},
|
||||
{file = "grpcio-1.65.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:b12c1aa7b95abe73b3e04e052c8b362655b41c7798da69f1eaf8d186c7d204df"},
|
||||
{file = "grpcio-1.65.1-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:3019fb50128b21a5e018d89569ffaaaa361680e1346c2f261bb84a91082eb3d3"},
|
||||
{file = "grpcio-1.65.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7ae15275ed98ea267f64ee9ddedf8ecd5306a5b5bb87972a48bfe24af24153e8"},
|
||||
{file = "grpcio-1.65.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5f096ffb881f37e8d4f958b63c74bfc400c7cebd7a944b027357cd2fb8d91a57"},
|
||||
{file = "grpcio-1.65.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:2f56b5a68fdcf17a0a1d524bf177218c3c69b3947cb239ea222c6f1867c3ab68"},
|
||||
{file = "grpcio-1.65.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:941596d419b9736ab548aa0feb5bbba922f98872668847bf0720b42d1d227b9e"},
|
||||
{file = "grpcio-1.65.1-cp39-cp39-win32.whl", hash = "sha256:5fd7337a823b890215f07d429f4f193d24b80d62a5485cf88ee06648591a0c57"},
|
||||
{file = "grpcio-1.65.1-cp39-cp39-win_amd64.whl", hash = "sha256:1bceeec568372cbebf554eae1b436b06c2ff24cfaf04afade729fb9035408c6c"},
|
||||
{file = "grpcio-1.65.1.tar.gz", hash = "sha256:3c492301988cd720cd145d84e17318d45af342e29ef93141228f9cd73222368b"},
|
||||
]
|
||||
|
||||
[package.extras]
|
||||
protobuf = ["grpcio-tools (>=1.65.1)"]
|
||||
|
||||
[[package]]
|
||||
name = "grpcio-tools"
|
||||
version = "1.65.1"
|
||||
description = "Protobuf code generator for gRPC"
|
||||
optional = false
|
||||
python-versions = ">=3.8"
|
||||
files = [
|
||||
{file = "grpcio_tools-1.65.1-cp310-cp310-linux_armv7l.whl", hash = "sha256:16f2f49048c76a68a8171507c39652c8be9ed4e7408deb9877002813aea4c396"},
|
||||
{file = "grpcio_tools-1.65.1-cp310-cp310-macosx_12_0_universal2.whl", hash = "sha256:6f75bf562057723818dff7bf4e05884c220653ead3db19effe5873ce88c7cfd2"},
|
||||
{file = "grpcio_tools-1.65.1-cp310-cp310-manylinux_2_17_aarch64.whl", hash = "sha256:e859001e20d4199ac90979e11d0d0ecb83f6b0235b08f8bfae93c2bd1401795a"},
|
||||
{file = "grpcio_tools-1.65.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:257decc1782b9adca422a2625663529be64018c056d7346d8bbc7c9bf0fe3b80"},
|
||||
{file = "grpcio_tools-1.65.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac8cc2684bcde43296cf5a350b80b73713610f0789ff912c88f898ef065a0b6c"},
|
||||
{file = "grpcio_tools-1.65.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:b8ef108fceabb12ed29f750f2cb4827d7bad5033dc13596ad0de092f015f5123"},
|
||||
{file = "grpcio_tools-1.65.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:32fa16e64f4b1684ed634155af9b03fdeabdf641d484e53c453e592e0f574f03"},
|
||||
{file = "grpcio_tools-1.65.1-cp310-cp310-win32.whl", hash = "sha256:d4afb3e74c7a567eabda3c447421eb8fb5c6cbf19bb9292319056beff4ab49a1"},
|
||||
{file = "grpcio_tools-1.65.1-cp310-cp310-win_amd64.whl", hash = "sha256:edb4731b4ad068c3c48d52bbfa1404236cbcdd2524eb01a655e8adfadc2f0034"},
|
||||
{file = "grpcio_tools-1.65.1-cp311-cp311-linux_armv7l.whl", hash = "sha256:fabbc0698cf0c614059c3e103b06c74d07190e9c7518f457703e98617ed467c0"},
|
||||
{file = "grpcio_tools-1.65.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ee1353c741f8f2fcf4fcce8764d4570e2d7c3025cc4c918a0c6532c18b6cbac5"},
|
||||
{file = "grpcio_tools-1.65.1-cp311-cp311-manylinux_2_17_aarch64.whl", hash = "sha256:f49acf17ae7b1a35b5e0e5907ed9b70c042b3e7ab8769ea9fd26f20b2b888743"},
|
||||
{file = "grpcio_tools-1.65.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c50895d383d41a379f9a235ce6d14c6639f36d43bf71c7148bf8a114a8f0936a"},
|
||||
{file = "grpcio_tools-1.65.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c394cf5b77eb71ff5c0ab857877f59dfee080cc95fb24d47e97d3965aaaf3c64"},
|
||||
{file = "grpcio_tools-1.65.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:e24819f8d11fc9e6bad1e13a1d7fddd6027ed2a1aad583f093cfe027852ff3f9"},
|
||||
{file = "grpcio_tools-1.65.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:2ec7e376f3f53e7ab90614d5a2404c19c7902750bcc5bed8219ab864f9bc1c4b"},
|
||||
{file = "grpcio_tools-1.65.1-cp311-cp311-win32.whl", hash = "sha256:9b6dbddca8e399ad96d263b786d0803acc67194cb80d01117691a9f239ac8dc9"},
|
||||
{file = "grpcio_tools-1.65.1-cp311-cp311-win_amd64.whl", hash = "sha256:3135888461888dcc7b358c17d60f32654cb36daf02bb805c84c0f8ab550743eb"},
|
||||
{file = "grpcio_tools-1.65.1-cp312-cp312-linux_armv7l.whl", hash = "sha256:b8fe0bd8e63a4dd84c022ccbb6057e9f3c338e036a1b95c2a6dbcc928c35b4f9"},
|
||||
{file = "grpcio_tools-1.65.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:bfb1a5e429756cdc9ce7183cca24a90bd7e68626379c83ea065bb30125d7aca4"},
|
||||
{file = "grpcio_tools-1.65.1-cp312-cp312-manylinux_2_17_aarch64.whl", hash = "sha256:4dde0d90f96e29670c58a08aeeac61da49792f71602cb7421943be8918857a2a"},
|
||||
{file = "grpcio_tools-1.65.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a89203d864dd024c4a13032f2df792eb465c63c224f9b82460d53f0cf30a3d16"},
|
||||
{file = "grpcio_tools-1.65.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7813a67cb427847e1a88d4fd4cbabfd2ed272455bd78b4f417377361d3b8edbd"},
|
||||
{file = "grpcio_tools-1.65.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:33e4c602221f91c1d87c4574c496621f11826d4f8867f31f4c4c2ff1b144a777"},
|
||||
{file = "grpcio_tools-1.65.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:fd2fe61d40e7421dc64c90912e29c05f1c419dd7a90452c84a1b456e06bd8530"},
|
||||
{file = "grpcio_tools-1.65.1-cp312-cp312-win32.whl", hash = "sha256:013017df92d6165e1556a17c618cf22471ef131fb614b428683730968b54b46d"},
|
||||
{file = "grpcio_tools-1.65.1-cp312-cp312-win_amd64.whl", hash = "sha256:1ab64a9af7ce0aeb639a77423fa99de91863a0b8ce0e43fc50f57fc460a0d30e"},
|
||||
{file = "grpcio_tools-1.65.1-cp38-cp38-linux_armv7l.whl", hash = "sha256:a95fd13dc17b065a934f00a0b99078de7773d4743772312efc8e75521ab62f7b"},
|
||||
{file = "grpcio_tools-1.65.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e44c69c029614fc61da2701587299fe19e52031aa1fba2a69a02c2dd77f903fe"},
|
||||
{file = "grpcio_tools-1.65.1-cp38-cp38-manylinux_2_17_aarch64.whl", hash = "sha256:196e12c18f0ebe5ac7f5446fc1daef8d9c69ba40a987a1f8379bfdf6c32e54af"},
|
||||
{file = "grpcio_tools-1.65.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:881ccc523a171235bb6b1d8e965c2f11e525b54eb1d66aeb8fea5a72f84d6e02"},
|
||||
{file = "grpcio_tools-1.65.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d5a12e0bd2a0f33af11e11d89f19cddea66568716b53b77f3f5dc605ceb32e0"},
|
||||
{file = "grpcio_tools-1.65.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:1d8671d82449206ef040756a14484b0c5189615a0aac5f4734ad3d023d07d4b1"},
|
||||
{file = "grpcio_tools-1.65.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:dc904f0de72eecbd024c111caa3e3165522349ff3c89361e4cbf06035c93061a"},
|
||||
{file = "grpcio_tools-1.65.1-cp38-cp38-win32.whl", hash = "sha256:b6e45377dbe50c7a737d81620841b8c3f3a1650c76cb56a87b5b0414d10f9987"},
|
||||
{file = "grpcio_tools-1.65.1-cp38-cp38-win_amd64.whl", hash = "sha256:5c9b4d95d2623b8b9435103305c3d375f8b4a266ee6fbbf29b5f4a57a8405047"},
|
||||
{file = "grpcio_tools-1.65.1-cp39-cp39-linux_armv7l.whl", hash = "sha256:4b0714458a6a3a1ed587271f3e7c301b735ccbdd7946071a1d85a6d0aabcb57a"},
|
||||
{file = "grpcio_tools-1.65.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:1ece34ebb677a869606200812653f274757844754f0b684e59d61244b194f002"},
|
||||
{file = "grpcio_tools-1.65.1-cp39-cp39-manylinux_2_17_aarch64.whl", hash = "sha256:4887af67ff130174fa7fb420ee985d38659a7c960053639de28980003fe710eb"},
|
||||
{file = "grpcio_tools-1.65.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d99945dc53daa7987ae8c33227f96697ccc4d0a4a1ca6c366e28fcc9fc1c55fb"},
|
||||
{file = "grpcio_tools-1.65.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:68d14cbd135541366bbef18c1d463f5d560878629f1901cae03777dad87755d9"},
|
||||
{file = "grpcio_tools-1.65.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bc55edf7a0af0ad7384887845b6498fdb1a75d3633d11807f953cac531a34588"},
|
||||
{file = "grpcio_tools-1.65.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:074fce3b96a5c59ed526bdd07c04c6243c07b13278388837a0540840ae10bf5b"},
|
||||
{file = "grpcio_tools-1.65.1-cp39-cp39-win32.whl", hash = "sha256:004232fa8ef82298eeb01b391d708b3a89317910e2f7c623b566aea0448c8dcc"},
|
||||
{file = "grpcio_tools-1.65.1-cp39-cp39-win_amd64.whl", hash = "sha256:9cc6f342b8e8a2aa801d2d1640290a47563d8bb1a802671191dc3fc218747da3"},
|
||||
{file = "grpcio_tools-1.65.1.tar.gz", hash = "sha256:24cffe8bc90fb8237f0bcf240bd6c70304255fe27b69db32601499a043f871be"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
grpcio = ">=1.65.1"
|
||||
protobuf = ">=5.26.1,<6.0dev"
|
||||
setuptools = "*"
|
||||
|
||||
[[package]]
|
||||
name = "h11"
|
||||
version = "0.14.0"
|
||||
@@ -929,44 +1063,44 @@ files = [
|
||||
|
||||
[[package]]
|
||||
name = "mypy"
|
||||
version = "1.10.1"
|
||||
version = "1.11.0"
|
||||
description = "Optional static typing for Python"
|
||||
optional = false
|
||||
python-versions = ">=3.8"
|
||||
files = [
|
||||
{file = "mypy-1.10.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e36f229acfe250dc660790840916eb49726c928e8ce10fbdf90715090fe4ae02"},
|
||||
{file = "mypy-1.10.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:51a46974340baaa4145363b9e051812a2446cf583dfaeba124af966fa44593f7"},
|
||||
{file = "mypy-1.10.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:901c89c2d67bba57aaaca91ccdb659aa3a312de67f23b9dfb059727cce2e2e0a"},
|
||||
{file = "mypy-1.10.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0cd62192a4a32b77ceb31272d9e74d23cd88c8060c34d1d3622db3267679a5d9"},
|
||||
{file = "mypy-1.10.1-cp310-cp310-win_amd64.whl", hash = "sha256:a2cbc68cb9e943ac0814c13e2452d2046c2f2b23ff0278e26599224cf164e78d"},
|
||||
{file = "mypy-1.10.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:bd6f629b67bb43dc0d9211ee98b96d8dabc97b1ad38b9b25f5e4c4d7569a0c6a"},
|
||||
{file = "mypy-1.10.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a1bbb3a6f5ff319d2b9d40b4080d46cd639abe3516d5a62c070cf0114a457d84"},
|
||||
{file = "mypy-1.10.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8edd4e9bbbc9d7b79502eb9592cab808585516ae1bcc1446eb9122656c6066f"},
|
||||
{file = "mypy-1.10.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:6166a88b15f1759f94a46fa474c7b1b05d134b1b61fca627dd7335454cc9aa6b"},
|
||||
{file = "mypy-1.10.1-cp311-cp311-win_amd64.whl", hash = "sha256:5bb9cd11c01c8606a9d0b83ffa91d0b236a0e91bc4126d9ba9ce62906ada868e"},
|
||||
{file = "mypy-1.10.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d8681909f7b44d0b7b86e653ca152d6dff0eb5eb41694e163c6092124f8246d7"},
|
||||
{file = "mypy-1.10.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:378c03f53f10bbdd55ca94e46ec3ba255279706a6aacaecac52ad248f98205d3"},
|
||||
{file = "mypy-1.10.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6bacf8f3a3d7d849f40ca6caea5c055122efe70e81480c8328ad29c55c69e93e"},
|
||||
{file = "mypy-1.10.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:701b5f71413f1e9855566a34d6e9d12624e9e0a8818a5704d74d6b0402e66c04"},
|
||||
{file = "mypy-1.10.1-cp312-cp312-win_amd64.whl", hash = "sha256:3c4c2992f6ea46ff7fce0072642cfb62af7a2484efe69017ed8b095f7b39ef31"},
|
||||
{file = "mypy-1.10.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:604282c886497645ffb87b8f35a57ec773a4a2721161e709a4422c1636ddde5c"},
|
||||
{file = "mypy-1.10.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:37fd87cab83f09842653f08de066ee68f1182b9b5282e4634cdb4b407266bade"},
|
||||
{file = "mypy-1.10.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8addf6313777dbb92e9564c5d32ec122bf2c6c39d683ea64de6a1fd98b90fe37"},
|
||||
{file = "mypy-1.10.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:5cc3ca0a244eb9a5249c7c583ad9a7e881aa5d7b73c35652296ddcdb33b2b9c7"},
|
||||
{file = "mypy-1.10.1-cp38-cp38-win_amd64.whl", hash = "sha256:1b3a2ffce52cc4dbaeee4df762f20a2905aa171ef157b82192f2e2f368eec05d"},
|
||||
{file = "mypy-1.10.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fe85ed6836165d52ae8b88f99527d3d1b2362e0cb90b005409b8bed90e9059b3"},
|
||||
{file = "mypy-1.10.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c2ae450d60d7d020d67ab440c6e3fae375809988119817214440033f26ddf7bf"},
|
||||
{file = "mypy-1.10.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6be84c06e6abd72f960ba9a71561c14137a583093ffcf9bbfaf5e613d63fa531"},
|
||||
{file = "mypy-1.10.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:2189ff1e39db399f08205e22a797383613ce1cb0cb3b13d8bcf0170e45b96cc3"},
|
||||
{file = "mypy-1.10.1-cp39-cp39-win_amd64.whl", hash = "sha256:97a131ee36ac37ce9581f4220311247ab6cba896b4395b9c87af0675a13a755f"},
|
||||
{file = "mypy-1.10.1-py3-none-any.whl", hash = "sha256:71d8ac0b906354ebda8ef1673e5fde785936ac1f29ff6987c7483cfbd5a4235a"},
|
||||
{file = "mypy-1.10.1.tar.gz", hash = "sha256:1f8f492d7db9e3593ef42d4f115f04e556130f2819ad33ab84551403e97dd4c0"},
|
||||
{file = "mypy-1.11.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a3824187c99b893f90c845bab405a585d1ced4ff55421fdf5c84cb7710995229"},
|
||||
{file = "mypy-1.11.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:96f8dbc2c85046c81bcddc246232d500ad729cb720da4e20fce3b542cab91287"},
|
||||
{file = "mypy-1.11.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1a5d8d8dd8613a3e2be3eae829ee891b6b2de6302f24766ff06cb2875f5be9c6"},
|
||||
{file = "mypy-1.11.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:72596a79bbfb195fd41405cffa18210af3811beb91ff946dbcb7368240eed6be"},
|
||||
{file = "mypy-1.11.0-cp310-cp310-win_amd64.whl", hash = "sha256:35ce88b8ed3a759634cb4eb646d002c4cef0a38f20565ee82b5023558eb90c00"},
|
||||
{file = "mypy-1.11.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:98790025861cb2c3db8c2f5ad10fc8c336ed2a55f4daf1b8b3f877826b6ff2eb"},
|
||||
{file = "mypy-1.11.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:25bcfa75b9b5a5f8d67147a54ea97ed63a653995a82798221cca2a315c0238c1"},
|
||||
{file = "mypy-1.11.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0bea2a0e71c2a375c9fa0ede3d98324214d67b3cbbfcbd55ac8f750f85a414e3"},
|
||||
{file = "mypy-1.11.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d2b3d36baac48e40e3064d2901f2fbd2a2d6880ec6ce6358825c85031d7c0d4d"},
|
||||
{file = "mypy-1.11.0-cp311-cp311-win_amd64.whl", hash = "sha256:d8e2e43977f0e09f149ea69fd0556623919f816764e26d74da0c8a7b48f3e18a"},
|
||||
{file = "mypy-1.11.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:1d44c1e44a8be986b54b09f15f2c1a66368eb43861b4e82573026e04c48a9e20"},
|
||||
{file = "mypy-1.11.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cea3d0fb69637944dd321f41bc896e11d0fb0b0aa531d887a6da70f6e7473aba"},
|
||||
{file = "mypy-1.11.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a83ec98ae12d51c252be61521aa5731f5512231d0b738b4cb2498344f0b840cd"},
|
||||
{file = "mypy-1.11.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:c7b73a856522417beb78e0fb6d33ef89474e7a622db2653bc1285af36e2e3e3d"},
|
||||
{file = "mypy-1.11.0-cp312-cp312-win_amd64.whl", hash = "sha256:f2268d9fcd9686b61ab64f077be7ffbc6fbcdfb4103e5dd0cc5eaab53a8886c2"},
|
||||
{file = "mypy-1.11.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:940bfff7283c267ae6522ef926a7887305945f716a7704d3344d6d07f02df850"},
|
||||
{file = "mypy-1.11.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:14f9294528b5f5cf96c721f231c9f5b2733164e02c1c018ed1a0eff8a18005ac"},
|
||||
{file = "mypy-1.11.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d7b54c27783991399046837df5c7c9d325d921394757d09dbcbf96aee4649fe9"},
|
||||
{file = "mypy-1.11.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:65f190a6349dec29c8d1a1cd4aa71284177aee5949e0502e6379b42873eddbe7"},
|
||||
{file = "mypy-1.11.0-cp38-cp38-win_amd64.whl", hash = "sha256:dbe286303241fea8c2ea5466f6e0e6a046a135a7e7609167b07fd4e7baf151bf"},
|
||||
{file = "mypy-1.11.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:104e9c1620c2675420abd1f6c44bab7dd33cc85aea751c985006e83dcd001095"},
|
||||
{file = "mypy-1.11.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:f006e955718ecd8d159cee9932b64fba8f86ee6f7728ca3ac66c3a54b0062abe"},
|
||||
{file = "mypy-1.11.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:becc9111ca572b04e7e77131bc708480cc88a911adf3d0239f974c034b78085c"},
|
||||
{file = "mypy-1.11.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6801319fe76c3f3a3833f2b5af7bd2c17bb93c00026a2a1b924e6762f5b19e13"},
|
||||
{file = "mypy-1.11.0-cp39-cp39-win_amd64.whl", hash = "sha256:c1a184c64521dc549324ec6ef7cbaa6b351912be9cb5edb803c2808a0d7e85ac"},
|
||||
{file = "mypy-1.11.0-py3-none-any.whl", hash = "sha256:56913ec8c7638b0091ef4da6fcc9136896914a9d60d54670a75880c3e5b99ace"},
|
||||
{file = "mypy-1.11.0.tar.gz", hash = "sha256:93743608c7348772fdc717af4aeee1997293a1ad04bc0ea6efa15bf65385c538"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
mypy-extensions = ">=1.0.0"
|
||||
tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""}
|
||||
typing-extensions = ">=4.1.0"
|
||||
typing-extensions = ">=4.6.0"
|
||||
|
||||
[package.extras]
|
||||
dmypy = ["psutil (>=4.0)"]
|
||||
@@ -985,6 +1119,21 @@ files = [
|
||||
{file = "mypy_extensions-1.0.0.tar.gz", hash = "sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "mypy-protobuf"
|
||||
version = "3.6.0"
|
||||
description = "Generate mypy stub files from protobuf specs"
|
||||
optional = false
|
||||
python-versions = ">=3.8"
|
||||
files = [
|
||||
{file = "mypy-protobuf-3.6.0.tar.gz", hash = "sha256:02f242eb3409f66889f2b1a3aa58356ec4d909cdd0f93115622e9e70366eca3c"},
|
||||
{file = "mypy_protobuf-3.6.0-py3-none-any.whl", hash = "sha256:56176e4d569070e7350ea620262478b49b7efceba4103d468448f1d21492fd6c"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
protobuf = ">=4.25.3"
|
||||
types-protobuf = ">=4.24"
|
||||
|
||||
[[package]]
|
||||
name = "nodeenv"
|
||||
version = "1.9.1"
|
||||
@@ -1056,6 +1205,26 @@ nodeenv = ">=0.11.1"
|
||||
pyyaml = ">=5.1"
|
||||
virtualenv = ">=20.10.0"
|
||||
|
||||
[[package]]
|
||||
name = "protobuf"
|
||||
version = "5.27.2"
|
||||
description = ""
|
||||
optional = false
|
||||
python-versions = ">=3.8"
|
||||
files = [
|
||||
{file = "protobuf-5.27.2-cp310-abi3-win32.whl", hash = "sha256:354d84fac2b0d76062e9b3221f4abbbacdfd2a4d8af36bab0474f3a0bb30ab38"},
|
||||
{file = "protobuf-5.27.2-cp310-abi3-win_amd64.whl", hash = "sha256:0e341109c609749d501986b835f667c6e1e24531096cff9d34ae411595e26505"},
|
||||
{file = "protobuf-5.27.2-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:a109916aaac42bff84702fb5187f3edadbc7c97fc2c99c5ff81dd15dcce0d1e5"},
|
||||
{file = "protobuf-5.27.2-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:176c12b1f1c880bf7a76d9f7c75822b6a2bc3db2d28baa4d300e8ce4cde7409b"},
|
||||
{file = "protobuf-5.27.2-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:b848dbe1d57ed7c191dfc4ea64b8b004a3f9ece4bf4d0d80a367b76df20bf36e"},
|
||||
{file = "protobuf-5.27.2-cp38-cp38-win32.whl", hash = "sha256:4fadd8d83e1992eed0248bc50a4a6361dc31bcccc84388c54c86e530b7f58863"},
|
||||
{file = "protobuf-5.27.2-cp38-cp38-win_amd64.whl", hash = "sha256:610e700f02469c4a997e58e328cac6f305f649826853813177e6290416e846c6"},
|
||||
{file = "protobuf-5.27.2-cp39-cp39-win32.whl", hash = "sha256:9e8f199bf7f97bd7ecebffcae45ebf9527603549b2b562df0fbc6d4d688f14ca"},
|
||||
{file = "protobuf-5.27.2-cp39-cp39-win_amd64.whl", hash = "sha256:7fc3add9e6003e026da5fc9e59b131b8f22b428b991ccd53e2af8071687b4fce"},
|
||||
{file = "protobuf-5.27.2-py3-none-any.whl", hash = "sha256:54330f07e4949d09614707c48b06d1a22f8ffb5763c159efd5c0928326a91470"},
|
||||
{file = "protobuf-5.27.2.tar.gz", hash = "sha256:f3ecdef226b9af856075f28227ff2c90ce3a594d092c39bee5513573f25e2714"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pycparser"
|
||||
version = "2.22"
|
||||
@@ -1327,6 +1496,7 @@ files = [
|
||||
{file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"},
|
||||
{file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:81e0b275a9ecc9c0c0c07b4b90ba548307583c125f54d5b6946cfee6360c733d"},
|
||||
{file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba336e390cd8e4d1739f42dfe9bb83a3cc2e80f567d8805e11b46f4a943f5515"},
|
||||
{file = "PyYAML-6.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:326c013efe8048858a6d312ddd31d56e468118ad4cdeda36c719bf5bb6192290"},
|
||||
{file = "PyYAML-6.0.1-cp310-cp310-win32.whl", hash = "sha256:bd4af7373a854424dabd882decdc5579653d7868b8fb26dc7d0e99f823aa5924"},
|
||||
{file = "PyYAML-6.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:fd1592b3fdf65fff2ad0004b5e363300ef59ced41c2e6b3a99d4089fa8c5435d"},
|
||||
{file = "PyYAML-6.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6965a7bc3cf88e5a1c3bd2e0b5c22f8d677dc88a455344035f03399034eb3007"},
|
||||
@@ -1334,8 +1504,16 @@ files = [
|
||||
{file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:42f8152b8dbc4fe7d96729ec2b99c7097d656dc1213a3229ca5383f973a5ed6d"},
|
||||
{file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:062582fca9fabdd2c8b54a3ef1c978d786e0f6b3a1510e0ac93ef59e0ddae2bc"},
|
||||
{file = "PyYAML-6.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b04aac4d386b172d5b9692e2d2da8de7bfb6c387fa4f801fbf6fb2e6ba4673"},
|
||||
{file = "PyYAML-6.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e7d73685e87afe9f3b36c799222440d6cf362062f78be1013661b00c5c6f678b"},
|
||||
{file = "PyYAML-6.0.1-cp311-cp311-win32.whl", hash = "sha256:1635fd110e8d85d55237ab316b5b011de701ea0f29d07611174a1b42f1444741"},
|
||||
{file = "PyYAML-6.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:bf07ee2fef7014951eeb99f56f39c9bb4af143d8aa3c21b1677805985307da34"},
|
||||
{file = "PyYAML-6.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:855fb52b0dc35af121542a76b9a84f8d1cd886ea97c84703eaa6d88e37a2ad28"},
|
||||
{file = "PyYAML-6.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40df9b996c2b73138957fe23a16a4f0ba614f4c0efce1e9406a184b6d07fa3a9"},
|
||||
{file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a08c6f0fe150303c1c6b71ebcd7213c2858041a7e01975da3a99aed1e7a378ef"},
|
||||
{file = "PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c22bec3fbe2524cde73d7ada88f6566758a8f7227bfbf93a408a9d86bcc12a0"},
|
||||
{file = "PyYAML-6.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8d4e9c88387b0f5c7d5f281e55304de64cf7f9c0021a3525bd3b1c542da3b0e4"},
|
||||
{file = "PyYAML-6.0.1-cp312-cp312-win32.whl", hash = "sha256:d483d2cdf104e7c9fa60c544d92981f12ad66a457afae824d146093b8c294c54"},
|
||||
{file = "PyYAML-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:0d3304d8c0adc42be59c5f8a4d9e3d7379e6955ad754aa9d6ab7a398b59dd1df"},
|
||||
{file = "PyYAML-6.0.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:50550eb667afee136e9a77d6dc71ae76a44df8b3e51e41b77f6de2932bfe0f47"},
|
||||
{file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1fe35611261b29bd1de0070f0b2f47cb6ff71fa6595c077e42bd0c419fa27b98"},
|
||||
{file = "PyYAML-6.0.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:704219a11b772aea0d8ecd7058d0082713c3562b4e271b849ad7dc4a5c90c13c"},
|
||||
@@ -1352,6 +1530,7 @@ files = [
|
||||
{file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0cd17c15d3bb3fa06978b4e8958dcdc6e0174ccea823003a106c7d4d7899ac5"},
|
||||
{file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28c119d996beec18c05208a8bd78cbe4007878c6dd15091efb73a30e90539696"},
|
||||
{file = "PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e07cbde391ba96ab58e532ff4803f79c4129397514e1413a7dc761ccd755735"},
|
||||
{file = "PyYAML-6.0.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:49a183be227561de579b4a36efbb21b3eab9651dd81b1858589f796549873dd6"},
|
||||
{file = "PyYAML-6.0.1-cp38-cp38-win32.whl", hash = "sha256:184c5108a2aca3c5b3d3bf9395d50893a7ab82a38004c8f61c258d4428e80206"},
|
||||
{file = "PyYAML-6.0.1-cp38-cp38-win_amd64.whl", hash = "sha256:1e2722cc9fbb45d9b87631ac70924c11d3a401b2d7f410cc0e3bbf249f2dca62"},
|
||||
{file = "PyYAML-6.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9eb6caa9a297fc2c2fb8862bc5370d0303ddba53ba97e71f08023b6cd73d16a8"},
|
||||
@@ -1359,6 +1538,7 @@ files = [
|
||||
{file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5773183b6446b2c99bb77e77595dd486303b4faab2b086e7b17bc6bef28865f6"},
|
||||
{file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b786eecbdf8499b9ca1d697215862083bd6d2a99965554781d0d8d1ad31e13a0"},
|
||||
{file = "PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c"},
|
||||
{file = "PyYAML-6.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5"},
|
||||
{file = "PyYAML-6.0.1-cp39-cp39-win32.whl", hash = "sha256:faca3bdcf85b2fc05d06ff3fbc1f83e1391b3e724afa3feba7d13eeab355484c"},
|
||||
{file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"},
|
||||
{file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"},
|
||||
@@ -1613,6 +1793,17 @@ files = [
|
||||
{file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "types-protobuf"
|
||||
version = "5.27.0.20240626"
|
||||
description = "Typing stubs for protobuf"
|
||||
optional = false
|
||||
python-versions = ">=3.8"
|
||||
files = [
|
||||
{file = "types-protobuf-5.27.0.20240626.tar.gz", hash = "sha256:683ba14043bade6785e3f937a7498f243b37881a91ac8d81b9202ecf8b191e9c"},
|
||||
{file = "types_protobuf-5.27.0.20240626-py3-none-any.whl", hash = "sha256:688e8f7e8d9295db26bc560df01fb731b27a25b77cbe4c1ce945647f7024f5c1"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "typing-extensions"
|
||||
version = "4.12.2"
|
||||
@@ -1885,4 +2076,4 @@ test = ["big-O", "importlib-resources", "jaraco.functools", "jaraco.itertools",
|
||||
[metadata]
|
||||
lock-version = "2.0"
|
||||
python-versions = "^3.8.1"
|
||||
content-hash = "d312a7a7c367a8c7f3664f4691e8e39aae6bc9aaf2e116abaf9e7fa1f28fe479"
|
||||
content-hash = "54e4b2461b7a222dc287c8e9da19edaa3a18268a2f0da4230b7613fa6ef884ec"
|
||||
|
||||
@@ -35,6 +35,11 @@ slowapi = "^0.1.9"
|
||||
cbor2 = "^5.6.2"
|
||||
asyncpg = "^0.29.0"
|
||||
aiosqlite = "^0.20.0"
|
||||
grpcio = "^1.65.1"
|
||||
googleapis-common-protos = "^1.63.2"
|
||||
mypy-protobuf = "^3.6.0"
|
||||
types-protobuf = "^5.27.0.20240626"
|
||||
grpcio-tools = "^1.65.1"
|
||||
|
||||
[tool.poetry.group.dev.dependencies]
|
||||
pytest-asyncio = "^0.21.1"
|
||||
|
||||
Reference in New Issue
Block a user