Giter Club home page Giter Club logo

openwhisk-runtime-python's Introduction

Apache OpenWhisk Runtimes for Python

License Continuous Integration

This repository contains sources files needed to build the Python runtimes for Apache OpenWhisk. The build system will produce a series of docker images for each runtime version. These images are used in the platform to execute Python actions.

The following Python runtime versions (with kind & image labels) are generated by the build system:

  • Python 3.9 (python:3.9 & openwhisk/action-python-v3.9)
  • Python 3.10 (python:3.10 & openwhisk/action-python-v3.10)
  • Python 3.11 (python:3.11 & openwhisk/action-python-v3.11)
  • Python 3.12 (python:3.12 & openwhisk/action-python-v3.12)

This README documents the build, customization and testing of these runtime images.

So a very simple hello world function would be:

def main(args):
    name = args.get("name", "stranger")
    greeting = "Hello " + name + "!"
    print(greeting)
    return {"greeting": greeting}

For the return result, not only support dictionary but also support array

So a very simple hello array function would be:

def main(args):
    return ["a", "b"]

And support array result for sequence action as well, the first action's array result can be used as next action's input parameter.

So the function can be:

def main(args):
    return args

To learn more about using Python actions to build serverless applications, check out the main project documentation here.

Build Python Runtime

There are two options to build the Python runtime:

  • Build using Docker
  • Build using Gradle

Build Python Runtime using Docker

The runtimes can be built using Docker locally. Please follow the detailed tutorial to build and test the runtime locally.

Building Python Runtime using Gradle

Pre-requisites

The runtimes are built using Gradle. The file settings.gradle lists the images that are built by default.

To build all those images, run the following command.

./gradlew distDocker

You can optionally build a specific image by modifying the gradle command. For example:

./gradlew core:python311Action:distDocker

The build will produce Docker images such as action-python-v3.11 and will also tag the same image with the whisk/ prefix. The latter is a convenience, which if you're testing with a local OpenWhisk stack, allows you to skip pushing the image to Docker Hub.

The image will need to be pushed to Docker Hub if you want to test it with a hosted OpenWhisk installation.

Using Gradle to push to a Docker Registry

The Gradle build parameters dockerImagePrefix and dockerRegistry can be configured for your Docker Registry. Make sure you are logged in first with the docker CLI.

  • Use the docker CLI to login. The following assumes you will substitute $DOCKER_USER with an appropriate value.

    docker login --username $DOCKER_USER
    
  • Now build, tag and push the image accordingly.

    ./gradlew distDocker -PdockerImagePrefix=$DOCKER_USER -PdockerRegistry=docker.io
    

Using Your Image as an OpenWhisk Action

You can now use this image as an OpenWhisk action. For example, to use the image action-python-v3.11 as an action runtime, you would run the following command.

wsk action update myAction myAction.py --docker $DOCKER_USER/action-python-v3.11

Test Runtimes

There are suites of tests that are generic for all runtimes, and some that are specific to a runtime version. To run all tests, there are two steps.

First, you need to create an OpenWhisk snapshot release. Do this from your OpenWhisk home directory.

./gradlew install

Now you can build and run the tests in this repository.

./gradlew tests:test

Gradle allows you to selectively run tests. For example, the following command runs tests which match the given pattern and excludes all others.

./gradlew :tests:test --tests Python*Tests

Using additional python libraries

If you need more libraries for your Python action, you can include a virtualenv in the zip file of the action.

The requirement is that the zip file must have a subfolder named virtualenv with a script virtualenv\bin\activate_this.py working in an Linux AMD64 environment. It will be executed at start time to use your extra libraries.

Using requirements.txt

Python virtual environments are typically built by installing dependencies listed in a requirements.txt file. If you have an action that requires additional libraries, you can include a requirements.txt file.

You have to create a folder myaction with at least two files:

__main__.py
requirements.txt

Then zip your action and deploy to OpenWhisk, the requirements will be installed for you at init time, creating a suitable virtualenv.

Keep in mind that resolving requirements involves downloading and install software, so your action timeout limit may need to be adjusted accordingly. Instead, you should consider using precompilation to resolve the requirements at build time.

Precompilation of a virtualenv

The action containers can actually generate a virtualenv for you, provided you have a requirements.txt.

If you have an action in the format described before (with a requirements.txt) you can build the zip file with the included files with:

zip -j -r myaction | docker run -i action-python-v3.11 -compile main > myaction.zip

You may use v3.11, v3.10, or v3.9 according to your Python version needs.

The resulting action includes a virtualenv already built for you and that is fast to deploy and start as all the dependencies are already resolved. Note that there is a limit on the size of the zip file and this approach will not work for installing large libraries like Pandas or Numpy, instead build a custom docker image that includes these libraries.

openwhisk-runtime-python's People

Contributors

cbickel avatar chetanmeh avatar csantanapr avatar ddragosd avatar dgrove-oss avatar dubee avatar eweiter avatar falkzoll avatar fxulusoy avatar ioana-blue avatar jasonpet avatar jbampton avatar jeremiaswerner avatar joachimvaldez avatar luke-roy-ibm avatar markusthoemmes avatar mdeuser avatar mrutkows avatar ningyougang avatar nwspeete-ibm avatar paulcastro avatar perryibm avatar pritidesai avatar psuter avatar rabbah avatar rsulzmann avatar sciabarracom avatar sjfink avatar starpit avatar tysonnorris 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 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

openwhisk-runtime-python's Issues

openwhisk/python2action runtime fails with ImportError

The Python2 runtime using image openwhisk/python2action:latest fails to start with the following exception in logs:

Traceback (most recent call last):
  File "pythonrunner.py", line 26, in <module>
    from actionproxy import ActionRunner, main, setRunner
ImportError: No module named actionproxy

The python3 runtime works as expected.

Steps to reproduce the issue:

  1. wsk action create myAction tests/dat/actions/hello.py --docker openwhisk/python2action:latest
  2. wsk action invoke myAction --blocking

Provide the expected results and outputs:

{
    "greeting": "Hello stranger!"
}

Provide the actual results and outputs:

error: Unable to invoke action 'myAction': The connection failed, or timed out. (HTTP status code 504)

Tests failing with current OpenWhisk

Environment details:

  • local deployment, vagrant, native ubuntu, Mac OS, Bluemix, ...
    MacOs
  • version of docker, vagrant, ubuntu, ...
    Docker version 18.06.1-ce, build e68fc7a

Steps to reproduce the issue:

  1. checkout the repo
  2. initialize the environemt ./tools/travis/setup.sh
  3. ./gradlew test

Provide the expected results and outputs:

All the test should pass

Provide the actual results and outputs:

Two tests fail

runtime.actionContainers.Python2ActionContainerTests > python2action should run zipped Python action containing a virtual environment with non-standard entry point FAILED
java.lang.NoClassDefFoundError: Could not initialize class common.WhiskProperties

runtime.actionContainers.PythonActionContainerTests > python3action should run zipped Python action containing a virtual environment with non-standard entry point FAILED
java.lang.NoClassDefFoundError: Could not initialize class common.TestUtils
at runtime.actionContainers.PythonActionContainerTests.$anonfun$new$10(PythonActionContainerTests.scala:221)

Additional information you deem important:

  • issue happens only occasionally or under certain circumstances
  • changes you did or observed in the environment

Openwhisk incompatibility problem!!

Hello I just find a bug in Openwhisk, when someone creates a zip function containing main.py plus txt files runs fine - but if the zip contains h5 file, the function hangs. Also I want to say that there are not any other files in zip (just using main.py) and the h5 which affecting the function. The concept is that I created a neural network model (format .h5)with tensorflow and Keras I save it and I made it zip with main.py functions (including docker with ml libraries). When I am trying to invoke the action the OS is not responding and I got none response. Any experience how to handle that?

build image error

Hi, sir, the two options both failed , the log is shown below

Step 4/23 : RUN git clone --branch ${GO_PROXY_GITHUB_BRANCH} https://github.com/${GO_PROXY_GITHUB_USER}/openwhisk-runtime-go /src ; cd /src ; env GO111MODULE=on CGO_ENABLED=0 go build main/proxy.go && mv proxy /bin/proxy
---> Running in f3930f0bed2f
Cloning into '/src'...
go: github.com/rs/[email protected]: Get "https://proxy.golang.org/github.com/rs/zerolog/@v/v1.19.0.mod": dial tcp 142.251.43.17:443: i/o timeout
The command '/bin/sh -c git clone --branch ${GO_PROXY_GITHUB_BRANCH} https://github.com/${GO_PROXY_GITHUB_USER}/openwhisk-runtime-go /src ; cd /src ; env GO111MODULE=on CGO_ENABLED=0 go build main/proxy.go && mv proxy /bin/proxy' returned a non-zero code: 1

Any help? thx a lot!!!

action proxy is not in this repo

the structure of the runtimes directory is not ideal - the action proxy is currently in the docker runtime repo which means we have to copy it here (wget inside the dockerfile?) to create a new runtime not based on alpine. is there a better way?

normalize naming to remove actionLoop

All of the python runtimes are now using the Go-based actionLoop runtime.

We should rename core/python3ActionLoop to core/python3Action and rename core/python3AiActionLoop to core/python3AiAction. There are rippling changes in documentation, etc. to get rid of actionLoop throughout this repo.

build image error

when executed ./gradlew core:python2ActionLoop:distDocker, reported below error

go: finding github.com/stretchr/testify v1.3.0
go: finding github.com/rs/zerolog v1.19.0
go: finding github.com/sirupsen/logrus v1.6.0
go: finding github.com/pkg/errors v0.8.1
go: finding github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e
go: finding github.com/rs/xid v1.2.1
go: finding github.com/stretchr/testify v1.2.2
go: finding github.com/konsorten/go-windows-terminal-sequences v1.0.3
go: finding github.com/pmezard/go-difflib v1.0.0
go: finding github.com/davecgh/go-spew v1.1.1
go: finding golang.org/x/tools v0.0.0-20190828213141-aed303cbaa74
go: finding golang.org/x/sys v0.0.0-20190422165155-953cdadca894
go: finding github.com/davecgh/go-spew v1.1.0
go: finding github.com/stretchr/objx v0.1.0
go: golang.org/x/[email protected]: git fetch -f origin refs/heads/*:refs/heads/* refs/tags/*:refs/tags/* in /go/pkg/mod/cache/vcs/76a8992ccba6d77c6bcf031ff2b6d821cf232e4ad8d1f2362404fbd0a798d846: exit status 128:
        error: RPC failed; curl 56 GnuTLS recv error (-54): Error in the pull function.
        fatal: the remote end hung up unexpectedly
        fatal: early EOF
        fatal: index-pack failed
go: error loading module requirements

This codes leads to the error: https://oss.navercorp.com/lambda/lambda-runtime-python/blob/master/core/python2ActionLoop/Dockerfile#L24 : go build main/proxy.go

I created a go.12 container, and executed above command manually, the problem still exist

docker run -it --name go_container golang:1.12 bash
root@e009a60daf3f:/go# GO_PROXY_GITHUB_USER=apache
root@e009a60daf3f:/go# GO_PROXY_GITHUB_BRANCH=master
...
root@e009a60daf3f:/src# go build main/proxy.go
go: finding github.com/rs/zerolog v1.19.0
go: finding github.com/sirupsen/logrus v1.6.0
go: finding github.com/stretchr/testify v1.3.0
go: finding github.com/pkg/errors v0.8.1
go: finding github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e
go: finding github.com/rs/xid v1.2.1
go: finding github.com/stretchr/testify v1.2.2
go: finding github.com/pmezard/go-difflib v1.0.0
go: finding github.com/davecgh/go-spew v1.1.1
go: finding github.com/konsorten/go-windows-terminal-sequences v1.0.3
go: finding golang.org/x/sys v0.0.0-20190422165155-953cdadca894
go: finding golang.org/x/tools v0.0.0-20190828213141-aed303cbaa74
go: finding github.com/davecgh/go-spew v1.1.0
go: finding github.com/stretchr/objx v0.1.0
go: golang.org/x/[email protected]: git fetch -f origin refs/heads/*:refs/heads/* refs/tags/*:refs/tags/* in /go/pkg/mod/cache/vcs/76a8992ccba6d77c6bcf031ff2b6d821cf232e4ad8d1f2362404fbd0a798d846: exit status 128:
	error: RPC failed; curl 56 GnuTLS recv error (-54): Error in the pull function.
	fatal: the remote end hung up unexpectedly
	fatal: early EOF
	fatal: index-pack failed
go: error loading module requirements
root@e009a60daf3f:/src# go get golang.org/x/[email protected]
go: finding golang.org/x/net v0.0.0-20190620200207-3b0461eec859
go: finding golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7
go: finding golang.org/x/sync v0.0.0-20190423024810-112230192c58
go: finding golang.org/x/sys v0.0.0-20190422165155-953cdadca894
go: golang.org/x/[email protected]: git fetch -f origin refs/heads/*:refs/heads/* refs/tags/*:refs/tags/* in /go/pkg/mod/cache/vcs/4a22365141bc4eea5d5ac4a1395e653f2669485db75ef119e7bbec8e19b12a21: exit status 128:
	error: RPC failed; curl 56 GnuTLS recv error (-54): Error in the pull function.
	fatal: the remote end hung up unexpectedly
	fatal: early EOF
	fatal: index-pack failed
go: golang.org/x/[email protected]: git fetch -f https://go.googlesource.com/sys refs/heads/*:refs/heads/* refs/tags/*:refs/tags/* in /go/pkg/mod/cache/vcs/76a8992ccba6d77c6bcf031ff2b6d821cf232e4ad8d1f2362404fbd0a798d846: exit status 128:
	error: RPC failed; curl 56 GnuTLS recv error (-54): Error in the pull function.
	fatal: the remote end hung up unexpectedly
	fatal: early EOF
	fatal: index-pack failed
go: error loading module requirements

Due to our client side didn't modify code, so the problem may come from server side.

action-loop runtime is not exporting env variables correctly

To reproduce:

  1. ./gradlew distDocker
  2. docker run -d -p 8080:8080 actionloop-python-v3.7
  3. /path/to/openwhisk/tools/actionProxy/invoke.py init main test.py '{"SOME_VAR":"abc"}'

where test.py is:

import os
a = os.environ['SOME_VAR']
def main(args):
  return { "SOME_VAR": a }

this fails with:

Traceback (most recent call last):
  File "/action/1/src/exec__.py\, line 43, in ... 
    main__.py line 3... a = os.environ['SOME_VAR']
  File "/usr/local/lib/python3.7/os.py", line 679, in __getitem__
  raise KeyError(key) from None
  KeyError: 'SOME_VAR'

This test should pass. I do not understand what's going with the action loop python proxy to debug this. @sciabarra can you take a look?

Here's a scala unit test https://github.com/apache/openwhisk-runtime-python/compare/master...rabbah:env?expand=1

AI Action example: ImportError: No module named 'inference'

Environment details:

  • Ubuntu 16.04.5
  • Openwhisk deployed on a kubernetes cluster 1.13.1 (via openwhisk-deploy-on-kube)
  • Browser: FireFox 60.4.0
  • Docker version: 17.09.1-ce

Steps to reproduce the issue:

Following instructions at https://github.com/apache/incubator-openwhisk-runtime-python/blob/master/core/python3AiAction/samples/smart-body-crop/crop.ipynb

  1. Invoke:
docker run -it -p 8888:8888 -e OPENWHISK_AUTH=`cat ~/.wskprops | grep ^AUTH= | awk -F= '{print $2}'` -e OPENWHISK_APIHOST=`cat ~/.wskprops | grep ^APIHOST= | awk -F= '{print $2}'` --rm -v `pwd`:/notebooks/sf  --entrypoint jupyter-notebook adobeapiplatform/openwhisk-python3aiaction:0.11.0  --notebook-dir=/notebooks --ip 0.0.0.0 --no-browser --allow-root
  1. Open FireFox and point it to the URL that is output by Jupyter Notebook container.
  2. New -> Notebook: python3
  3. Copy the following block
from matplotlib import pyplot as plt
import matplotlib.patches as patches

%matplotlib inline
from inference import SmartBodyCrop
from PIL import Image
import numpy as np
  1. Hit Run button

Provide the expected results and outputs:

I would expect the code snippet to execute with out errors so that I can proceed with the next step in the instructions.

Provide the actual results and outputs:

ImportError                               Traceback (most recent call last)
<ipython-input-3-04f1958991c8> in <module>()
      3 
      4 get_ipython().run_line_magic('matplotlib', 'inline')
----> 5 from inference import SmartBodyCrop
      6 from PIL import Image
      7 import numpy as np

ImportError: No module named 'inference'

Python dynamic module loading

I'm not sure if this is the appropriate place to ask, but I'm wondering why the Python runtime spawns a subprocess instead of dynamically importing the function.

Did you decide one is better than the other for Python?

Installation of spaCy package is not possible

The python package spacy is not installable using the image openwhisk/python3action:latest.

Environment details:

  • OpenWhisk deployed with helm charts according to the documentation on Kubernetes v1.22.5 provided by Docker Desktop
  • Docker Desktop 4.4.4 (73704)
  • My OS is Windows 10 Version 21H1 (Build 19043.1466)
  • Docker version 20.10.12, build e91ed57

Steps to reproduce the issue:

  1. If not already done, pull openwhisk/python3action:latest
  2. Run docker run -it --entrypoint bash openwhisk/python3action (use prefix winpty if using windows)
  3. try to install spacy by executing pip install spacy (doesnt matter if an empty venv is activated or not, installation fails in both cases)

Provide the expected results and outputs:

pip successfully installs the `spacy` package.

Provide the actual results and outputs:

The installation takes ages and eventually fails with a giant error message. Then it tries another spacy version, fails again and so on..

bash-5.0# pip install spacy
Collecting spacy
  Using cached spacy-3.2.1.tar.gz (1.1 MB)
  Installing build dependencies ... error
  ERROR: Command errored out with exit status 1:
   command: /usr/local/bin/python /usr/local/lib/python3.6/site-packages/pip install --ignore-installed --no-user --prefi
x /tmp/pip-build-env-2gi28qr1/overlay --no-warn-script-location --no-binary :none: --only-binary :none: -i https://pypi.o
rg/simple -- setuptools 'cython>=0.25,<3.0' 'cymem>=2.0.2,<2.1.0' 'preshed>=3.0.2,<3.1.0' 'murmurhash>=0.28.0,<1.1.0' 'th
inc>=8.0.12,<8.1.0' 'blis>=0.4.0,<0.8.0' pathy 'numpy>=1.15.0'
       cwd: None
  Complete output (467 lines):
  Collecting setuptools
    Using cached setuptools-59.6.0-py3-none-any.whl (952 kB)
  Collecting cython<3.0,>=0.25
    Using cached Cython-0.29.27-cp36-cp36m-musllinux_1_1_x86_64.whl (2.0 MB)
  Collecting cymem<2.1.0,>=2.0.2
    Using cached cymem-2.0.6.tar.gz (8.2 kB)
    Installing build dependencies: started
    Installing build dependencies: finished with status 'done'
    Getting requirements to build wheel: started
    Getting requirements to build wheel: finished with status 'done'
    Installing backend dependencies: started
    Installing backend dependencies: finished with status 'done'
    Preparing metadata (pyproject.toml): started
    Preparing metadata (pyproject.toml): finished with status 'done'
  Collecting preshed<3.1.0,>=3.0.2
    Using cached preshed-3.0.6.tar.gz (14 kB)
    Installing build dependencies: started
    Installing build dependencies: finished with status 'error'
    ERROR: Command errored out with exit status 1:
     command: /usr/local/bin/python /usr/local/lib/python3.6/site-packages/pip install --ignore-installed --no-user --pre
fix /tmp/pip-build-env-42wiw3cz/overlay --no-warn-script-location --no-binary :none: --only-binary :none: -i https://pypi
.org/simple -- setuptools 'cython>=0.28' 'cymem>=2.0.2,<2.1.0' 'murmurhash>=0.28.0,<1.1.0'
         cwd: None
    Complete output (92 lines):
    Collecting setuptools
      Using cached setuptools-59.6.0-py3-none-any.whl (952 kB)
    Collecting cython>=0.28
      Using cached Cython-0.29.27-cp36-cp36m-musllinux_1_1_x86_64.whl (2.0 MB)
    Collecting cymem<2.1.0,>=2.0.2
      Using cached cymem-2.0.6.tar.gz (8.2 kB)
      Installing build dependencies: started
      Installing build dependencies: finished with status 'done'
      Getting requirements to build wheel: started
      Getting requirements to build wheel: finished with status 'done'
      Installing backend dependencies: started
      Installing backend dependencies: finished with status 'done'
      Preparing metadata (pyproject.toml): started
      Preparing metadata (pyproject.toml): finished with status 'done'
    Collecting murmurhash<1.1.0,>=0.28.0
      Using cached murmurhash-1.0.6.tar.gz (12 kB)
      Installing build dependencies: started
      Installing build dependencies: finished with status 'done'
      Getting requirements to build wheel: started
      Getting requirements to build wheel: finished with status 'done'
      Installing backend dependencies: started
      Installing backend dependencies: finished with status 'done'
      Preparing metadata (pyproject.toml): started
      Preparing metadata (pyproject.toml): finished with status 'done'
    Building wheels for collected packages: cymem, murmurhash
      Building wheel for cymem (pyproject.toml): started
      Building wheel for cymem (pyproject.toml): finished with status 'error'
      ERROR: Command errored out with exit status 1:
       command: /usr/local/bin/python /usr/local/lib/python3.6/site-packages/pip/_vendor/pep517/in_process/_in_process.py
 build_wheel /tmp/tmpb_m2je78
           cwd: /tmp/pip-install-ahv57u_g/cymem_f26c05fe306949e1ab1cff17a3a51127
      Complete output (22 lines):
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build/lib.linux-x86_64-3.6
      creating build/lib.linux-x86_64-3.6/cymem
      copying cymem/about.py -> build/lib.linux-x86_64-3.6/cymem
      copying cymem/__init__.py -> build/lib.linux-x86_64-3.6/cymem
      package init file 'cymem/tests/__init__.py' not found (or not a regular file)
      creating build/lib.linux-x86_64-3.6/cymem/tests
      copying cymem/tests/test_import.py -> build/lib.linux-x86_64-3.6/cymem/tests
      copying cymem/cymem.pyx -> build/lib.linux-x86_64-3.6/cymem
      copying cymem/__init__.pxd -> build/lib.linux-x86_64-3.6/cymem
      copying cymem/cymem.pxd -> build/lib.linux-x86_64-3.6/cymem
      running build_ext
      building 'cymem.cymem' extension
      creating build/temp.linux-x86_64-3.6
      creating build/temp.linux-x86_64-3.6/cymem
      gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -DTHREAD_STACK_SIZE=0x100000 -fPIC -I/usr/local
/include/python3.6m -I/usr/local/include/python3.6m -c cymem/cymem.cpp -o build/temp.linux-x86_64-3.6/cymem/cymem.o -O3 -
Wno-strict-prototypes -Wno-unused-function
      gcc: fatal error: cannot execute 'cc1plus': execvp: No such file or directory
      compilation terminated.
      error: command 'gcc' failed with exit status 1
      ----------------------------------------
      ERROR: Failed building wheel for cymem
      Building wheel for murmurhash (pyproject.toml): started
      Building wheel for murmurhash (pyproject.toml): finished with status 'error'
      ERROR: Command errored out with exit status 1:
       command: /usr/local/bin/python /usr/local/lib/python3.6/site-packages/pip/_vendor/pep517/in_process/_in_process.py
 build_wheel /tmp/tmpolmdizsb
           cwd: /tmp/pip-install-ahv57u_g/murmurhash_c0239049015c499294a01a81ea1460f9
      Complete output (27 lines):
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build/lib.linux-x86_64-3.6
      creating build/lib.linux-x86_64-3.6/murmurhash
      copying murmurhash/about.py -> build/lib.linux-x86_64-3.6/murmurhash
      copying murmurhash/__init__.py -> build/lib.linux-x86_64-3.6/murmurhash
      creating build/lib.linux-x86_64-3.6/murmurhash/tests
      copying murmurhash/tests/test_import.py -> build/lib.linux-x86_64-3.6/murmurhash/tests
      copying murmurhash/tests/test_against_mmh3.py -> build/lib.linux-x86_64-3.6/murmurhash/tests
      copying murmurhash/tests/__init__.py -> build/lib.linux-x86_64-3.6/murmurhash/tests
      copying murmurhash/mrmr.pyx -> build/lib.linux-x86_64-3.6/murmurhash
      copying murmurhash/__init__.pxd -> build/lib.linux-x86_64-3.6/murmurhash
      copying murmurhash/mrmr.pxd -> build/lib.linux-x86_64-3.6/murmurhash
      creating build/lib.linux-x86_64-3.6/murmurhash/include
      creating build/lib.linux-x86_64-3.6/murmurhash/include/murmurhash
      copying murmurhash/include/murmurhash/MurmurHash2.h -> build/lib.linux-x86_64-3.6/murmurhash/include/murmurhash
      copying murmurhash/include/murmurhash/MurmurHash3.h -> build/lib.linux-x86_64-3.6/murmurhash/include/murmurhash
      running build_ext
      building 'murmurhash.mrmr' extension
      creating build/temp.linux-x86_64-3.6
      creating build/temp.linux-x86_64-3.6/murmurhash
      gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -DTHREAD_STACK_SIZE=0x100000 -fPIC -I/usr/local
/include/python3.6m -I/tmp/pip-install-ahv57u_g/murmurhash_c0239049015c499294a01a81ea1460f9/murmurhash/include -I/usr/loc
al/include/python3.6m -c murmurhash/mrmr.cpp -o build/temp.linux-x86_64-3.6/murmurhash/mrmr.o -O3 -Wno-strict-prototypes
-Wno-unused-function
      gcc: fatal error: cannot execute 'cc1plus': execvp: No such file or directory
      compilation terminated.
      error: command 'gcc' failed with exit status 1
      ----------------------------------------
      ERROR: Failed building wheel for murmurhash
    Failed to build cymem murmurhash
    ERROR: Could not build wheels for cymem, murmurhash, which is required to install pyproject.toml-based projects
    ----------------------------------------
  WARNING: Discarding https://files.pythonhosted.org/packages/c7/2e/f8ad19fa853727dfeee1114ee4ff45f10f259cbddf5cd23289992
c06ccf4/preshed-3.0.6.tar.gz#sha256=fb3b7588a3a0f2f2f1bf3fe403361b2b031212b73a37025aea1df7215af3772a (from https://pypi.o
rg/simple/preshed/). Command errored out with exit status 1: /usr/local/bin/python /usr/local/lib/python3.6/site-packages
/pip install --ignore-installed --no-user --prefix /tmp/pip-build-env-42wiw3cz/overlay --no-warn-script-location --no-bin
ary :none: --only-binary :none: -i https://pypi.org/simple -- setuptools 'cython>=0.28' 'cymem>=2.0.2,<2.1.0' 'murmurhash
>=0.28.0,<1.1.0' Check the logs for full command output.
    Using cached preshed-3.0.5.tar.gz (14 kB)
    Installing build dependencies: started
    Installing build dependencies: finished with status 'error'
    ERROR: Command errored out with exit status 1:
     command: /usr/local/bin/python /usr/local/lib/python3.6/site-packages/pip install --ignore-installed --no-user --pre
fix /tmp/pip-build-env-v0wra3qo/overlay --no-warn-script-location --no-binary :none: --only-binary :none: -i https://pypi
.org/simple -- setuptools 'cython>=0.28' 'cymem>=2.0.2,<2.1.0' 'murmurhash>=0.28.0,<1.1.0'
         cwd: None
    Complete output (92 lines):
    Collecting setuptools
      Using cached setuptools-59.6.0-py3-none-any.whl (952 kB)
    Collecting cython>=0.28
      Using cached Cython-0.29.27-cp36-cp36m-musllinux_1_1_x86_64.whl (2.0 MB)
    Collecting cymem<2.1.0,>=2.0.2
      Using cached cymem-2.0.6.tar.gz (8.2 kB)
      Installing build dependencies: started
      Installing build dependencies: finished with status 'done'
      Getting requirements to build wheel: started
      Getting requirements to build wheel: finished with status 'done'
      Installing backend dependencies: started
      Installing backend dependencies: finished with status 'done'
      Preparing metadata (pyproject.toml): started
      Preparing metadata (pyproject.toml): finished with status 'done'
    Collecting murmurhash<1.1.0,>=0.28.0
      Using cached murmurhash-1.0.6.tar.gz (12 kB)
      Installing build dependencies: started
      Installing build dependencies: finished with status 'done'
      Getting requirements to build wheel: started
      Getting requirements to build wheel: finished with status 'done'
      Installing backend dependencies: started
      Installing backend dependencies: finished with status 'done'
      Preparing metadata (pyproject.toml): started
      Preparing metadata (pyproject.toml): finished with status 'done'
    Building wheels for collected packages: cymem, murmurhash
      Building wheel for cymem (pyproject.toml): started
      Building wheel for cymem (pyproject.toml): finished with status 'error'
      ERROR: Command errored out with exit status 1:
       command: /usr/local/bin/python /usr/local/lib/python3.6/site-packages/pip/_vendor/pep517/in_process/_in_process.py
 build_wheel /tmp/tmp7h2rk9kr
           cwd: /tmp/pip-install-ae5f_mku/cymem_28a2b0ed807d40c4929d2ca57ce61e5c
      Complete output (22 lines):
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build/lib.linux-x86_64-3.6
      creating build/lib.linux-x86_64-3.6/cymem
      copying cymem/about.py -> build/lib.linux-x86_64-3.6/cymem
      copying cymem/__init__.py -> build/lib.linux-x86_64-3.6/cymem
      package init file 'cymem/tests/__init__.py' not found (or not a regular file)
      creating build/lib.linux-x86_64-3.6/cymem/tests
      copying cymem/tests/test_import.py -> build/lib.linux-x86_64-3.6/cymem/tests
      copying cymem/cymem.pyx -> build/lib.linux-x86_64-3.6/cymem
      copying cymem/__init__.pxd -> build/lib.linux-x86_64-3.6/cymem
      copying cymem/cymem.pxd -> build/lib.linux-x86_64-3.6/cymem
      running build_ext
      building 'cymem.cymem' extension
      creating build/temp.linux-x86_64-3.6
      creating build/temp.linux-x86_64-3.6/cymem
      gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -DTHREAD_STACK_SIZE=0x100000 -fPIC -I/usr/local
/include/python3.6m -I/usr/local/include/python3.6m -c cymem/cymem.cpp -o build/temp.linux-x86_64-3.6/cymem/cymem.o -O3 -
Wno-strict-prototypes -Wno-unused-function
      gcc: fatal error: cannot execute 'cc1plus': execvp: No such file or directory
      compilation terminated.
      error: command 'gcc' failed with exit status 1
      ----------------------------------------
      ERROR: Failed building wheel for cymem
      Building wheel for murmurhash (pyproject.toml): started
      Building wheel for murmurhash (pyproject.toml): finished with status 'error'
      ERROR: Command errored out with exit status 1:
       command: /usr/local/bin/python /usr/local/lib/python3.6/site-packages/pip/_vendor/pep517/in_process/_in_process.py
 build_wheel /tmp/tmpr3iwmlih
           cwd: /tmp/pip-install-ae5f_mku/murmurhash_ec986e3bb3104c998236cbfd16697e62
      Complete output (27 lines):
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build/lib.linux-x86_64-3.6
      creating build/lib.linux-x86_64-3.6/murmurhash
      copying murmurhash/about.py -> build/lib.linux-x86_64-3.6/murmurhash
      copying murmurhash/__init__.py -> build/lib.linux-x86_64-3.6/murmurhash
      creating build/lib.linux-x86_64-3.6/murmurhash/tests
      copying murmurhash/tests/test_import.py -> build/lib.linux-x86_64-3.6/murmurhash/tests
      copying murmurhash/tests/test_against_mmh3.py -> build/lib.linux-x86_64-3.6/murmurhash/tests
      copying murmurhash/tests/__init__.py -> build/lib.linux-x86_64-3.6/murmurhash/tests
      copying murmurhash/mrmr.pyx -> build/lib.linux-x86_64-3.6/murmurhash
      copying murmurhash/__init__.pxd -> build/lib.linux-x86_64-3.6/murmurhash
      copying murmurhash/mrmr.pxd -> build/lib.linux-x86_64-3.6/murmurhash
      creating build/lib.linux-x86_64-3.6/murmurhash/include
      creating build/lib.linux-x86_64-3.6/murmurhash/include/murmurhash
      copying murmurhash/include/murmurhash/MurmurHash2.h -> build/lib.linux-x86_64-3.6/murmurhash/include/murmurhash
      copying murmurhash/include/murmurhash/MurmurHash3.h -> build/lib.linux-x86_64-3.6/murmurhash/include/murmurhash
      running build_ext
      building 'murmurhash.mrmr' extension
      creating build/temp.linux-x86_64-3.6
      creating build/temp.linux-x86_64-3.6/murmurhash
      gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -DTHREAD_STACK_SIZE=0x100000 -fPIC -I/usr/local
/include/python3.6m -I/tmp/pip-install-ae5f_mku/murmurhash_ec986e3bb3104c998236cbfd16697e62/murmurhash/include -I/usr/loc
al/include/python3.6m -c murmurhash/mrmr.cpp -o build/temp.linux-x86_64-3.6/murmurhash/mrmr.o -O3 -Wno-strict-prototypes
-Wno-unused-function
      gcc: fatal error: cannot execute 'cc1plus': execvp: No such file or directory
      compilation terminated.
      error: command 'gcc' failed with exit status 1
      ----------------------------------------
      ERROR: Failed building wheel for murmurhash
    Failed to build cymem murmurhash
    ERROR: Could not build wheels for cymem, murmurhash, which is required to install pyproject.toml-based projects
    ----------------------------------------
  WARNING: Discarding https://files.pythonhosted.org/packages/ee/87/cabd3dc3d7ebd9b62252faca25ec5f1fec627ea88ca7ffd2924d0
2e1516e/preshed-3.0.5.tar.gz#sha256=c6d3dba39ed5059aaf99767017b9568c75b2d0780c3481e204b1daecde00360e (from https://pypi.o
rg/simple/preshed/). Command errored out with exit status 1: /usr/local/bin/python /usr/local/lib/python3.6/site-packages
/pip install --ignore-installed --no-user --prefix /tmp/pip-build-env-v0wra3qo/overlay --no-warn-script-location --no-bin
ary :none: --only-binary :none: -i https://pypi.org/simple -- setuptools 'cython>=0.28' 'cymem>=2.0.2,<2.1.0' 'murmurhash
>=0.28.0,<1.1.0' Check the logs for full command output.
    Downloading preshed-3.0.4.tar.gz (170 kB)
    Preparing metadata (setup.py): started
    Preparing metadata (setup.py): finished with status 'error'
    ERROR: Command errored out with exit status 1:
     command: /usr/local/bin/python -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-q3w
y5c7p/preshed_6bd4e10d084947b19396d9d4e6bc27ca/setup.py'"'"'; __file__='"'"'/tmp/pip-install-q3wy5c7p/preshed_6bd4e10d084
947b19396d9d4e6bc27ca/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) els
e io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.cl
ose();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-71fhjpkz
         cwd: /tmp/pip-install-q3wy5c7p/preshed_6bd4e10d084947b19396d9d4e6bc27ca/
    Complete output (61 lines):
      ERROR: Command errored out with exit status 1:
       command: /usr/local/bin/python /usr/local/lib/python3.6/site-packages/pip/_vendor/pep517/in_process/_in_process.py
 build_wheel /tmp/tmpraaszkxl
           cwd: /tmp/pip-wheel-37df507j/cymem_9ed725c320974ec7ab4c5dae1bd3789b
      Complete output (22 lines):
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build/lib.linux-x86_64-3.6
      creating build/lib.linux-x86_64-3.6/cymem
      copying cymem/about.py -> build/lib.linux-x86_64-3.6/cymem
      copying cymem/__init__.py -> build/lib.linux-x86_64-3.6/cymem
      package init file 'cymem/tests/__init__.py' not found (or not a regular file)
      creating build/lib.linux-x86_64-3.6/cymem/tests
      copying cymem/tests/test_import.py -> build/lib.linux-x86_64-3.6/cymem/tests
      copying cymem/cymem.pyx -> build/lib.linux-x86_64-3.6/cymem
      copying cymem/__init__.pxd -> build/lib.linux-x86_64-3.6/cymem
      copying cymem/cymem.pxd -> build/lib.linux-x86_64-3.6/cymem
      running build_ext
      building 'cymem.cymem' extension
      creating build/temp.linux-x86_64-3.6
      creating build/temp.linux-x86_64-3.6/cymem
      gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -DTHREAD_STACK_SIZE=0x100000 -fPIC -I/usr/local
/include/python3.6m -I/usr/local/include/python3.6m -c cymem/cymem.cpp -o build/temp.linux-x86_64-3.6/cymem/cymem.o -O3 -
Wno-strict-prototypes -Wno-unused-function
      gcc: fatal error: cannot execute 'cc1plus': execvp: No such file or directory
      compilation terminated.
      error: command 'gcc' failed with exit status 1
      ----------------------------------------
      ERROR: Failed building wheel for cymem
    ERROR: Failed to build one or more wheels
    Traceback (most recent call last):
      File "/usr/local/lib/python3.6/site-packages/setuptools/installer.py", line 128, in fetch_build_egg
        subprocess.check_call(cmd)
      File "/usr/local/lib/python3.6/subprocess.py", line 311, in check_call
        raise CalledProcessError(retcode, cmd)
    subprocess.CalledProcessError: Command '['/usr/local/bin/python', '-m', 'pip', '--disable-pip-version-check', 'wheel'
, '--no-deps', '-w', '/tmp/tmp5pmq2qj3', '--quiet', 'cymem<2.1.0,>=2.0.2']' returned non-zero 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-q3wy5c7p/preshed_6bd4e10d084947b19396d9d4e6bc27ca/setup.py", line 154, in <module>
        setup_package()
      File "/tmp/pip-install-q3wy5c7p/preshed_6bd4e10d084947b19396d9d4e6bc27ca/setup.py", line 149, in setup_package
        cmdclass={"build_ext": build_ext_subclass},
      File "/usr/local/lib/python3.6/site-packages/setuptools/__init__.py", line 143, in setup
        _install_setup_requires(attrs)
      File "/usr/local/lib/python3.6/site-packages/setuptools/__init__.py", line 138, in _install_setup_requires
        dist.fetch_build_eggs(dist.setup_requires)
      File "/usr/local/lib/python3.6/site-packages/setuptools/dist.py", line 721, in fetch_build_eggs
        replace_conflicting=True,
      File "/usr/local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 783, in resolve
        replace_conflicting=replace_conflicting
      File "/usr/local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 1066, in best_match
        return self.obtain(req, installer)
      File "/usr/local/lib/python3.6/site-packages/pkg_resources/__init__.py", line 1078, in obtain
        return installer(requirement)
      File "/usr/local/lib/python3.6/site-packages/setuptools/dist.py", line 777, in fetch_build_egg
        return fetch_build_egg(self, req)
      File "/usr/local/lib/python3.6/site-packages/setuptools/installer.py", line 130, in fetch_build_egg
        raise DistutilsError(str(e))
    distutils.errors.DistutilsError: Command '['/usr/local/bin/python', '-m', 'pip', '--disable-pip-version-check', 'whee
l', '--no-deps', '-w', '/tmp/tmp5pmq2qj3', '--quiet', 'cymem<2.1.0,>=2.0.2']' returned non-zero exit status 1.
    ----------------------------------------
  WARNING: Discarding https://files.pythonhosted.org/packages/8a/25/73d38655125d46a543656c0f025b3394a2ee010af3d0c46ed75d5
54bc1a9/preshed-3.0.4.tar.gz#sha256=13a779205d55ce323976ac06df597f9ec2d6f0563ebcf5652176cf4520c7d540 (from https://pypi.o
rg/simple/preshed/). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command out
put.
    Downloading preshed-3.0.3.tar.gz (170 kB)
    Preparing metadata (setup.py): started
    Preparing metadata (setup.py): finished with status 'done'
  Collecting murmurhash<1.1.0,>=0.28.0
    Using cached murmurhash-1.0.6.tar.gz (12 kB)
    Installing build dependencies: started
    Installing build dependencies: finished with status 'done'
    Getting requirements to build wheel: started
    Getting requirements to build wheel: finished with status 'done'
    Installing backend dependencies: started
    Installing backend dependencies: finished with status 'done'
    Preparing metadata (pyproject.toml): started
    Preparing metadata (pyproject.toml): finished with status 'done'
  Collecting thinc<8.1.0,>=8.0.12
    Downloading thinc-8.0.13.tar.gz (175 kB)
    Installing build dependencies: started
    Installing build dependencies: finished with status 'error'
    ERROR: Command errored out with exit status 2:
     command: /usr/local/bin/python /usr/local/lib/python3.6/site-packages/pip install --ignore-installed --no-user --pre
fix /tmp/pip-build-env-3p26d0zy/overlay --no-warn-script-location --no-binary :none: --only-binary :none: -i https://pypi
.org/simple -- setuptools 'cython>=0.25,<3.0' 'murmurhash>=0.28.0,<1.1.0' 'cymem>=2.0.2,<2.1.0' 'preshed>=3.0.2,<3.1.0' '
blis>=0.4.0,<0.8.0' 'numpy>=1.15.0'
         cwd: None
    Complete output (73 lines):
    Collecting setuptools
      Using cached setuptools-59.6.0-py3-none-any.whl (952 kB)
    Collecting cython<3.0,>=0.25
      Using cached Cython-0.29.27-cp36-cp36m-musllinux_1_1_x86_64.whl (2.0 MB)
    Collecting murmurhash<1.1.0,>=0.28.0
      Using cached murmurhash-1.0.6.tar.gz (12 kB)
      Installing build dependencies: started
      Installing build dependencies: finished with status 'done'
      Getting requirements to build wheel: started
      Getting requirements to build wheel: finished with status 'done'
      Installing backend dependencies: started
      Installing backend dependencies: finished with status 'done'
      Preparing metadata (pyproject.toml): started
      Preparing metadata (pyproject.toml): finished with status 'done'
    Collecting cymem<2.1.0,>=2.0.2
      Using cached cymem-2.0.6.tar.gz (8.2 kB)
      Installing build dependencies: started
      Installing build dependencies: finished with status 'done'
      Getting requirements to build wheel: started
      Getting requirements to build wheel: finished with status 'done'
      Installing backend dependencies: started
      Installing backend dependencies: finished with status 'done'
      Preparing metadata (pyproject.toml): started
      Preparing metadata (pyproject.toml): finished with status 'done'
    Collecting preshed<3.1.0,>=3.0.2
      Using cached preshed-3.0.6.tar.gz (14 kB)
    ERROR: Exception:
    Traceback (most recent call last):
      File "/usr/local/lib/python3.6/site-packages/pip/_internal/cli/base_command.py", line 164, in exc_logging_wrapper
        status = run_func(*args)
      File "/usr/local/lib/python3.6/site-packages/pip/_internal/cli/req_command.py", line 205, in wrapper
        return func(self, options, args)
      File "/usr/local/lib/python3.6/site-packages/pip/_internal/commands/install.py", line 339, in run
        reqs, check_supported_wheels=not options.target_dir
      File "/usr/local/lib/python3.6/site-packages/pip/_internal/resolution/resolvelib/resolver.py", line 93, in resolve
        collected.requirements, max_rounds=try_to_avoid_resolution_too_deep
      File "/usr/local/lib/python3.6/site-packages/pip/_vendor/resolvelib/resolvers.py", line 482, in resolve
        state = resolution.resolve(requirements, max_rounds=max_rounds)
      File "/usr/local/lib/python3.6/site-packages/pip/_vendor/resolvelib/resolvers.py", line 349, in resolve
        self._add_to_criteria(self.state.criteria, r, parent=None)
      File "/usr/local/lib/python3.6/site-packages/pip/_vendor/resolvelib/resolvers.py", line 173, in _add_to_criteria
        if not criterion.candidates:
      File "/usr/local/lib/python3.6/site-packages/pip/_vendor/resolvelib/structs.py", line 151, in __bool__
        return bool(self._sequence)
      File "/usr/local/lib/python3.6/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 155, in
 __bool__
        return any(self)
      File "/usr/local/lib/python3.6/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 143, in
 <genexpr>
        return (c for c in iterator if id(c) not in self._incompatible_ids)
      File "/usr/local/lib/python3.6/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 47, in
_iter_built
        candidate = func()
      File "/usr/local/lib/python3.6/site-packages/pip/_internal/resolution/resolvelib/factory.py", line 206, in _make_ca
ndidate_from_link
        version=version,
      File "/usr/local/lib/python3.6/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 287, in __ini
t__
        version=version,
      File "/usr/local/lib/python3.6/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 156, in __ini
t__
        self.dist = self._prepare()
      File "/usr/local/lib/python3.6/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 225, in _prep
are
        dist = self._prepare_distribution()
      File "/usr/local/lib/python3.6/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 292, in _prep
are_distribution
        return preparer.prepare_linked_requirement(self._ireq, parallel_builds=True)
      File "/usr/local/lib/python3.6/site-packages/pip/_internal/operations/prepare.py", line 482, in prepare_linked_requ
irement
        return self._prepare_linked_requirement(req, parallel_builds)
      File "/usr/local/lib/python3.6/site-packages/pip/_internal/operations/prepare.py", line 550, in _prepare_linked_req
uirement
        self.build_isolation,
      File "/usr/local/lib/python3.6/site-packages/pip/_internal/operations/prepare.py", line 57, in _get_prepared_distri
bution
        with req_tracker.track(req):
      File "/usr/local/lib/python3.6/contextlib.py", line 81, in __enter__
        return next(self.gen)
      File "/usr/local/lib/python3.6/site-packages/pip/_internal/req/req_tracker.py", line 122, in track
        self.add(req)
      File "/usr/local/lib/python3.6/site-packages/pip/_internal/req/req_tracker.py", line 92, in add
        raise LookupError(message)
    LookupError: https://files.pythonhosted.org/packages/c7/2e/f8ad19fa853727dfeee1114ee4ff45f10f259cbddf5cd23289992c06cc
f4/preshed-3.0.6.tar.gz#sha256=fb3b7588a3a0f2f2f1bf3fe403361b2b031212b73a37025aea1df7215af3772a (from https://pypi.org/si
mple/preshed/) is already being built: preshed<3.1.0,>=3.0.2 from https://files.pythonhosted.org/packages/c7/2e/f8ad19fa8
53727dfeee1114ee4ff45f10f259cbddf5cd23289992c06ccf4/preshed-3.0.6.tar.gz#sha256=fb3b7588a3a0f2f2f1bf3fe403361b2b031212b73
a37025aea1df7215af3772a
    ----------------------------------------
  WARNING: Discarding https://files.pythonhosted.org/packages/1b/12/f1c2b13603b5e98aa47b87896a189832cc28aff46e8d959745901
f01b148/thinc-8.0.13.tar.gz#sha256=47662a3ae33d445a77b6ea7b772444805c7bba8991f122e350daf72dedc8171a (from https://pypi.or
g/simple/thinc/) (requires-python:>=3.6). Command errored out with exit status 2: /usr/local/bin/python /usr/local/lib/py
thon3.6/site-packages/pip install --ignore-installed --no-user --prefix /tmp/pip-build-env-3p26d0zy/overlay --no-warn-scr
ipt-location --no-binary :none: --only-binary :none: -i https://pypi.org/simple -- setuptools 'cython>=0.25,<3.0' 'murmur
hash>=0.28.0,<1.1.0' 'cymem>=2.0.2,<2.1.0' 'preshed>=3.0.2,<3.1.0' 'blis>=0.4.0,<0.8.0' 'numpy>=1.15.0' Check the logs fo
r full command output.
    Downloading thinc-8.0.12.tar.gz (175 kB)
    Installing build dependencies: started
    Installing build dependencies: finished with status 'error'
    ERROR: Command errored out with exit status 2:
     command: /usr/local/bin/python /usr/local/lib/python3.6/site-packages/pip install --ignore-installed --no-user --pre
fix /tmp/pip-build-env-j536p6wd/overlay --no-warn-script-location --no-binary :none: --only-binary :none: -i https://pypi
.org/simple -- setuptools 'cython>=0.25,<3.0' 'murmurhash>=0.28.0,<1.1.0' 'cymem>=2.0.2,<2.1.0' 'preshed>=3.0.2,<3.1.0' '
blis>=0.4.0,<0.8.0' 'numpy>=1.15.0'
         cwd: None
    Complete output (73 lines):
    Collecting setuptools
      Using cached setuptools-59.6.0-py3-none-any.whl (952 kB)
    Collecting cython<3.0,>=0.25
      Using cached Cython-0.29.27-cp36-cp36m-musllinux_1_1_x86_64.whl (2.0 MB)
    Collecting murmurhash<1.1.0,>=0.28.0
      Using cached murmurhash-1.0.6.tar.gz (12 kB)
      Installing build dependencies: started
      Installing build dependencies: finished with status 'done'
      Getting requirements to build wheel: started
      Getting requirements to build wheel: finished with status 'done'
      Installing backend dependencies: started
      Installing backend dependencies: finished with status 'done'
      Preparing metadata (pyproject.toml): started
      Preparing metadata (pyproject.toml): finished with status 'done'
    Collecting cymem<2.1.0,>=2.0.2
      Using cached cymem-2.0.6.tar.gz (8.2 kB)
      Installing build dependencies: started
      Installing build dependencies: finished with status 'done'
      Getting requirements to build wheel: started
      Getting requirements to build wheel: finished with status 'done'
      Installing backend dependencies: started
      Installing backend dependencies: finished with status 'done'
      Preparing metadata (pyproject.toml): started
      Preparing metadata (pyproject.toml): finished with status 'done'
    Collecting preshed<3.1.0,>=3.0.2
      Using cached preshed-3.0.6.tar.gz (14 kB)
    ERROR: Exception:
    Traceback (most recent call last):
      File "/usr/local/lib/python3.6/site-packages/pip/_internal/cli/base_command.py", line 164, in exc_logging_wrapper
        status = run_func(*args)
      File "/usr/local/lib/python3.6/site-packages/pip/_internal/cli/req_command.py", line 205, in wrapper
        return func(self, options, args)
      File "/usr/local/lib/python3.6/site-packages/pip/_internal/commands/install.py", line 339, in run
        reqs, check_supported_wheels=not options.target_dir
      File "/usr/local/lib/python3.6/site-packages/pip/_internal/resolution/resolvelib/resolver.py", line 93, in resolve
        collected.requirements, max_rounds=try_to_avoid_resolution_too_deep
      File "/usr/local/lib/python3.6/site-packages/pip/_vendor/resolvelib/resolvers.py", line 482, in resolve
        state = resolution.resolve(requirements, max_rounds=max_rounds)
      File "/usr/local/lib/python3.6/site-packages/pip/_vendor/resolvelib/resolvers.py", line 349, in resolve
        self._add_to_criteria(self.state.criteria, r, parent=None)
      File "/usr/local/lib/python3.6/site-packages/pip/_vendor/resolvelib/resolvers.py", line 173, in _add_to_criteria
        if not criterion.candidates:
      File "/usr/local/lib/python3.6/site-packages/pip/_vendor/resolvelib/structs.py", line 151, in __bool__
        return bool(self._sequence)
      File "/usr/local/lib/python3.6/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 155, in
 __bool__
        return any(self)
      File "/usr/local/lib/python3.6/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 143, in
 <genexpr>
        return (c for c in iterator if id(c) not in self._incompatible_ids)
      File "/usr/local/lib/python3.6/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py", line 47, in
_iter_built
        candidate = func()
      File "/usr/local/lib/python3.6/site-packages/pip/_internal/resolution/resolvelib/factory.py", line 206, in _make_ca
ndidate_from_link
        version=version,
      File "/usr/local/lib/python3.6/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 287, in __ini
t__
        version=version,
      File "/usr/local/lib/python3.6/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 156, in __ini
t__
        self.dist = self._prepare()
      File "/usr/local/lib/python3.6/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 225, in _prep
are
        dist = self._prepare_distribution()
      File "/usr/local/lib/python3.6/site-packages/pip/_internal/resolution/resolvelib/candidates.py", line 292, in _prep
are_distribution
        return preparer.prepare_linked_requirement(self._ireq, parallel_builds=True)
      File "/usr/local/lib/python3.6/site-packages/pip/_internal/operations/prepare.py", line 482, in prepare_linked_requ
irement
        return self._prepare_linked_requirement(req, parallel_builds)
      File "/usr/local/lib/python3.6/site-packages/pip/_internal/operations/prepare.py", line 550, in _prepare_linked_req
uirement
        self.build_isolation,
      File "/usr/local/lib/python3.6/site-packages/pip/_internal/operations/prepare.py", line 57, in _get_prepared_distri
bution
        with req_tracker.track(req):
      File "/usr/local/lib/python3.6/contextlib.py", line 81, in __enter__
        return next(self.gen)
      File "/usr/local/lib/python3.6/site-packages/pip/_internal/req/req_tracker.py", line 122, in track
        self.add(req)
      File "/usr/local/lib/python3.6/site-packages/pip/_internal/req/req_tracker.py", line 92, in add
        raise LookupError(message)
    LookupError: https://files.pythonhosted.org/packages/c7/2e/f8ad19fa853727dfeee1114ee4ff45f10f259cbddf5cd23289992c06cc
f4/preshed-3.0.6.tar.gz#sha256=fb3b7588a3a0f2f2f1bf3fe403361b2b031212b73a37025aea1df7215af3772a (from https://pypi.org/si
mple/preshed/) is already being built: preshed<3.1.0,>=3.0.2 from https://files.pythonhosted.org/packages/c7/2e/f8ad19fa8
53727dfeee1114ee4ff45f10f259cbddf5cd23289992c06ccf4/preshed-3.0.6.tar.gz#sha256=fb3b7588a3a0f2f2f1bf3fe403361b2b031212b73
a37025aea1df7215af3772a
    ----------------------------------------
  WARNING: Discarding https://files.pythonhosted.org/packages/01/6e/ecc80bc717cb5adf2434d5f45168da0c1401f3d2e2546e7e1b868
f5e00cc/thinc-8.0.12.tar.gz#sha256=527c220b6a8f531521b49dc064aa645dc590c6bbc6234849fbee1abdb2378ebe (from https://pypi.or
g/simple/thinc/) (requires-python:>=3.6). Command errored out with exit status 2: /usr/local/bin/python /usr/local/lib/py
thon3.6/site-packages/pip install --ignore-installed --no-user --prefix /tmp/pip-build-env-j536p6wd/overlay --no-warn-scr
ipt-location --no-binary :none: --only-binary :none: -i https://pypi.org/simple -- setuptools 'cython>=0.25,<3.0' 'murmur
hash>=0.28.0,<1.1.0' 'cymem>=2.0.2,<2.1.0' 'preshed>=3.0.2,<3.1.0' 'blis>=0.4.0,<0.8.0' 'numpy>=1.15.0' Check the logs fo
r full command output.
  ERROR: Could not find a version that satisfies the requirement thinc<8.1.0,>=8.0.12 (from versions: 1.0, 1.1, 1.2, 1.3,
 1.4, 1.5, 1.41, 1.42, 1.60, 1.61, 1.62, 1.63, 1.64, 1.65, 1.66, 1.67, 1.68, 1.69, 1.70, 1.71, 1.72, 1.73, 1.74, 1.75, 1.
76, 2.0, 3.0, 3.1, 3.2, 3.3, 3.4.1, 4.0.0, 4.1.0, 4.2.0, 5.0.0, 5.0.1, 5.0.2, 5.0.3, 5.0.4, 5.0.5, 5.0.6, 5.0.7, 5.0.8, 6
.0.0, 6.1.0, 6.1.1, 6.1.2, 6.1.3, 6.2.0, 6.3.0, 6.4.0, 6.5.0, 6.5.2, 6.6.0, 6.7.0, 6.7.1, 6.7.2, 6.7.3, 6.8.0, 6.8.1, 6.8
.2, 6.9.0, 6.10.0, 6.10.1.dev0, 6.10.1, 6.10.2.dev0, 6.10.2.dev1, 6.10.2, 6.10.3.dev0, 6.10.3.dev1, 6.10.3, 6.10.4.dev0, 6.11.0.dev2, 6.11.1.dev0, 6.11.1.dev1, 6.11.1.dev2, 6.11.1.dev3, 6.11.1.dev4, 6.11.1.dev6, 6.11.1.dev7, 6.11.1.dev10, 6.11.1.dev11, 6.11.1.dev12, 6.11.1.dev13, 6.11.1.dev15, 6.11.1.dev16, 6.11.1.dev17, 6.11.1.dev18, 6.11.1.dev19, 6.11.1.dev20
, 6.11.1, 6.11.2.dev0, 6.11.2, 6.11.3.dev1, 6.11.3.dev2, 6.12.0, 6.12.1, 7.0.0.dev0, 7.0.0.dev1, 7.0.0.dev2, 7.0.0.dev3, 7.0.0.dev4, 7.0.0.dev5, 7.0.0.dev6, 7.0.0.dev8, 7.0.0, 7.0.1.dev0, 7.0.1.dev1, 7.0.1.dev2, 7.0.1, 7.0.2, 7.0.3, 7.0.4.dev0, 7.0.4, 7.0.5.dev0, 7.0.5, 7.0.6, 7.0.7, 7.0.8, 7.1.0.dev0, 7.1.0, 7.1.1, 7.2.0.dev3, 7.2.0, 7.3.0.dev0, 7.3.0, 7.3.1,
7.4.0.dev0, 7.4.0.dev1, 7.4.0.dev2, 7.4.0, 7.4.1, 7.4.2, 7.4.3, 7.4.4, 7.4.5, 8.0.0.dev0, 8.0.0.dev2, 8.0.0.dev4, 8.0.0a0, 8.0.0a1, 8.0.0a2, 8.0.0a3, 8.0.0a6, 8.0.0a8, 8.0.0a9, 8.0.0a11, 8.0.0a12, 8.0.0a13, 8.0.0a14, 8.0.0a16, 8.0.0a17, 8.0.0a18, 8.0.0a19, 8.0.0a20, 8.0.0a21, 8.0.0a22, 8.0.0a23, 8.0.0a24, 8.0.0a25, 8.0.0a26, 8.0.0a27, 8.0.0a28, 8.0.0a29, 8.0.0a
30, 8.0.0a31, 8.0.0a32, 8.0.0a33, 8.0.0a34, 8.0.0a35, 8.0.0a36, 8.0.0a40, 8.0.0a41, 8.0.0a42, 8.0.0a43, 8.0.0a44, 8.0.0rc0, 8.0.0rc1, 8.0.0rc2, 8.0.0rc3, 8.0.0rc4, 8.0.0rc5, 8.0.0rc6.dev0, 8.0.0rc6, 8.0.0, 8.0.1, 8.0.2, 8.0.3, 8.0.4, 8.0.5, 8.0.6, 8.0.7, 8.0.8, 8.0.9, 8.0.10, 8.0.11, 8.0.12, 8.0.13, 8.0.14.dev0)
  ERROR: No matching distribution found for thinc<8.1.0,>=8.0.12
  ----------------------------------------
WARNING: Discarding https://files.pythonhosted.org/packages/1c/e1/9fb2abcff7d81db985f2cc3d05a750815cad32f41d487b7620370757f7e7/spacy-3.2.1.tar.gz#sha256=f6ebac511627740a8ca2b117b91ef5515c8f0b2fb117a69ebe01d010dd4fc53c (from https://pypi.org/simple/spacy/) (requires-python:>=3.6). Command errored out with exit status 1: /usr/local/bin/python /usr/local/lib/pytho
n3.6/site-packages/pip install --ignore-installed --no-user --prefix /tmp/pip-build-env-2gi28qr1/overlay --no-warn-script-location --no-binary :none: --only-binary :none: -i https://pypi.org/simple -- setuptools 'cython>=0.25,<3.0' 'cymem>=2.0.2,<2.1.0' 'preshed>=3.0.2,<3.1.0' 'murmurhash>=0.28.0,<1.1.0' 'thinc>=8.0.12,<8.1.0' 'blis>=0.4.0,<0.8.0' pathy 'numpy>
=1.15.0' Check the logs for full command output.
  Downloading spacy-3.2.0.tar.gz (1.1 MB)
     |████████████████████████████████| 1.1 MB 1.6 MB/s
  Installing build dependencies ... error

Additional information you deem important:

  • It does not even matter if youre using an empty virtual environment. Installation always fails.
  • As the openwhisk image uses a python 3.6.10 environment, I tried the same using the official python 3.6.10 docker image. The installation was successful in this case.
  • Creating an action using the venv + zipping approach does not work as the virtual environment, after installation of spacy, will be larger than 48MB which is the maximum size allowed afaik.

Some source files miss Apache license headers

Following Apache license header guideline, all human-readable Apache-developed files that are included within a distribution must include the header text with few exceptions. You can find few exceptions here: which files do not require a license header.

I used Apache Rat to check this repository after excluding a few files, and I got this report. We need to add Apache licensing header to those files.

Unapproved licenses:

  openwhisk-runtime-python/core/python2Action/CHANGELOG.md
  openwhisk-runtime-python/core/python2Action/Dockerfile
  openwhisk-runtime-python/core/pythonAction/CHANGELOG.md
  openwhisk-runtime-python/core/pythonAction/Dockerfile
  openwhisk-runtime-python/tests/src/test/resources/application.conf
  openwhisk-runtime-python/ansible/environments/local/group_vars/all
  openwhisk-runtime-python/ansible/environments/local/hosts

The excluded files are:

**/*.json
**/**.gradle
**/gradlew
**/gradle/**
**/.**
**/templates/**
**/*.j2.*
**/.github/**
**/auth.whisk.system
**/auth.guest
**/i18n_resources.go

Python 3.7 - sys.executable is empty

Environment details:

import sys

def main(args):
return { "exe" : sys.executable, "path": sys.path }

Steps to reproduce the issue:

  1. Code as above
  2. Zip the source into eg. test-bug.zip
  3. bx wsk action create --kind python:3.7 TEST37 test-bug.zip
  4. bx wsk action invoke TEST37 --result

Provide the expected results and outputs:

{
    "exe": "SHOULD NOT BE EMPTY",
    "path": [
        "/action/1/src",
        "/usr/local/lib/python37.zip",
        "/usr/local/lib/python3.7",
        "/usr/local/lib/python3.7/lib-dynload",
        "/usr/local/lib/python3.7/site-packages"
    ]
}

Provide the actual results and outputs:

{
    "exe": "",
    "path": [
        "/action/1/src",
        "/usr/local/lib/python37.zip",
        "/usr/local/lib/python3.7",
        "/usr/local/lib/python3.7/lib-dynload",
        "/usr/local/lib/python3.7/site-packages"
    ]
}

Additional information you deem important:

convert scripts to python3

looks like most of the scripts run under python2. since python2 is history is there any work in progress to convert them to python3? my python3 scripts can't run as sys.path shows all python2 stuff and if I update it I run into weird issues.

I will also check if I am make any prs, but would like to know if anyone is working on it?

Naming consistency: "pythonAction" folder/image should include "3" in name

The default Python runtime version is "3" (i.e., v3.6.1); however, the folder it is built under is named:

/core/pythonAction

This is inconsistent with all other runtime naming conventions which all except this one include (at least the major) language version. In fact, even within this repo. we follow the naming convention for /core/python2 and /code/python3AI.

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.