Git Product home page Git Product logo

lnd-grpc-client's People

Contributors

adrienemery avatar dependabot[bot] avatar takinbo avatar tradewind886 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

lnd-grpc-client's Issues

lookup_invoice is not returning with the expected format

Not sure if this is an issue with lnd-grpc-client or lnd itself, (trying to find out),

When I call lookupinvoice with the lncli I get a response that includes fields I need:

"amt_paid": "0",
    "amt_paid_sat": "0",
    "amt_paid_msat": "0",
    "state": "CANCELED"

But when I run via lnd-grpc-client I get a different response that is missing these fields:

r_preimage: "\240\262.\331*\010\265&\257m\226\t\025\301_\2658\267\355X\343B8\213|\361!\005w\302\366\022"
r_hash: "\n\215P>\374\237\004\315\220\266\351\270h\036\337\227\271E\005\261\345\263]\376c\006\010C\322{m\221"
value: 2811
creation_date: 1610409561
payment_request: "lnbc28110n1p0leejepp5p2x4q0hunuzvmy9kaxuxs8klj7u52pd3uke4mlnrqcyy85nmdkgsdqqcqzpgsp5hs35l6s2rwttttuegvfy63mlle8ppp822w0akuh98024s5zq3hes9qyyssqfl5x349pqp2lahcc2aqa6d6epsazm4wysgtqmln59ywc6jc9tj0q44tsfkxsspgt64pscng4kwu5l2vp33gnzaauss69he5jpkqguzcp7v35tm"
expiry: 3600
cltv_expiry: 40
add_index: 163

How can I get a response that includes amount paid?

I tried generating my own rpc_pb2.py using protoc rpc.proto but even then I get a response that differs from lndcli

...
expiry: 3600
cltv_expiry: 40
add_index: 160
value_msat: 2825000
features {
  key: 9
  value {
    name: "tlv-onion"
    is_known: true
  }
}
features {
  key: 14
  value {
    name: "payment-addr"
    is_required: true
    is_known: true
  }
}
features {
  key: 17
  value {
    name: "multi-path-payments"
    is_known: true
  }
}

This looks closer but is still missing what I need. Is this perhaps an issue with lndrpc itself?

Any help would be greatly appreciated. Otherwise I'm going to have to use ssh and subprocesses...

How to make a payment with many parameters

I am confused by the send_payment method, I am trying to use it similarly to other methods, but it says the argument does not exist.

>>> lnd.send_payment(
...     mypk,
...     outgoing_chan_ids=[112342341234],
...     last_hop_pubkey=base64.b64encode(getChannelRemotePK("22446688101010").encode("UTF-8")),
...     amt=12345,
...     payment_request=pr,
...     timeout_seconds=60,
...     fee_limit_msat=10000,
...     allow_self_payment=True,
...     max_parts=1,
...     no_inflight_updates=True,
... )
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/skorn/Documents/env/lib/python3.8/site-packages/lndgrpc/errors.py", line 19, in wrapper
    return fnc(*args, **kwargs)
TypeError: send_payment() got an unexpected keyword argument 'outgoing_chan_ids'

>>> lnd.send_payment(
...     mypk,
...     outgoing_chan_id=112342341234,
...     last_hop_pubkey=base64.b64encode(getChannelRemotePK("22446688101010").encode("UTF-8")),
...     amt=12345,
...     payment_request=pr,
...     timeout_seconds=60,
...     fee_limit_msat=10000,
...     allow_self_payment=True,
...     max_parts=1,
...     no_inflight_updates=True,
... )
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/skorn/Documents/env/lib/python3.8/site-packages/lndgrpc/errors.py", line 19, in wrapper
    return fnc(*args, **kwargs)
TypeError: send_payment() got an unexpected keyword argument 'outgoing_chan_id'

>>> lnd.send_payment(
...     dest=mypk,
...     outgoing_chan_id=112342341234,
...     last_hop_pubkey=base64.b64encode(getChannelRemotePK("22446688101010").encode("UTF-8")),
...     amt=12345,
...     payment_request=pr,
...     timeout_seconds=60,
...     fee_limit_msat=10000,
...     allow_self_payment=True,
...     max_parts=1,
...     no_inflight_updates=True,
... )
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/skorn/Documents/env/lib/python3.8/site-packages/lndgrpc/errors.py", line 19, in wrapper
    return fnc(*args, **kwargs)
TypeError: send_payment() got an unexpected keyword argument 'dest'

Any idea what am I doing wrong, I am trying to do a circular rebalance?

Do you know if this is using paymentV1 or PaymentV2?

Error while installing for Python3

I'm having trouble installing this with Python3. I'm on Ubuntu, Python 3.5.2, Pip 9.0.1. I get this error:

Collecting lndgrpc
Downloading https://files.pythonhosted.org/packages/51/70/f356ec69c1d8f4da5b59bc42c2aba5ce62cda6db8c00491833c44e07461f/lndgrpc-0.1.2-py3-none-any.whl
Collecting aiogrpc (from lndgrpc)
Could not find a version that satisfies the requirement aiogrpc (from lndgrpc) (from versions: )
No matching distribution found for aiogrpc (from lndgrpc)

to json ?

list_invoices() returns a rpc_pb2.ListInvoiceResponse .

  invoices {
  r_preimage: "\030\324\300\2421\232\341p\306\237\2662\210\335\035\326\256\346W\226\025\367\302\300\362\\\301\221\237\031\267\360"
  r_hash: "\362\303\271\025RG\014x[!\206\346(k+\0226c\301\256u\305\247\204@\320e\235\213Q\334\325"
  value: 100
  creation_date: 1528903408
  payment_request: "lntb1u1pdjzdhspp57tpmj92jgux8skepsmnzs6etzgmx8sdwwhz60pzq6pjemz63mn2sdqqcqzys2xdd44knpwswu97txpucvxeuhqh0vcrlxk7ufzs4563lm8eeqgehlyma9aszeyfzyp97khtcuds2x4evx8g7ga9fczkn3e9qz9frcgsplgucyw"
  expiry: 3600
  cltv_expiry: 144
}
invoices {
  r_preimage: "\347\357\343F7nB\024\212\365\347\333a5\242\214{\031+\237\240\026\254\213\006\262\231\314\202\031X\177"
  r_hash: "~\353\273\265\372\025\252e\303\356\357\225\314\361t\2770\301\321\262!\303\217\200\310\375\320obF1x"
  value: 100
  creation_date: 1528903465
  payment_request: "lntb1u1pdjzdefpp50m4mhd06zk4xtslwa72ueut5hucvr5djy8pclqxglhgx7cjxx9uqdqqcqzys0chnhs4cxdvd6tmawft5f5mncm57glha2rh477fgmfvju6a3khs8w77yg5073h3nhmtxgt7wkw08c7f5l564hx8wfgsupyvy5u49wfqqks3gvy"
  expiry: 3600
  cltv_expiry: 144
}

Is there an easy way to get this as a json or dict?

Does `client.subscribe_invoices()` work?

Hi, cool library, thanks!

I've been successfully using it for creating invoices, but when I iterate on client.subscribe_invoices() I don't get anything yielded at all when I create new invoices.

Have you had this working? Thanks!

Running on flask in production

I'm having trouble running this in Flask in production. Running on localhost the exact same code works fine. I'm thinking it has to do with a permission issue. How do I make sure that my Flask site can execute the code?

from lndgrpc import LNDClient # for LND rpc

def addInvoice(amount, memo):
    INVOICE_MACAROON_FILEPATH = '/home/ekerstein/.lnd/invoice.macaroon'
    lnd = LNDClient('127.0.0.1:10009', macaroon_filepath=INVOICE_MACAROON_FILEPATH)
    return lnd.add_invoice(amount, memo).payment_request

@app.route("/addinvoice")
def add_invoice():
    amount = request.args.get('amount', type = int)
    memo = request.args.get('memo', type = str)
    return jsonify(addInvoice(amount, memo))

Looking for a bit of help getting started using gRPC with Umbrel

I'm able to connect to my Umbrel using the REST API but I'm struggling with getting gRPC (which I think I need for being able to send Keysend payments).

macaroon_folder = ".macaroon"
macaroon_file = "admin.macaroon"
macaroon_path = os.path.join(macaroon_folder, macaroon_file)
cert = os.path.join(macaroon_folder, "tls.cert")

lnd = LNDClient(
    macaroon_filepath=macaroon_path,
    cert_filepath=cert,
    ip_address="10.0.0.5:10009",
    network="mainnet",
    admin=True
)

always give me this when I try lnd.get_info()

Exception has occurred: _InactiveRpcError       (note: full exception trace is shown but execution is paused at: _run_module_as_main)
<_InactiveRpcError of RPC that terminated with:
	status = StatusCode.UNAVAILABLE
	details = "failed to connect to all addresses"
	debug_error_string = "{"created":"@1631694216.210741000","description":"Failed to pick subchannel","file":"src/core/ext/filters/client_channel/client_channel.cc","file_line":3187,"referenced_errors":[{"created":"@1631694216.210741000","description":"failed to connect to all addresses","file":"src/core/lib/transport/error_utils.cc","file_line":146,"grpc_status":14}]}"
>

I'm not sure where I'm going wrong. I'm absolutely certain my umbrel is on 10.0.0.5 on my local net. Docker on the Umbrel seems to be exposing the right port:

405098eccf22   lightninglabs/lnd:v0.13.1-beta   "lnd"                    23 hours ago   Up 13 hours   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp, 0.0.0.0:9735->9735/tcp, :::9735->9735/tcp, 0.0.0.0:10009->10009/tcp, :::10009->10009/tcp   lnd

Really grateful for any help anyone can offer.

Add timeout constraint to macaroon when making RPC calls

https://github.com/lightningnetwork/lnd/blob/master/docs/macaroons.md mentions

lncli also adds a caveat which makes it valid for only 60 seconds by default to help prevent replay in case the macaroon is somehow intercepted in transmission.

I think we could also do this to match the security protections of lncli. This is an enhancement request to add time caveat when using the macaroon.

Suggested way to implement this:

  1. Use pymacaroons library https://github.com/ecordell/pymacaroons
  2. Before every RPC call
from pymacaroons import Macaroon

m = Macaroon.deserialize(original_macaroon)
m.add_first_party_caveat('X=Y')
m.serialize()

Add fwdinghistory method

Hello, first, I love the library which made it much easier for me to work with the grpc lnd client.

That said, the one feature I needed to build my app uses the 'fwdinghistory' argument from lncli, would it be possible to add that as a method in your library - I tried looking for it, but doesn't seem to exist, if it does, please let me know.

Thank you for your time and contribution to the LN ecosystem.

Peer name is not in peer certificate

Hi, I'm trying to run:

from lndgrpc import LNDClient

# pass in the ip-address with RPC port
lnd = LNDClient("ec2-34-123-123-123.us-west-2.compute.amazonaws.com:10009", cert_filepath="tls.cert", macaroon_filepath="readonly.macaroon")

lnd.get_info()

and get this connection error:

Traceback (most recent call last):
  File "./c.py", line 8, in <module>
    lnd.get_info()
  File "/Users/aleksandr/Development/lnd-grpc-client/lib/python3.6/site-packages/lndgrpc/errors.py", line 30, in wrapper
    raise exc
  File "/Users/aleksandr/Development/lnd-grpc-client/lib/python3.6/site-packages/lndgrpc/errors.py", line 19, in wrapper
    return fnc(*args, **kwargs)
  File "/Users/aleksandr/Development/lnd-grpc-client/lib/python3.6/site-packages/lndgrpc/client.py", line 21, in get_info
    response = self._ln_stub.GetInfo(ln.GetInfoRequest())
  File "/Users/aleksandr/Development/lnd-grpc-client/lib/python3.6/site-packages/grpc/_channel.py", line 549, in __call__
    return _end_unary_response_blocking(state, call, False, None)
  File "/Users/aleksandr/Development/lnd-grpc-client/lib/python3.6/site-packages/grpc/_channel.py", line 466, in _end_unary_response_blocking
    raise _Rendezvous(state, None, None, deadline)
grpc._channel._Rendezvous: <_Rendezvous of RPC that terminated with:
	status = StatusCode.UNAVAILABLE
	details = "Connect Failed"
	debug_error_string = "{"created":"@1553871334.297308000","description":"Failed to create subchannel","file":"src/core/ext/filters/client_channel/client_channel.cc","file_line":2267,"referenced_errors":[{"created":"@1553871334.297305000","description":"Pick Cancelled","file":"src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc","file_line":242,"referenced_errors":[{"created":"@1553871334.297284000","description":"Connect Failed","file":"src/core/ext/filters/client_channel/subchannel.cc","file_line":962,"grpc_status":14,"referenced_errors":[{"created":"@1553871334.297165000",
"description":"Peer name ec2-34-123-123-123.us-west-2.compute.amazonaws.com is not in peer certificate","file":"src/core/lib/security/security_connector/ssl/ssl_security_connector.cc","file_line":64}]}]}]}"

same error when using an IP instead of the domain name.

$ pip freeze
aiogrpc==1.6
googleapis-common-protos==1.5.9
grpcio==1.19.0
grpcio-tools==1.19.0
lndgrpc==0.1.3
protobuf==3.7.1
six==1.12.0

Is there an additional step that needs to be done for TSL other then just copying over the "tls.cert" file?

Update channel max message length

Need to update max size based on lightningnetwork/lnd#2374

Update the channel creation to include the following options

channel = self.grpc_module.secure_channel(self.ip_address, self._credentials, options=[('grpc.max_receive_message_length',1024*1024*50)])

Failed to build grpcio

When attempting to install with poetry, the install fails with the following output

$ poetry add lndgrpc
Using version ^0.2.0 for lndgrpc

Updating dependencies
Resolving dependencies...


Package operations: 6 installs, 0 updates, 0 removals

  - Installing grpcio (1.28.1)

[EnvCommandError]
Command ['/home/harshagoli/.cache/pypoetry/virtualenvs/ssss-OIb19DJR-py3.8/bin/pip', 'install', '--no-deps', 'grpcio==1.28.1'] errored with the following return code 1, and output: 
Collecting grpcio==1.28.1
  Using cached https://files.pythonhosted.org/packages/cf/7a/9744998129fce7e29c5f2d8b0f545913b7383e65d8366fc0ae98d11936af/grpcio-1.28.1.tar.gz
Building wheels for collected packages: grpcio
  Running setup.py bdist_wheel for grpcio: started
  Running setup.py bdist_wheel for grpcio: finished with status 'error'
  Complete output from command /home/harshagoli/.cache/pypoetry/virtualenvs/ssss-OIb19DJR-py3.8/bin/python3.8 -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-blmpju7c/grpcio/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" bdist_wheel -d /tmp/pip-wheel-sf96qkno --python-tag cp38:
  Found cython-generated files...
  usage: -c [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
     or: -c --help [cmd1 cmd2 ...]
     or: -c --help-commands
     or: -c cmd --help
  
  error: invalid command 'bdist_wheel'
  
  ----------------------------------------
  Failed building wheel for grpcio
  Running setup.py clean for grpcio
Failed to build grpcio
Installing collected packages: grpcio
  Running setup.py install for grpcio: started
    Running setup.py install for grpcio: finished with status 'error'
    Complete output from command /home/harshagoli/.cache/pypoetry/virtualenvs/ssss-OIb19DJR-py3.8/bin/python3.8 -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-blmpju7c/grpcio/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-record-35xfnf7n/install-record.txt --single-version-externally-managed --compile --install-headers /home/harshagoli/.cache/pypoetry/virtualenvs/ssss-OIb19DJR-py3.8/include/site/python3.8/grpcio:
    Found cython-generated files...
    running install
    running build
    running build_py
    running build_project_metadata
    creating python_build
    creating python_build/lib.linux-x86_64-3.8
    creating python_build/lib.linux-x86_64-3.8/grpc
    copying src/python/grpcio/grpc/_utilities.py -> python_build/lib.linux-x86_64-3.8/grpc
    copying src/python/grpcio/grpc/_server.py -> python_build/lib.linux-x86_64-3.8/grpc
    copying src/python/grpcio/grpc/_channel.py -> python_build/lib.linux-x86_64-3.8/grpc
    copying src/python/grpcio/grpc/_simple_stubs.py -> python_build/lib.linux-x86_64-3.8/grpc
    copying src/python/grpcio/grpc/__init__.py -> python_build/lib.linux-x86_64-3.8/grpc
    copying src/python/grpcio/grpc/_plugin_wrapping.py -> python_build/lib.linux-x86_64-3.8/grpc
    copying src/python/grpcio/grpc/_common.py -> python_build/lib.linux-x86_64-3.8/grpc
    copying src/python/grpcio/grpc/_grpcio_metadata.py -> python_build/lib.linux-x86_64-3.8/grpc
    copying src/python/grpcio/grpc/_compression.py -> python_build/lib.linux-x86_64-3.8/grpc
    copying src/python/grpcio/grpc/_interceptor.py -> python_build/lib.linux-x86_64-3.8/grpc
    copying src/python/grpcio/grpc/_auth.py -> python_build/lib.linux-x86_64-3.8/grpc
    creating python_build/lib.linux-x86_64-3.8/grpc/experimental
    copying src/python/grpcio/grpc/experimental/gevent.py -> python_build/lib.linux-x86_64-3.8/grpc/experimental
    copying src/python/grpcio/grpc/experimental/__init__.py -> python_build/lib.linux-x86_64-3.8/grpc/experimental
    copying src/python/grpcio/grpc/experimental/session_cache.py -> python_build/lib.linux-x86_64-3.8/grpc/experimental
    creating python_build/lib.linux-x86_64-3.8/grpc/beta
    copying src/python/grpcio/grpc/beta/_client_adaptations.py -> python_build/lib.linux-x86_64-3.8/grpc/beta
    copying src/python/grpcio/grpc/beta/implementations.py -> python_build/lib.linux-x86_64-3.8/grpc/beta
    copying src/python/grpcio/grpc/beta/interfaces.py -> python_build/lib.linux-x86_64-3.8/grpc/beta
    copying src/python/grpcio/grpc/beta/_metadata.py -> python_build/lib.linux-x86_64-3.8/grpc/beta
    copying src/python/grpcio/grpc/beta/_server_adaptations.py -> python_build/lib.linux-x86_64-3.8/grpc/beta
    copying src/python/grpcio/grpc/beta/__init__.py -> python_build/lib.linux-x86_64-3.8/grpc/beta
    copying src/python/grpcio/grpc/beta/utilities.py -> python_build/lib.linux-x86_64-3.8/grpc/beta
    creating python_build/lib.linux-x86_64-3.8/grpc/_cython
    copying src/python/grpcio/grpc/_cython/__init__.py -> python_build/lib.linux-x86_64-3.8/grpc/_cython
    creating python_build/lib.linux-x86_64-3.8/grpc/framework
    copying src/python/grpcio/grpc/framework/__init__.py -> python_build/lib.linux-x86_64-3.8/grpc/framework
    creating python_build/lib.linux-x86_64-3.8/grpc/experimental/aio
    copying src/python/grpcio/grpc/experimental/aio/_server.py -> python_build/lib.linux-x86_64-3.8/grpc/experimental/aio
    copying src/python/grpcio/grpc/experimental/aio/_channel.py -> python_build/lib.linux-x86_64-3.8/grpc/experimental/aio
    copying src/python/grpcio/grpc/experimental/aio/__init__.py -> python_build/lib.linux-x86_64-3.8/grpc/experimental/aio
    copying src/python/grpcio/grpc/experimental/aio/_base_server.py -> python_build/lib.linux-x86_64-3.8/grpc/experimental/aio
    copying src/python/grpcio/grpc/experimental/aio/_utils.py -> python_build/lib.linux-x86_64-3.8/grpc/experimental/aio
    copying src/python/grpcio/grpc/experimental/aio/_call.py -> python_build/lib.linux-x86_64-3.8/grpc/experimental/aio
    copying src/python/grpcio/grpc/experimental/aio/_base_channel.py -> python_build/lib.linux-x86_64-3.8/grpc/experimental/aio
    copying src/python/grpcio/grpc/experimental/aio/_base_call.py -> python_build/lib.linux-x86_64-3.8/grpc/experimental/aio
    copying src/python/grpcio/grpc/experimental/aio/_interceptor.py -> python_build/lib.linux-x86_64-3.8/grpc/experimental/aio
    copying src/python/grpcio/grpc/experimental/aio/_typing.py -> python_build/lib.linux-x86_64-3.8/grpc/experimental/aio
    creating python_build/lib.linux-x86_64-3.8/grpc/_cython/_cygrpc
    copying src/python/grpcio/grpc/_cython/_cygrpc/__init__.py -> python_build/lib.linux-x86_64-3.8/grpc/_cython/_cygrpc
    creating python_build/lib.linux-x86_64-3.8/grpc/framework/foundation
    copying src/python/grpcio/grpc/framework/foundation/abandonment.py -> python_build/lib.linux-x86_64-3.8/grpc/framework/foundation
    copying src/python/grpcio/grpc/framework/foundation/__init__.py -> python_build/lib.linux-x86_64-3.8/grpc/framework/foundation
    copying src/python/grpcio/grpc/framework/foundation/future.py -> python_build/lib.linux-x86_64-3.8/grpc/framework/foundation
    copying src/python/grpcio/grpc/framework/foundation/callable_util.py -> python_build/lib.linux-x86_64-3.8/grpc/framework/foundation
    copying src/python/grpcio/grpc/framework/foundation/stream.py -> python_build/lib.linux-x86_64-3.8/grpc/framework/foundation
    copying src/python/grpcio/grpc/framework/foundation/stream_util.py -> python_build/lib.linux-x86_64-3.8/grpc/framework/foundation
    copying src/python/grpcio/grpc/framework/foundation/logging_pool.py -> python_build/lib.linux-x86_64-3.8/grpc/framework/foundation
    creating python_build/lib.linux-x86_64-3.8/grpc/framework/common
    copying src/python/grpcio/grpc/framework/common/__init__.py -> python_build/lib.linux-x86_64-3.8/grpc/framework/common
    copying src/python/grpcio/grpc/framework/common/cardinality.py -> python_build/lib.linux-x86_64-3.8/grpc/framework/common
    copying src/python/grpcio/grpc/framework/common/style.py -> python_build/lib.linux-x86_64-3.8/grpc/framework/common
    creating python_build/lib.linux-x86_64-3.8/grpc/framework/interfaces
    copying src/python/grpcio/grpc/framework/interfaces/__init__.py -> python_build/lib.linux-x86_64-3.8/grpc/framework/interfaces
    creating python_build/lib.linux-x86_64-3.8/grpc/framework/interfaces/base
    copying src/python/grpcio/grpc/framework/interfaces/base/base.py -> python_build/lib.linux-x86_64-3.8/grpc/framework/interfaces/base
    copying src/python/grpcio/grpc/framework/interfaces/base/__init__.py -> python_build/lib.linux-x86_64-3.8/grpc/framework/interfaces/base
    copying src/python/grpcio/grpc/framework/interfaces/base/utilities.py -> python_build/lib.linux-x86_64-3.8/grpc/framework/interfaces/base
    creating python_build/lib.linux-x86_64-3.8/grpc/framework/interfaces/face
    copying src/python/grpcio/grpc/framework/interfaces/face/__init__.py -> python_build/lib.linux-x86_64-3.8/grpc/framework/interfaces/face
    copying src/python/grpcio/grpc/framework/interfaces/face/face.py -> python_build/lib.linux-x86_64-3.8/grpc/framework/interfaces/face
    copying src/python/grpcio/grpc/framework/interfaces/face/utilities.py -> python_build/lib.linux-x86_64-3.8/grpc/framework/interfaces/face
    creating python_build/lib.linux-x86_64-3.8/grpc/_cython/_credentials
    copying src/python/grpcio/grpc/_cython/_credentials/roots.pem -> python_build/lib.linux-x86_64-3.8/grpc/_cython/_credentials
    running build_ext
    Found cython-generated files...
    building 'grpc._cython.cygrpc' extension
    creating python_build/temp.linux-x86_64-3.8
    creating python_build/temp.linux-x86_64-3.8/src
    creating python_build/temp.linux-x86_64-3.8/src/python
    creating python_build/temp.linux-x86_64-3.8/src/python/grpcio
    creating python_build/temp.linux-x86_64-3.8/src/python/grpcio/grpc
    creating python_build/temp.linux-x86_64-3.8/src/python/grpcio/grpc/_cython
    creating python_build/temp.linux-x86_64-3.8/src/core
    creating python_build/temp.linux-x86_64-3.8/src/core/ext
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/filters
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/filters/census
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/filters/client_channel
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/filters/client_channel/health
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/filters/client_channel/lb_policy
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/filters/client_channel/lb_policy/grpclb
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/filters/client_channel/lb_policy/pick_first
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/filters/client_channel/lb_policy/round_robin
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/filters/client_channel/lb_policy/xds
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/filters/client_channel/resolver
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/filters/client_channel/resolver/dns
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/filters/client_channel/resolver/dns/c_ares
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/filters/client_channel/resolver/dns/native
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/filters/client_channel/resolver/fake
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/filters/client_channel/resolver/sockaddr
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/filters/client_channel/resolver/xds
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/filters/client_channel/xds
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/filters/client_idle
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/filters/deadline
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/filters/http
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/filters/http/client
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/filters/http/message_compress
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/filters/http/server
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/filters/max_age
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/filters/message_size
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/filters/workarounds
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/transport
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/transport/chttp2
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/transport/chttp2/alpn
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/transport/chttp2/client
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/transport/chttp2/client/insecure
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/transport/chttp2/client/secure
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/transport/chttp2/server
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/transport/chttp2/server/insecure
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/transport/chttp2/server/secure
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/transport/chttp2/transport
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/transport/inproc
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/upb-generated
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/upb-generated/envoy
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/upb-generated/envoy/annotations
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/upb-generated/envoy/api
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/upb-generated/envoy/api/v2
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/upb-generated/envoy/api/v2/auth
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/upb-generated/envoy/api/v2/cluster
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/upb-generated/envoy/api/v2/core
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/upb-generated/envoy/api/v2/endpoint
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/upb-generated/envoy/api/v2/listener
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/upb-generated/envoy/api/v2/route
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/upb-generated/envoy/config
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/upb-generated/envoy/config/filter
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/upb-generated/envoy/config/filter/accesslog
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/upb-generated/envoy/config/filter/network
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/upb-generated/envoy/config/listener
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/upb-generated/envoy/config/listener/v2
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/upb-generated/envoy/service
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/upb-generated/envoy/service/discovery
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/upb-generated/envoy/service/discovery/v2
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/upb-generated/envoy/service/load_stats
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/upb-generated/envoy/service/load_stats/v2
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/upb-generated/envoy/type
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/upb-generated/envoy/type/matcher
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/upb-generated/envoy/type/metadata
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/upb-generated/envoy/type/metadata/v2
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/upb-generated/envoy/type/tracing
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/upb-generated/envoy/type/tracing/v2
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/upb-generated/gogoproto
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/upb-generated/google
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/upb-generated/google/api
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/upb-generated/google/protobuf
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/upb-generated/google/rpc
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/upb-generated/src
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/upb-generated/src/proto
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/upb-generated/src/proto/grpc
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/upb-generated/src/proto/grpc/gcp
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/upb-generated/src/proto/grpc/health
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/upb-generated/src/proto/grpc/health/v1
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/upb-generated/src/proto/grpc/lb
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/upb-generated/src/proto/grpc/lb/v1
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/upb-generated/udpa
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/upb-generated/udpa/annotations
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/upb-generated/udpa/data
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/upb-generated/udpa/data/orca
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/upb-generated/udpa/data/orca/v1
    creating python_build/temp.linux-x86_64-3.8/src/core/ext/upb-generated/validate
    creating python_build/temp.linux-x86_64-3.8/src/core/lib
    creating python_build/temp.linux-x86_64-3.8/src/core/lib/avl
    creating python_build/temp.linux-x86_64-3.8/src/core/lib/backoff
    creating python_build/temp.linux-x86_64-3.8/src/core/lib/channel
    creating python_build/temp.linux-x86_64-3.8/src/core/lib/compression
    creating python_build/temp.linux-x86_64-3.8/src/core/lib/debug
    creating python_build/temp.linux-x86_64-3.8/src/core/lib/gpr
    creating python_build/temp.linux-x86_64-3.8/src/core/lib/gprpp
    creating python_build/temp.linux-x86_64-3.8/src/core/lib/http
    creating python_build/temp.linux-x86_64-3.8/src/core/lib/iomgr
    creating python_build/temp.linux-x86_64-3.8/src/core/lib/iomgr/executor
    creating python_build/temp.linux-x86_64-3.8/src/core/lib/iomgr/poller
    creating python_build/temp.linux-x86_64-3.8/src/core/lib/json
    creating python_build/temp.linux-x86_64-3.8/src/core/lib/profiling
    creating python_build/temp.linux-x86_64-3.8/src/core/lib/security
    creating python_build/temp.linux-x86_64-3.8/src/core/lib/security/context
    creating python_build/temp.linux-x86_64-3.8/src/core/lib/security/credentials
    creating python_build/temp.linux-x86_64-3.8/src/core/lib/security/credentials/alts
    creating python_build/temp.linux-x86_64-3.8/src/core/lib/security/credentials/composite
    creating python_build/temp.linux-x86_64-3.8/src/core/lib/security/credentials/fake
    creating python_build/temp.linux-x86_64-3.8/src/core/lib/security/credentials/google_default
    creating python_build/temp.linux-x86_64-3.8/src/core/lib/security/credentials/iam
    creating python_build/temp.linux-x86_64-3.8/src/core/lib/security/credentials/jwt
    creating python_build/temp.linux-x86_64-3.8/src/core/lib/security/credentials/local
    creating python_build/temp.linux-x86_64-3.8/src/core/lib/security/credentials/oauth2
    creating python_build/temp.linux-x86_64-3.8/src/core/lib/security/credentials/plugin
    creating python_build/temp.linux-x86_64-3.8/src/core/lib/security/credentials/ssl
    creating python_build/temp.linux-x86_64-3.8/src/core/lib/security/credentials/tls
    creating python_build/temp.linux-x86_64-3.8/src/core/lib/security/security_connector
    creating python_build/temp.linux-x86_64-3.8/src/core/lib/security/security_connector/alts
    creating python_build/temp.linux-x86_64-3.8/src/core/lib/security/security_connector/fake
    creating python_build/temp.linux-x86_64-3.8/src/core/lib/security/security_connector/local
    creating python_build/temp.linux-x86_64-3.8/src/core/lib/security/security_connector/ssl
    creating python_build/temp.linux-x86_64-3.8/src/core/lib/security/security_connector/tls
    creating python_build/temp.linux-x86_64-3.8/src/core/lib/security/transport
    creating python_build/temp.linux-x86_64-3.8/src/core/lib/security/util
    creating python_build/temp.linux-x86_64-3.8/src/core/lib/slice
    creating python_build/temp.linux-x86_64-3.8/src/core/lib/surface
    creating python_build/temp.linux-x86_64-3.8/src/core/lib/transport
    creating python_build/temp.linux-x86_64-3.8/src/core/lib/uri
    creating python_build/temp.linux-x86_64-3.8/src/core/plugin_registry
    creating python_build/temp.linux-x86_64-3.8/src/core/tsi
    creating python_build/temp.linux-x86_64-3.8/src/core/tsi/alts
    creating python_build/temp.linux-x86_64-3.8/src/core/tsi/alts/crypt
    creating python_build/temp.linux-x86_64-3.8/src/core/tsi/alts/frame_protector
    creating python_build/temp.linux-x86_64-3.8/src/core/tsi/alts/handshaker
    creating python_build/temp.linux-x86_64-3.8/src/core/tsi/alts/zero_copy_frame_protector
    creating python_build/temp.linux-x86_64-3.8/src/core/tsi/ssl
    creating python_build/temp.linux-x86_64-3.8/src/core/tsi/ssl/session_cache
    creating python_build/temp.linux-x86_64-3.8/third_party
    creating python_build/temp.linux-x86_64-3.8/third_party/abseil-cpp
    creating python_build/temp.linux-x86_64-3.8/third_party/abseil-cpp/absl
    creating python_build/temp.linux-x86_64-3.8/third_party/abseil-cpp/absl/base
    creating python_build/temp.linux-x86_64-3.8/third_party/abseil-cpp/absl/base/internal
    creating python_build/temp.linux-x86_64-3.8/third_party/abseil-cpp/absl/numeric
    creating python_build/temp.linux-x86_64-3.8/third_party/abseil-cpp/absl/strings
    creating python_build/temp.linux-x86_64-3.8/third_party/abseil-cpp/absl/strings/internal
    creating python_build/temp.linux-x86_64-3.8/third_party/abseil-cpp/absl/strings/internal/str_format
    creating python_build/temp.linux-x86_64-3.8/third_party/abseil-cpp/absl/types
    creating python_build/temp.linux-x86_64-3.8/third_party/address_sorting
    creating python_build/temp.linux-x86_64-3.8/third_party/boringssl-with-bazel
    creating python_build/temp.linux-x86_64-3.8/third_party/boringssl-with-bazel/src
    creating python_build/temp.linux-x86_64-3.8/third_party/boringssl-with-bazel/src/crypto
    creating python_build/temp.linux-x86_64-3.8/third_party/boringssl-with-bazel/src/crypto/asn1
    creating python_build/temp.linux-x86_64-3.8/third_party/boringssl-with-bazel/src/crypto/base64
    creating python_build/temp.linux-x86_64-3.8/third_party/boringssl-with-bazel/src/crypto/bio
    creating python_build/temp.linux-x86_64-3.8/third_party/boringssl-with-bazel/src/crypto/bn_extra
    creating python_build/temp.linux-x86_64-3.8/third_party/boringssl-with-bazel/src/crypto/buf
    creating python_build/temp.linux-x86_64-3.8/third_party/boringssl-with-bazel/src/crypto/bytestring
    creating python_build/temp.linux-x86_64-3.8/third_party/boringssl-with-bazel/src/crypto/chacha
    creating python_build/temp.linux-x86_64-3.8/third_party/boringssl-with-bazel/src/crypto/cipher_extra
    creating python_build/temp.linux-x86_64-3.8/third_party/boringssl-with-bazel/src/crypto/cmac
    creating python_build/temp.linux-x86_64-3.8/third_party/boringssl-with-bazel/src/crypto/conf
    creating python_build/temp.linux-x86_64-3.8/third_party/boringssl-with-bazel/src/crypto/curve25519
    creating python_build/temp.linux-x86_64-3.8/third_party/boringssl-with-bazel/src/crypto/dh
    creating python_build/temp.linux-x86_64-3.8/third_party/boringssl-with-bazel/src/crypto/digest_extra
    creating python_build/temp.linux-x86_64-3.8/third_party/boringssl-with-bazel/src/crypto/dsa
    creating python_build/temp.linux-x86_64-3.8/third_party/boringssl-with-bazel/src/crypto/ec_extra
    creating python_build/temp.linux-x86_64-3.8/third_party/boringssl-with-bazel/src/crypto/ecdh_extra
    creating python_build/temp.linux-x86_64-3.8/third_party/boringssl-with-bazel/src/crypto/ecdsa_extra
    creating python_build/temp.linux-x86_64-3.8/third_party/boringssl-with-bazel/src/crypto/engine
    creating python_build/temp.linux-x86_64-3.8/third_party/boringssl-with-bazel/src/crypto/err
    creating python_build/temp.linux-x86_64-3.8/third_party/boringssl-with-bazel/src/crypto/evp
    creating python_build/temp.linux-x86_64-3.8/third_party/boringssl-with-bazel/src/crypto/fipsmodule
    creating python_build/temp.linux-x86_64-3.8/third_party/boringssl-with-bazel/src/crypto/hkdf
    creating python_build/temp.linux-x86_64-3.8/third_party/boringssl-with-bazel/src/crypto/hrss
    creating python_build/temp.linux-x86_64-3.8/third_party/boringssl-with-bazel/src/crypto/lhash
    creating python_build/temp.linux-x86_64-3.8/third_party/boringssl-with-bazel/src/crypto/obj
    creating python_build/temp.linux-x86_64-3.8/third_party/boringssl-with-bazel/src/crypto/pem
    creating python_build/temp.linux-x86_64-3.8/third_party/boringssl-with-bazel/src/crypto/pkcs7
    creating python_build/temp.linux-x86_64-3.8/third_party/boringssl-with-bazel/src/crypto/pkcs8
    creating python_build/temp.linux-x86_64-3.8/third_party/boringssl-with-bazel/src/crypto/poly1305
    creating python_build/temp.linux-x86_64-3.8/third_party/boringssl-with-bazel/src/crypto/pool
    creating python_build/temp.linux-x86_64-3.8/third_party/boringssl-with-bazel/src/crypto/rand_extra
    creating python_build/temp.linux-x86_64-3.8/third_party/boringssl-with-bazel/src/crypto/rc4
    creating python_build/temp.linux-x86_64-3.8/third_party/boringssl-with-bazel/src/crypto/rsa_extra
    creating python_build/temp.linux-x86_64-3.8/third_party/boringssl-with-bazel/src/crypto/siphash
    creating python_build/temp.linux-x86_64-3.8/third_party/boringssl-with-bazel/src/crypto/stack
    creating python_build/temp.linux-x86_64-3.8/third_party/boringssl-with-bazel/src/crypto/x509
    creating python_build/temp.linux-x86_64-3.8/third_party/boringssl-with-bazel/src/crypto/x509v3
    creating python_build/temp.linux-x86_64-3.8/third_party/boringssl-with-bazel/src/ssl
    creating python_build/temp.linux-x86_64-3.8/third_party/boringssl-with-bazel/src/third_party
    creating python_build/temp.linux-x86_64-3.8/third_party/boringssl-with-bazel/src/third_party/fiat
    creating python_build/temp.linux-x86_64-3.8/third_party/cares
    creating python_build/temp.linux-x86_64-3.8/third_party/cares/cares
    creating python_build/temp.linux-x86_64-3.8/third_party/upb
    creating python_build/temp.linux-x86_64-3.8/third_party/upb/upb
    creating python_build/temp.linux-x86_64-3.8/third_party/zlib
    x86_64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DOPENSSL_NO_ASM=1 -D_WIN32_WINNT=1536 -DGPR_BACKWARDS_COMPATIBILITY_MODE=1 -DHAVE_CONFIG_H=1 -DGRPC_ENABLE_FORK_SUPPORT=1 -DPyMODINIT_FUNC=extern "C" __attribute__((visibility ("default"))) PyObject* -DGRPC_POSIX_FORK_ALLOW_PTHREAD_ATFORK=1 -Isrc/python/grpcio -Iinclude -I. -Ithird_party/abseil-cpp -Ithird_party/address_sorting/include -Ithird_party/cares -Ithird_party/cares/cares -Ithird_party/cares/config_linux -Ithird_party/boringssl-with-bazel/src/include -Ithird_party/upb -Isrc/core/ext/upb-generated -Ithird_party/zlib -I/home/harshagoli/.cache/pypoetry/virtualenvs/ssss-OIb19DJR-py3.8/include -I/usr/include/python3.8 -c src/python/grpcio/grpc/_cython/cygrpc.cpp -o python_build/temp.linux-x86_64-3.8/src/python/grpcio/grpc/_cython/cygrpc.o -std=c++11 -std=gnu99 -fvisibility=hidden -fno-wrapv -fno-exceptions -pthread
    cc1plus: warning: command line option ‘-std=gnu99’ is valid for C/ObjC but not for C++
    src/python/grpcio/grpc/_cython/cygrpc.cpp:910:10: fatal error: Python.h: No such file or directory
      910 | #include "Python.h"
          |          ^~~~~~~~~~
    compilation terminated.
    creating tmp
    creating tmp/tmpsifju9d4
    x86_64-linux-gnu-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -g -fwrapv -O2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/home/harshagoli/.cache/pypoetry/virtualenvs/ssss-OIb19DJR-py3.8/include -I/usr/include/python3.8 -c /tmp/tmpsifju9d4/a.c -o tmp/tmpsifju9d4/a.o
    /tmp/tmpsifju9d4/a.c:2:10: fatal error: Python.h: No such file or directory
        2 | #include <Python.h>
          |          ^~~~~~~~~~
    compilation terminated.
    
    Could not find <Python.h>. This could mean the following:
      * You're on Ubuntu and haven't run `apt-get install python-dev`.
      * You're on RHEL/Fedora and haven't run `yum install python-devel` or
        `dnf install python-devel` (make sure you also have redhat-rpm-config
        installed)
      * You're on Mac OS X and the usual Python framework was somehow corrupted
        (check your environment variables or try re-installing?)
      * You're on Windows and your Python installation was somehow corrupted
        (check your environment variables or try re-installing?)
    Traceback (most recent call last):
      File "/usr/lib/python3.8/distutils/unixccompiler.py", line 117, in _compile
        self.spawn(compiler_so + cc_args + [src, '-o', obj] +
      File "/tmp/pip-install-blmpju7c/grpcio/src/python/grpcio/_spawn_patch.py", line 54, in _commandfile_spawn
        _classic_spawn(self, command)
      File "/usr/lib/python3.8/distutils/ccompiler.py", line 910, in spawn
        spawn(cmd, dry_run=self.dry_run)
      File "/usr/lib/python3.8/distutils/spawn.py", line 36, in spawn
        _spawn_posix(cmd, search_path, dry_run=dry_run)
      File "/usr/lib/python3.8/distutils/spawn.py", line 157, in _spawn_posix
        raise DistutilsExecError(
    distutils.errors.DistutilsExecError: command 'x86_64-linux-gnu-gcc' failed with exit status 1
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/tmp/pip-install-blmpju7c/grpcio/src/python/grpcio/commands.py", line 262, in build_extensions
        build_ext.build_ext.build_extensions(self)
      File "/usr/lib/python3.8/distutils/command/build_ext.py", line 449, in build_extensions
        self._build_extensions_serial()
      File "/usr/lib/python3.8/distutils/command/build_ext.py", line 474, in _build_extensions_serial
        self.build_extension(ext)
      File "/home/harshagoli/.cache/pypoetry/virtualenvs/ssss-OIb19DJR-py3.8/lib/python3.8/site-packages/setuptools/command/build_ext.py", line 199, in build_extension
        _build_ext.build_extension(self, ext)
      File "/usr/lib/python3.8/distutils/command/build_ext.py", line 528, in build_extension
        objects = self.compiler.compile(sources,
      File "/usr/lib/python3.8/distutils/ccompiler.py", line 574, in compile
        self._compile(obj, src, ext, cc_args, extra_postargs, pp_opts)
      File "/tmp/pip-install-blmpju7c/grpcio/src/python/grpcio/commands.py", line 245, in new_compile
        return old_compile(obj, src, ext, cc_args, extra_postargs,
      File "/usr/lib/python3.8/distutils/unixccompiler.py", line 120, in _compile
        raise CompileError(msg)
    distutils.errors.CompileError: command 'x86_64-linux-gnu-gcc' failed with exit status 1
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-install-blmpju7c/grpcio/setup.py", line 384, in <module>
        setuptools.setup(
      File "/home/harshagoli/.cache/pypoetry/virtualenvs/ssss-OIb19DJR-py3.8/lib/python3.8/site-packages/setuptools/__init__.py", line 145, in setup
        return distutils.core.setup(**attrs)
      File "/usr/lib/python3.8/distutils/core.py", line 148, in setup
        dist.run_commands()
      File "/usr/lib/python3.8/distutils/dist.py", line 966, in run_commands
        self.run_command(cmd)
      File "/usr/lib/python3.8/distutils/dist.py", line 985, in run_command
        cmd_obj.run()
      File "/home/harshagoli/.cache/pypoetry/virtualenvs/ssss-OIb19DJR-py3.8/lib/python3.8/site-packages/setuptools/command/install.py", line 61, in run
        return orig.install.run(self)
      File "/usr/lib/python3.8/distutils/command/install.py", line 589, in run
        self.run_command('build')
      File "/usr/lib/python3.8/distutils/cmd.py", line 313, in run_command
        self.distribution.run_command(command)
      File "/usr/lib/python3.8/distutils/dist.py", line 985, in run_command
        cmd_obj.run()
      File "/usr/lib/python3.8/distutils/command/build.py", line 135, in run
        self.run_command(cmd_name)
      File "/usr/lib/python3.8/distutils/cmd.py", line 313, in run_command
        self.distribution.run_command(command)
      File "/usr/lib/python3.8/distutils/dist.py", line 985, in run_command
        cmd_obj.run()
      File "/home/harshagoli/.cache/pypoetry/virtualenvs/ssss-OIb19DJR-py3.8/lib/python3.8/site-packages/setuptools/command/build_ext.py", line 78, in run
        _build_ext.run(self)
      File "/usr/lib/python3.8/distutils/command/build_ext.py", line 340, in run
        self.build_extensions()
      File "/tmp/pip-install-blmpju7c/grpcio/src/python/grpcio/commands.py", line 265, in build_extensions
        support.diagnose_build_ext_error(self, error, formatted_exception)
      File "/tmp/pip-install-blmpju7c/grpcio/src/python/grpcio/support.py", line 111, in diagnose_build_ext_error
        diagnostic(build_ext, error)
      File "/tmp/pip-install-blmpju7c/grpcio/src/python/grpcio/support.py", line 70, in diagnose_compile_error
        _expect_compile(build_ext.compiler, c_check, message)
      File "/tmp/pip-install-blmpju7c/grpcio/src/python/grpcio/support.py", line 62, in _expect_compile
        raise commands.CommandError(
    commands.CommandError: Diagnostics found a compilation environment issue:
    
    Could not find <Python.h>. This could mean the following:
      * You're on Ubuntu and haven't run `apt-get install python-dev`.
      * You're on RHEL/Fedora and haven't run `yum install python-devel` or
        `dnf install python-devel` (make sure you also have redhat-rpm-config
        installed)
      * You're on Mac OS X and the usual Python framework was somehow corrupted
        (check your environment variables or try re-installing?)
      * You're on Windows and your Python installation was somehow corrupted
        (check your environment variables or try re-installing?)
    
    
    ----------------------------------------
Command "/home/harshagoli/.cache/pypoetry/virtualenvs/ssss-OIb19DJR-py3.8/bin/python3.8 -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-blmpju7c/grpcio/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-record-35xfnf7n/install-record.txt --single-version-externally-managed --compile --install-headers /home/harshagoli/.cache/pypoetry/virtualenvs/ssss-OIb19DJR-py3.8/include/site/python3.8/grpcio" failed with error code 1 in /tmp/pip-install-blmpju7c/grpcio/

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.