Code Monkey home page Code Monkey logo

python-hyperscan's People

Contributors

actions-user avatar agateau-gg avatar darksunium avatar darvid avatar gandalf013 avatar halfdan avatar jcushman avatar kshelton avatar mhils 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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

python-hyperscan's Issues

How to match an exact string with hyperscan like with re.findall

from typing import Optional, Any, List
import hyperscan


def on_match(id: int, start: int, end: int, flags: int, context: Optional[Any] = None) -> Optional[bool]:
    context['results'].append((id, start, end))
    return 0


db = hyperscan.Database()
patterns = (
    # expression,  id, flags
    (br'O+M',      0,  hyperscan.HS_FLAG_CASELESS|hyperscan.HS_FLAG_SOM_LEFTMOST),
)
expressions, ids, flags = zip(*patterns)
db.compile(
    expressions=expressions, ids=ids, elements=len(patterns), flags=flags
)
lines = ['Om', 'OOm', 'oom', 'sroom', 'communication', 'surveillance']

context = {'results': []}

text = str.encode("\n".join(lines))
print(text)

db.scan(text, match_event_handler=on_match, context=context)

for result in context['results']:
    print(result)

(0, 0, 2) ->Om
(0, 3, 6) -> OOm
(0, 7, 10) -> oom
(0, 13, 16) ->oom (in sroom)
(0, 18, 20)->om (in communication)

with re.findall()

re.findall(rb'O+M', text, flags=re.IGNORECASE)
[b'Om', b'OOm', b'oom', b'oom']

multiprocessing problem.

I try to run pileline using mutliprocessing with hyperscan.

i use with closing(Pool(args.nr_proc)) as pool: to define process_pool
I use pool.apply_async() to generate list of testks

When I run tasks I get:

    raise self._value
  File "/usr/lib/python3.9/multiprocessing/pool.py", line 537, in _handle_tasks
    put(task)
  File "/usr/lib/python3.9/multiprocessing/connection.py", line 211, in send
    self._send_bytes(_ForkingPickler.dumps(obj))
  File "/usr/lib/python3.9/multiprocessing/reduction.py", line 51, in dumps
    cls(buf, protocol).dump(obj)
TypeError: cannot pickle 'hyperscan.Database' object```

Named capture groups with Chimera

First, thanks for all the work on this extremely useful library โ€“

#32 (comment)

Regarding named capture groups, does the above approach lead to a case in which, for a pattern like b'(?<foo>ax) bx (?<bar>cx), the names foo and bar can be recovered (along with their associated content) in the match handler?

The goal would be to obtain the necessary context to create a dictionary such as

{
    "foo": "ax",
    "bar": "cx",
}

Callback event when HS is done with scanning

HI,
I am using your wrapper and it is great. But unfortunately, I am missing a feature that I really need for my project.
I need to know when hyperscan is done with scanning the block of text that I provided.
At the moment the wrapper only calls when a match is found but what if no match is found at all. I have no way of telling is it still searching or is it done just that it didn't find anything.
I came up with a small fix and I am going to create a pull request. Keep in mind I don't know any C and all of this was done with google ๐Ÿ˜„

statically link libhs

Statically linking Hyperscan would result in a much larger extension binary size (~225mb), and require a request to pypa/warehouse to increase the upload limit on the PyPI project. The upshot is end users wouldn't need to (re-)build Hyperscan from source, at least on supported platforms (Linux/manylinux for now). Static linking would be especially helpful for easier package upgrades (#28).

Questions:

  • is a ~250mb wheel prohibitive in any use case?
  • should there be two flavors (static and shared) made available?

Feedback and objections are welcome, otherwise I think this is something that makes sense to move toward in the next release.

loadb docs example requires a mode

As of v0.5.0 this example from the docs doesn't work:

# Deserializing (loading from bytes):
db = hyperscan.loadb(serialized)

because loadb has a mandatory mode parameter. Do the docs want to be updated to db = hyperscan.loadb(serialized, mode=hyperscan.HS_MODE_BLOCK), or does loadb want a default mode value? I'm guessing you added the breaking change because it's unsafe to loadb without supplying the same mode that was used when dumping, so the fix is a docs update.

DB Scan `End Offset` Broken?

Hi, I was attempting to use your test_hyperscan.py script to benchmark and parse an Ubuntu syslog using regex with some modifications. Unfortunately, it seems as if the end offset provided during the callback using both the database_block and database_stream is incrementing regardless of where the match should actually end.

Here is the modified script:

import hyperscan
from time import time

#timestamp regex
_timestamp = r"(\d{2}:\d{2}:\d{2})?"

#format: [timestamp] 00[00]/00/00[00] [timesamp]
_standard_date = (
    r"%s( )?"                                       #timestamp
    r"(([1-2][0-9]{3}|3000)|([0-2]?[0-9]|3[0-1]))"  #00[00]
    r"(\/|-)"                                       #/ or -
    r"([0-2]?[0-9]|3[0-1])"                         #00
    r"(\/|-)"                                       #/ or -
    r"(([1-2][0-9]{3}|3000)|([0-2]?[0-9]|3[0-1]))"  #00[00]
    r"%s( )?"                                       #timestamp
)%(_timestamp,_timestamp)

#format: [timestamp] [day or year] [month] [year or day] [timestamp] - not specficly in that order
_written_date = (
    r"%s( )?"
    r"("
        r"([1-2][0-9]{3}|3000)|(([0-2]?[0-9]|3[0-1])(-([0-2]?[0-9]|3[0-1]))?)"
    r")?(?:, | of )?"
    r"("
        r"(Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?"
        r"|May|Jun(?:e)?|Jul(?:y)?|Aug(?:ust)?|Sep(?:tember)?|Oct(?:ober)?"
        r"|Nov(?:ember)?|Dec(?:ember)?)"
    r")(?:,|\.)?( )?"
    r"("
        r"([1-2][0-9]{3}|3000)|(([0-2]?[0-9]|3[0-1])(-([0-2]?[0-9]|3[0-1]))?)"
    r")?"
    r"( )?%s"
)%(_timestamp,_timestamp)

def database_stream():
    db = hyperscan.Database(mode=(hyperscan.HS_MODE_STREAM | hyperscan.HS_MODE_SOM_HORIZON_LARGE))
    expressions = (_standard_date, _written_date)
    ids = (0, 1)
    flags = (0, 0)
    db.compile(expressions=expressions, ids=ids, elements=len(expressions), flags=flags)
    return db

def done(eid, start, end, flags, context):
    """
    On a found result:
        -Expression ID
        -Start Offset
        -End Offset
        -Flags (Currently Unused)
        -Context object passed to scan
    """
    print end

def test_stream_scan(database_stream):
    with open("/var/log/syslog", "rb") as f: lines = f.read().splitlines()
    start = time()
    with database_stream.stream(match_event_handler=done) as stream:
        for line in lines:
            stream.scan(line)
    print "lines/sec:", len(lines)/(time()-start)
    print "lines:", len(lines)

if __name__ == "__main__":
    stream = database_stream()
    test_stream_scan(stream)

From the beginning it would return with a value of 3 which seems to be invalid considering how the regex should be parsing the output, and by the end it would have a value of around 405000!?

Is this an issue or am i just misinterpreting the data?

More simple examples

Hi,

Hope you are all well !

Can you provide more example for matching multiple patterns from a simple text ?

More other, I am gopher rather a pythonista but I am trying to learn python.

For now, in golang, I wrote the following script to create a database or patterns and to scan a text input.

patterns.txt

10	[$]\s?[+-]?[0-9]{1,3}(?:(?:,?[0-9]{3}))*(?:\.[0-9]{1,2})?	 PricePattern          
11	(?:#?([0-9a-fA-F]{6}|[0-9a-fA-F]{3}))	 HexColorPattern       
12	(?:(?:(?:\d{4}[- ]?){3}\d{4}|\d{15,16}))	 CreditCardPattern     
13	4\d{3}[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}	 VISACreditCardPattern 
14	5[1-5]\d{2}[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}	 MCCreditCardPattern   
15	[13][a-km-zA-HJ-NP-Z1-9]{25,34}	 BtcAddressPattern     
16	\d{1,4} [\w\s]{1,20}(?:street|st|avenue|ave|road|rd|highway|hwy|square|sq|trail|trl|drive|dr|court|ct|park|parkway|pkwy|circle|cir|boulevard|blvd)\W?	 StreetAddressPattern  
17	\b\d{5}(?:[-\s]\d{4})?\b	 ZipCodePattern        
18	(?i)P\.? ?O\.? Box \d+	 PoBoxPattern          
19	(?:\d{3}-\d{2}-\d{4})	 SSNPattern            
20	[0-9a-fA-F]{32}	 MD5HexPattern         
21	[0-9a-fA-F]{40}	 SHA1HexPattern        
22	[0-9a-fA-F]{64}	 SHA256HexPattern      
23	[0-9a-fA-F]{8}-?[a-fA-F0-9]{4}-?[a-fA-F0-9]{4}-?[a-fA-F0-9]{4}-?[a-fA-F0-9]{12}	 GUIDPattern           
24	(?:[\d]-?){12}[\dxX]	 ISBN13Pattern         
25	(?:[\d]-?){9}[\dxX]	 ISBN10Pattern         
26	(([a-fA-F0-9]{2}[:-]){5}([a-fA-F0-9]{2}))	 MACAddressPattern     
27	[A-Z]{2}\d{2}[A-Z0-9]{4}\d{7}([A-Z\d]?){0,16}	 IBANPattern           
28	((git|ssh|http(s)?)|(git@[\w\.]+))(:(\/\/)?)([\w\.@\:/\-~]+)(\.git)(\/)?	 GitRepoPattern        
29	(?:https?://)?(?:www)?(\S*?\.onion)\b	OnionDomain

main.go

package main

import (
	"bufio"
	"encoding/json"
	"fmt"
	"io"
	"net"
	"net/http"
	"os"
	"strconv"
	"strings"
	"sync"
	"time"

	"github.com/flier/gohs/hyperscan"
	"github.com/k0kubun/pp"
	log "github.com/sirupsen/logrus"
	"github.com/spf13/cobra"
	"github.com/spf13/viper"
)

// with sync for resource lock
type scratch struct {
	sync.RWMutex
	s *hyperscan.Scratch
}

var (
	Version  string
	Debug    bool
	Port     int
	FilePath string
	Flag     string
	Scratch  scratch
	Db       hyperscan.BlockDatabase
	Uptime   time.Time
	RegexMap map[int]RegexLine
)

type Response struct {
	Errno int         `json:errno`
	Msg   string      `json:msg`
	Data  interface{} `json:data`
}

type MatchResp struct {
	Id         int       `json:id`
	From       int       `json:from`
	To         int       `json:to`
	Flags      int       `json:flags`
	Context    string    `json:context`
	RegexLinev RegexLine `json:regexline`
}

type RegexLine struct {
	Expr string
	Data string
}

func main() {
	Version = "0.0.1"
	viper.AutomaticEnv()
	var rootCmd = &cobra.Command{
		Use:     "gohs-ladon",
		Short:   fmt.Sprintf("Gohs-ladon Service %s", Version),
		Run:     run,
		PreRunE: preRunE,
	}
	rootCmd.Flags().Bool("debug", false, "Enable debug mode")
	rootCmd.Flags().Int("port", 8080, "Listen port")
	rootCmd.Flags().String("filepath", "", "Dict file path")
	rootCmd.Flags().String("flag", "ioum", "Regex Flag")

	viper.BindPFlag("debug", rootCmd.Flags().Lookup("debug"))
	viper.BindPFlag("port", rootCmd.Flags().Lookup("port"))
	viper.BindPFlag("filepath", rootCmd.Flags().Lookup("filepath"))
	viper.BindPFlag("flag", rootCmd.Flags().Lookup("flag"))

	rootCmd.Execute()
}

func run(cmd *cobra.Command, args []string) {
	// Todo add a goroutine to check if pattern file changed, and reload file.

	// start web service
	http.Handle("/", middleware(http.HandlerFunc(matchHandle)))
	http.Handle("/_stats", middleware(http.HandlerFunc(statsHandle)))

	addr := fmt.Sprintf("0.0.0.0:%d", Port)
	s := &http.Server{
		Addr:         addr,
		ReadTimeout:  1 * time.Second,
		WriteTimeout: 1 * time.Second,
	}
	Uptime = time.Now()

	fmt.Printf("[%s] gohs-ladon %s Running on %s\n", Uptime.Format(time.RFC3339), Version, addr)
	if err := s.ListenAndServe(); err != nil {
		log.Fatal(err)
	}

}

func preRunE(cmd *cobra.Command, args []string) error {
	Debug = viper.GetBool("debug")
	Port = viper.GetInt("port")
	FilePath = viper.GetString("filepath")
	Flag = viper.GetString("flag")

	if FilePath == "" {
		return fmt.Errorf("empty regex filepath")
	}
	if Debug {
		log.SetLevel(log.DebugLevel)
	} else {
		log.SetLevel(log.InfoLevel)
	}
	log.Debug("Prerun", args)
	RegexMap = make(map[int]RegexLine)
	err := buildScratch(FilePath)
	return err
}

// build scratch for regex file.
func buildScratch(filepath string) (err error) {
	file, err := os.Open(filepath)
	if err != nil {
		return err
	}
	defer file.Close()

	patterns := []*hyperscan.Pattern{}
	var expr hyperscan.Expression
	var id int
	// flags := Flag
	// flags := hyperscan.Caseless | hyperscan.Utf8Mode
	flags, err := hyperscan.ParseCompileFlag(Flag)
	if err != nil {
		return err
	}

	scanner := bufio.NewScanner(file)
	for scanner.Scan() {
		log.Debug(scanner.Text())
		line := scanner.Text()
		// line start with #, skip
		if strings.HasPrefix(strings.TrimSpace(line), "#") {
			log.Info(fmt.Sprintf("line start with #, skip line: %s", line))
			continue
		}
		s := strings.Split(line, "\t")
		// length less than 3, skip
		if len(s) < 3 {
			log.Info(fmt.Sprintf("line length less than 3, skip line: %s", line))
			continue
		}
		id, err = strconv.Atoi(s[0])
		if err != nil {
			return fmt.Errorf("Atoi error.")
		}
		expr = hyperscan.Expression(s[1])
		data := s[2]
		pattern := &hyperscan.Pattern{Expression: expr, Flags: flags, Id: id}
		patterns = append(patterns, pattern)
		RegexMap[id] = RegexLine{string(expr), data}
	}
	if len(patterns) <= 0 {
		return fmt.Errorf("Empty regex")
	}
	log.Info(fmt.Sprintf("regex file line number: %d", len(patterns)))
	log.Info("Start Building, please wait...")
	db, err := hyperscan.NewBlockDatabase(patterns...)
	if err != nil {
		return err
	}

	Db = db
	scratch, err := hyperscan.NewScratch(Db)
	if err != nil {
		return err
	}
	Scratch.s = scratch

	if err := scanner.Err(); err != nil {
		return err
	}
	return nil
}

func middleware(next http.Handler) http.Handler {
	return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		start := time.Now()
		next.ServeHTTP(w, r)
		end := time.Now()
		latency := end.Sub(start)
		host, _, _ := net.SplitHostPort(r.RemoteAddr)
		log.WithFields(log.Fields{
			"remote_addr":    host,
			"latency":        latency,
			"content_length": r.ContentLength,
		}).Info(fmt.Sprintf("%s %s", r.Method, r.RequestURI))
	})
}

func matchHandle(w http.ResponseWriter, r *http.Request) {
	query := r.FormValue("q")
	var resp Response = Response{Errno: 0}
	w.Header().Set("Content-Type", "application/json")
	if query == "" {
		resp.Errno = -1
		resp.Msg = "empty param q"
	} else {
		inputData := []byte(`[email protected] 1HB5XMLmzFVj8ALj6mfBsbifRoD4miY36v https://twitter.com/x0rxkov random test sentence https://twitter.com/twitter

https://github.com/lucmichalski
https://github.com/lucmichalski/cars-dataset

[email protected]:fastai/fastai.git


`)
		// results
		var matchResps []MatchResp
		eventHandler := func(id uint, from, to uint64, flags uint, context interface{}) error {
			log.Info(fmt.Sprintf("id: %d, from: %d, to: %d, flags: %v, context: %s", id, from, to, flags, context))
			regexLine, ok := RegexMap[int(id)]
			if !ok {
				regexLine = RegexLine{}
			}
			matchResp := MatchResp{Id: int(id), From: int(from), To: int(to), Flags: int(flags), Context: fmt.Sprintf("%s", context), RegexLinev: regexLine}
			matchResps = append(matchResps, matchResp)
			return nil
		}
		pp.Println("matchResps:", matchResps)

		// lock scratch
		Scratch.Lock()
		if err := Db.Scan(inputData, Scratch.s, eventHandler, inputData); err != nil {
			logFields := log.Fields{"query": query}
			log.WithFields(logFields).Error(err)
			resp.Errno = -2
			resp.Msg = fmt.Sprintf("Db.Scan error: %s", err)
		} else {
			if len(matchResps) <= 0 {
				resp.Errno = 1
				resp.Msg = "no match"
			}
			resp.Data = matchResps
		}
		pp.Println("resp.Data:", resp.Data)
		// unlock scratch
		Scratch.Unlock()
	}
	json.NewEncoder(w).Encode(resp)
	w.WriteHeader(http.StatusOK)
}

func statsHandle(w http.ResponseWriter, r *http.Request) {
	w.WriteHeader(http.StatusOK)
	io.WriteString(w, fmt.Sprintf("gohs-ladon %v, Uptime %v",
		Version, Uptime.Format(time.RFC3339)))
}

Is it possible to create a small example, not restful if too complicated, for loading a text file of patterns and process a simple text input ?

Thanks in advance for any insights or inputs on that.

Cheers,
X

Memory leak in Database object when compiling, dumping and loading.

Thanks for the great library.
We discovered a memory leak when a Database object is compiled, dumped, and loaded multiple times. This is increasingly worse when the database is growing larger. Even creating a new Database object every time will result in a leak.

Compiling one pattern in the same Database object:

import hyperscan as hs

db = hs.Database(mode=hs.HS_MODE_BLOCK)
for i in range(100000):
    db.compile(expressions=[b'test'], ids=[1], flags=[hs.HS_FLAG_ALLOWEMPTY])

case1

Creating a new Database object every compile, slows the leak down.

import hyperscan as hs

for i in range(100000):
    db = hs.Database(mode=hs.HS_MODE_BLOCK)
    db.compile(expressions=[b'test'], ids=[1], flags=[hs.HS_FLAG_ALLOWEMPTY])

case2

But when the Database object is dumped (and loaded as well) it speeds the memory usage up.

import hyperscan as hs

db = hs.Database(mode=hs.HS_MODE_BLOCK)
for i in range(100000):
    db.compile(expressions=[b'test'], ids=[1], flags=[hs.HS_FLAG_ALLOWEMPTY])
    b = hs.dumpb(db)

case3

I tried to dig into the C code to find the problem, but I do not have enough expertise to solve the issue. Can someone help or point me in the right direction.
Thanks!

Chimera support

Thanks for this library! Have you looked into what would be involved in adding Chimera support? This would be useful in the eyecite library, since we're currently redundantly passing all the hyperscan matches through Python's re to extract capture groups.

I'm curious if adding Chimera support would "just" involve adding tests and C wrappers like the existing Database_* wrappers, or if there's some extra complexity that makes it more difficult to add at this point.

Add args for early termination of scanning if only need to find one match regex or just judging matched

Thanks for your excellent work!

And here is some using case to improve

I'm catching hyperscan.ScanTerminated to break scan if I return True and raise HS_SCAN_TERMINATED error in callback func match_event_handler. Which can early termination of scanning if I only want to know is matched but don't care whitch regex is mtached.
It can be achieved by catching hyperscan.ScanTerminated or modify Database_scan in hyperscanmodule.c by judging HS_SCAN_TERMINATED and HS_SUCCESS.

Can not open stream

Hi
Is there any similar function to hs_open_stream (which is in C based hyperscan library) in python?
In examples, stream mode worked by 'with' keyword. Since I do not want to close the stream after exiting 'with' statement, I can not use this way and need something like hs_open_stream.
Thank you for your support.

Support for logical combinations

Since hyperscan 5.0 there has been support for combinations of patterns as described here and here.
I was unable to find the flag HS_FLAG_COMBINATION. Was wondering if this functionality is currently supported. Thanks!

Import time slowness due to pkg_resources

hyperscan itself takes basically no time to import, but its use of pkg_resources makes it slow. On my current system, pkg_resources takes approximately 140ms, and appears to be used here only to provide __version__. For applications sensitive to start-up times, it would be nice to be able to avoid this cost.

Problem with musl and fat runtime?

Sorry I haven't had time to dig into this as much as i'd like but i've been getting:

Illegal instruction (core dumped)

When preparing a hyperscan database, on alpine 3.18 / python 3.11 and with latest python-hyperscan tag.

It works fine on an iMac running Linux (Fedora). And also on a newer iMac running macOS. The box where its crashing (CI) does have an older processor and its in an Alpine container. But the processor does still meet the minimum requirements.

I've built a local wheel that uses -march=core2 and disabled FAT_RUNTIME and that works. -march=corei7 also works.

This post (from earlier this year) suggests musl doesn't support the ifunc feature required for fat runtime. Looking through build logs I see

-- Performing Test HAS_C_ATTR_IFUNC
-- Performing Test HAS_C_ATTR_IFUNC - Failed
-- Compiler does not support ifunc attribute, cannot build fat runtime

So the FAT_RUNTIME define is getting ignored in musl builds. I think this means that the wheels only support the arch that github runners happen to use, which is probably AVX2?

Any chance we can lower the target -march in the official wheels?

segmentation fault (core dumped)

Hi,

I am trying to use the halting feature of the match_event_handler.
The problem is when I return True I get a segmentation fault (core dumped)

My steps: I already have hyperscan installed

  1. mkvirtualenv test_scan
  2. pip3 install hyperscan
  3. python3
Python 3.6.7 (default, Oct 22 2018, 11:32:17) 
[GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import hyperscan
>>> 
>>> db = hyperscan.Database()
>>> patterns = (
...     # expression,  id, flags
...     (br'fo+',      0,  0),
...     (br'^foobar$', 1,  hyperscan.HS_FLAG_CASELESS),
...     (br'BAR',      2,  hyperscan.HS_FLAG_CASELESS
...                        | hyperscan.HS_FLAG_SOM_LEFTMOST),
... )
>>> expressions, ids, flags = zip(*patterns)
>>> db.compile(
...     expressions=expressions, ids=ids, elements=len(patterns), flags=flags
... )
>>> print(db.info().decode())
Version: 5.1.1 Features: AVX2 Mode: BLOCK
>>> 
>>> def on_match(*args):
...     print(args)
...     return True
... 
>>> # And now trying to scan 
... 
>>> db.scan(b'foobar', match_event_handler=on_match, context='foo')
(0, 0, 2, 0, 'foo')
[1]    21582 segmentation fault (core dumped)  python3

I believe this is not intended.
The intended result will indeed print out args only once and then halt any further scanning

Also, I think I found some inconsistency in the docs/release notes.
In the release notes:
match_event_handler will now halt scanning if a non-truthy (and not None) value is returned.
In the docs:
The return value determines whether or not Hyperscan should halt scanning. If the match handler returns anything other than None that is truthy, scanning will be halted....

PS:
Thank you for adding documentation to the package.

Start position always 0

Hi,
I am trying to use python-hyperscan and start is always 0. Below my code:

regList = ['home']

allResultsMap = {i:reg for i,reg in enumerate(regList)}
db = hyperscan.Database()
def on_match(pattern_id, start, end, flags, context):
    print(start,end)
    return None

text = "my sweet home"

expressions, ids, flags = zip(*[(full_expr(reg).encode(),i,0) for i,reg in enumerate(regList)])
db.compile(
    expressions=expressions, ids=ids, elements=len(expressions), flags=flags
)


db.scan(text, match_event_handler=on_match)

The output is :
0 13

Ubuntu 20.04, python 3.8, libhyperscan5/focal,now 5.2.1-1build1 amd64 [installed]

Am I doing something wrong?

Illegal instruction crash on import

When attempting to import hyperscan (0.7.7) on my machine that has an Intel Xeon E5-2690 CPU, it crashes my Python (3.12) interpreter with an illegal instruction error.

ModuleNotFoundError: No module named 'hyperscan._hyperscan'

Type "help", "copyright", "credits" or "license" for more information.

import hyperscan
Traceback (most recent call last):
File "", line 1, in
File "/usr/local/lib/python3.11/site-packages/hyperscan/init.py", line 3, in
from hyperscan._hyperscan import * # noqa: F401, F403
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ModuleNotFoundError: No module named 'hyperscan._hyperscan'

Handling scan termination from match callback could be cleaner

When calling scan methods, the match_event_handler callback can return a truthy value to indicate that the scan should be stopped. In the current error handling in HANDLE_HYPERSCAN_ERR, this is treated as a regular error and raises a hyperscan.error. While an early termination does feel like something that should show up in a return value, arguably it shouldn't be a regular exception.

As a closely related issue, HANDLE_HYPERSCAN_ERR nicely formats an error string, but discards the error int, which makes it awkward to conditionally handle errors. For example, storing the error int on the exception would allow a workaround to the above issue like:

try:
    hs_db.scan(sample, match_event_handler=on_match)
except hyperscan.error as err:
    if err.code != HS_SCAN_TERMINATED:
        raise

Could not build wheels for hyperscan which use PEP 517 and cannot be installed directly

evandro@evandro-pc:~/Downloads$ pip3 --version
pypip 19.1.1 from /home/evandro/.local/lib/python3.6/site-packages/pip (python 3.6)

evandro@evandro-pc:~/Downloads$ python3 --version
Python 3.6.7

evandro@evandro-pc:~/Downloads$ git clone https://github.com/darvid/python-hyperscan
Cloning into 'python-hyperscan'...
remote: Enumerating objects: 18, done.
remote: Counting objects: 100% (18/18), done.
remote: Compressing objects: 100% (15/15), done.
remote: Total 352 (delta 4), reused 8 (delta 3), pack-reused 334
Receiving objects: 100% (352/352), 68.28 KiB | 284.00 KiB/s, done.
Resolving deltas: 100% (185/185), done.

evandro@evandro-pc:~/Downloads/python-hyperscan$ pip3 install . -v
Created temporary directory: /tmp/pip-ephem-wheel-cache-pna_pfxb
Created temporary directory: /tmp/pip-req-tracker-8mdv9nr2
Created requirements tracker '/tmp/pip-req-tracker-8mdv9nr2'
Created temporary directory: /tmp/pip-install-3i3xjrin
...

Building wheels for collected packages: hyperscan
  Created temporary directory: /tmp/pip-wheel-i7zjeahx
  Destination directory: /tmp/pip-wheel-i7zjeahx
  Running command /usr/bin/python3 /home/evandro/.local/lib/python3.6/site-packages/pip/_vendor/pep517/_in_process.py build_wheel /tmp/tmpcuyr4ceg
  Traceback (most recent call last):
    File "/tmp/pip-build-env-b9b5cmsv/overlay/lib/python3.6/site-packages/poetry/utils/env.py", line 382, in run
      cmd, stderr=subprocess.STDOUT, **kwargs
    File "/usr/lib/python3.6/subprocess.py", line 336, in check_output
      **kwargs).stdout
    File "/usr/lib/python3.6/subprocess.py", line 418, in run
      output=stdout, stderr=stderr)
  subprocess.CalledProcessError: Command '['/usr/bin/python', 'setup.py', 'build', '-b', 'build']' returned non-zero exit status 2.

  During handling of the above exception, another exception occurred:

  Traceback (most recent call last):
    File "/home/evandro/.local/lib/python3.6/site-packages/pip/_vendor/pep517/_in_process.py", line 207, in <module>
      main()
    File "/home/evandro/.local/lib/python3.6/site-packages/pip/_vendor/pep517/_in_process.py", line 197, in main
      json_out['return_val'] = hook(**hook_input['kwargs'])
    File "/home/evandro/.local/lib/python3.6/site-packages/pip/_vendor/pep517/_in_process.py", line 141, in build_wheel
      metadata_directory)
    File "/tmp/pip-build-env-b9b5cmsv/overlay/lib/python3.6/site-packages/poetry/masonry/api.py", line 60, in build_wheel
      poetry, SystemEnv(Path(sys.prefix)), NullIO(), Path(wheel_directory)
    File "/tmp/pip-build-env-b9b5cmsv/overlay/lib/python3.6/site-packages/poetry/masonry/builders/wheel.py", line 50, in make_in
      wb.build()
    File "/tmp/pip-build-env-b9b5cmsv/overlay/lib/python3.6/site-packages/poetry/masonry/builders/wheel.py", line 76, in build
      self._build(zip_file)
    File "/tmp/pip-build-env-b9b5cmsv/overlay/lib/python3.6/site-packages/poetry/masonry/builders/wheel.py", line 97, in _build
      "python", str(setup), "build", "-b", str(self._path / "build")
    File "/tmp/pip-build-env-b9b5cmsv/overlay/lib/python3.6/site-packages/poetry/utils/env.py", line 385, in run
      raise EnvCommandError(e)
  poetry.utils.env.EnvCommandError: Command ['/usr/bin/python', 'setup.py', 'build', '-b', 'build'] errored with the following output:
  /usr/bin/python: can't open file 'setup.py': [Errno 2] No such file or directory

  Building wheel for hyperscan (PEP 517) ... error
  ERROR: Failed building wheel for hyperscan
  Running setup.py clean for hyperscan
  Running command /usr/bin/python3 -u -c 'import setuptools, tokenize;__file__='"'"'/tmp/pip-req-build-u2nziy3a/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' clean --all
  Traceback (most recent call last):
    File "<string>", line 1, in <module>
    File "/usr/lib/python3.6/tokenize.py", line 452, in open
      buffer = _builtin_open(filename, 'rb')
  FileNotFoundError: [Errno 2] No such file or directory: '/tmp/pip-req-build-u2nziy3a/setup.py'
  ERROR: Failed cleaning build dir for hyperscan
Failed to build hyperscan
Cleaning up...
  Removing source in /tmp/pip-req-build-u2nziy3a
Removed build tracker '/tmp/pip-req-tracker-8mdv9nr2'
ERROR: Could not build wheels for hyperscan which use PEP 517 and cannot be installed directly
Exception information:
Traceback (most recent call last):
  File "/home/evandro/.local/lib/python3.6/site-packages/pip/_internal/cli/base_command.py", line 178, in main
    status = self.run(options, args)
  File "/home/evandro/.local/lib/python3.6/site-packages/pip/_internal/commands/install.py", line 385, in run
    ", ".join(r.name for r in build_failures)))
pip._internal.exceptions.InstallationError: Could not build wheels for hyperscan which use PEP 517 and cannot be installed directly
evandro@evandro-pc:~/Downloads/python-hyperscan$ 

evandro@evandro-pc:~/Downloads/python-hyperscan$ pip3 install . -v
Created temporary directory: /tmp/pip-ephem-wheel-cache-pna_pfxb
Created temporary directory: /tmp/pip-req-tracker-8mdv9nr2
Created requirements tracker '/tmp/pip-req-tracker-8mdv9nr2'
Created temporary directory: /tmp/pip-install-3i3xjrin
Processing /myfiles/Downloads/python-hyperscan
  Created temporary directory: /tmp/pip-req-build-u2nziy3a
  Added file:///myfiles/Downloads/python-hyperscan to build tracker '/tmp/pip-req-tracker-8mdv9nr2'
  Created temporary directory: /tmp/pip-build-env-b9b5cmsv
  Running command /usr/bin/python3 /home/evandro/.local/lib/python3.6/site-packages/pip install --ignore-installed --no-user --prefix /tmp/pip-build-env-b9b5cmsv/overlay --no-warn-script-location -v --no-binary :none: --only-binary :none: -i https://pypi.org/simple -- 'poetry>=0.12'
  Created temporary directory: /tmp/pip-ephem-wheel-cache-c9crto7m
  Re-using requirements tracker '/tmp/pip-req-tracker-8mdv9nr2'
  Created temporary directory: /tmp/pip-install-adglwq7w
  Collecting poetry>=0.12
    1 location(s) to search for versions of poetry:
    * https://pypi.org/simple/poetry/
    Getting page https://pypi.org/simple/poetry/
    Looking up "https://pypi.org/simple/poetry/" in the cache
    Request header has "max_age" as 0, cache bypassed
    Starting new HTTPS connection (1): pypi.org:443
    https://pypi.org:443 "GET /simple/poetry/ HTTP/1.1" 200 17739
    Updating cache with response from "https://pypi.org/simple/poetry/"
    Caching due to etag
    Analyzing links from page https://pypi.org/simple/poetry/
      Found link https://files.pythonhosted.org/packages/e9/df/0ab4afa9c5d9e6b692d604b8aadc65effdd42a23b233ab688b3573be09/poetry-1.0.0a4.tar.gz#sha256=83eaaf7bf63c911ab03a4d02c39e13bfc8e865647fffea2255fb180968d0d317 (from https://pypi.org/simple/poetry/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*), version: 1.0.0a4
    Using version 0.12.16 (newest of versions: 0.12.0, 0.12.1, 0.12.2, 0.12.3, 0.12.4, 0.12.5, 0.12.6, 0.12.7, 0.12.8, 0.12.9, 0.12.10, 0.12.11, 0.12.12, 0.12.13, 0.12.14, 0.12.15, 0.12.16)
    Created temporary directory: /tmp/pip-unpack-8g3308c6
    Looking up "https://files.pythonhosted.org/packages/fc/18/4de899ef189949ed78553caf19cbd58a2d8d1ac0f1cdbf4820677fbaf197/poetry-0.12.16-py2.py3-none-any.whl" in the cache
    No cache entry available
    Starting new HTTPS connection (1): files.pythonhosted.org:443
    https://files.pythonhosted.org:443 "GET /packages/fc/18/4de899ef189949ed78553caf19cbd58a2d8d1ac0f1cdbf4820677fbaf197/poetry-0.12.16-py2.py3-none-any.whl HTTP/1.1" 200 195512
    Downloading https://files.pythonhosted.org/packages/fc/18/4de899ef189949ed78553caf19cbd58a2d8d1ac0f1cdbf4820677fbaf197/poetry-0.12.16-py2.py3-none-any.whl (195kB)
    Downloading from URL https://files.pythonhosted.org/packages/fc/18/4de899ef189949ed78553caf19cbd58a2d8d1ac0f1cdbf4820677fbaf197/poetry-0.12.16-py2.py3-none-any.whl#sha256=e87ea363cb204bcd9225d7cc3ca68869e76dfb349fb6897557c935c428c9b253 (from https://pypi.org/simple/poetry/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*)
    Ignoring unknown cache-control directive: immutable
    Updating cache with response from "https://files.pythonhosted.org/packages/fc/18/4de899ef189949ed78553caf19cbd58a2d8d1ac0f1cdbf4820677fbaf197/poetry-0.12.16-py2.py3-none-any.whl"
    Caching due to etag
    Added poetry>=0.12 from https://files.pythonhosted.org/packages/fc/18/4de899ef189949ed78553caf19cbd58a2d8d1ac0f1cdbf4820677fbaf197/poetry-0.12.16-py2.py3-none-any.whl#sha256=e87ea363cb204bcd9225d7cc3ca68869e76dfb349fb6897557c935c428c9b253 to build tracker '/tmp/pip-req-tracker-8mdv9nr2'
    Removed poetry>=0.12 from https://files.pythonhosted.org/packages/fc/18/4de899ef189949ed78553caf19cbd58a2d8d1ac0f1cdbf4820677fbaf197/poetry-0.12.16-py2.py3-none-any.whl#sha256=e87ea363cb204bcd9225d7cc3ca68869e76dfb349fb6897557c935c428c9b253 from build tracker '/tmp/pip-req-tracker-8mdv9nr2'
  Collecting pkginfo<2.0,>=1.4 (from poetry>=0.12)
    1 location(s) to search for versions of pkginfo:
    * https://pypi.org/simple/pkginfo/
    Getting page https://pypi.org/simple/pkginfo/
    Looking up "https://pypi.org/simple/pkginfo/" in the cache
    Request header has "max_age" as 0, cache bypassed
    https://pypi.org:443 "GET /simple/pkginfo/ HTTP/1.1" 304 0
    Analyzing links from page https://pypi.org/simple/pkginfo/
      Found link https://files.pythonhosted.org/packages/78/fd/036f26d159eb6b82c2b25bc8c68ac7a0a73bf0c4d74b888ac5fe9a28e77f/pkginfo-1.5.0.1.tar.gz#sha256=7424f2c8511c186cd5424bbf31045b77435b37a8d604990b79d4e70d741148bb (from https://pypi.org/simple/pkginfo/), version: 1.5.0.1
    Using version 1.5.0.1 (newest of versions: 1.4.0, 1.4.1, 1.4.2, 1.5.0, 1.5.0.1)
    Created temporary directory: /tmp/pip-unpack-zch7kdck
    Looking up "https://files.pythonhosted.org/packages/e6/d5/451b913307b478c49eb29084916639dc53a88489b993530fed0a66bab8b9/pkginfo-1.5.0.1-py2.py3-none-any.whl" in the cache
    Current age based on date: 1814407
    Ignoring unknown cache-control directive: immutable
    Freshness lifetime from max-age: 365000000
    The response is "fresh", returning cached response
    365000000 > 1814407
    Using cached https://files.pythonhosted.org/packages/e6/d5/451b913307b478c49eb29084916639dc53a88489b993530fed0a66bab8b9/pkginfo-1.5.0.1-py2.py3-none-any.whl
    Downloading from URL https://files.pythonhosted.org/packages/e6/d5/451b913307b478c49eb29084916639dc53a88489b993530fed0a66bab8b9/pkginfo-1.5.0.1-py2.py3-none-any.whl#sha256=a6d9e40ca61ad3ebd0b72fbadd4fba16e4c0e4df0428c041e01e06eb6ee71f32 (from https://pypi.org/simple/pkginfo/)
    Added pkginfo<2.0,>=1.4 from https://files.pythonhosted.org/packages/e6/d5/451b913307b478c49eb29084916639dc53a88489b993530fed0a66bab8b9/pkginfo-1.5.0.1-py2.py3-none-any.whl#sha256=a6d9e40ca61ad3ebd0b72fbadd4fba16e4c0e4df0428c041e01e06eb6ee71f32 (from poetry>=0.12) to build tracker '/tmp/pip-req-tracker-8mdv9nr2'
    Removed pkginfo<2.0,>=1.4 from https://files.pythonhosted.org/packages/e6/d5/451b913307b478c49eb29084916639dc53a88489b993530fed0a66bab8b9/pkginfo-1.5.0.1-py2.py3-none-any.whl#sha256=a6d9e40ca61ad3ebd0b72fbadd4fba16e4c0e4df0428c041e01e06eb6ee71f32 (from poetry>=0.12) from build tracker '/tmp/pip-req-tracker-8mdv9nr2'
  Collecting requests-toolbelt<0.9.0,>=0.8.0 (from poetry>=0.12)
    1 location(s) to search for versions of requests-toolbelt:
    * https://pypi.org/simple/requests-toolbelt/
    Getting page https://pypi.org/simple/requests-toolbelt/
    Looking up "https://pypi.org/simple/requests-toolbelt/" in the cache
    Request header has "max_age" as 0, cache bypassed
    https://pypi.org:443 "GET /simple/requests-toolbelt/ HTTP/1.1" 304 0
    Analyzing links from page https://pypi.org/simple/requests-toolbelt/
      Found link https://files.pythonhosted.org/packages/4b/25/89bb98ef07cbf6b30f8d9b2f8abe0458e4d87559c689a8c306d0957ece5/requests_toolbelt-0.9.1-py2.py3-none-any.whl#sha256=380606e1d10dc85c3bd47bf5a6095f815ec007be7a8b69c878507068df059e6f (from https://pypi.org/simple/requests-toolbelt/), version: 0.9.1
    Using version 0.8.0 (newest of versions: 0.8.0)
    Created temporary directory: /tmp/pip-unpack-_m61ti_c
    Looking up "https://files.pythonhosted.org/packages/97/8a/d710f792d6f6ecc089c5e55b66e66c3f2f35516a1ede5a8f54c13350ffb0/requests_toolbelt-0.8.0-py2.py3-none-any.whl" in the cache
    No cache entry available
    https://files.pythonhosted.org:443 "GET /packages/97/8a/d710f792d6f6ecc089c5e55b66e66c3f2f35516a1ede5a8f54c13350ffb0/requests_toolbelt-0.8.0-py2.py3-none-any.whl HTTP/1.1" 200 54322
    Downloading https://files.pythonhosted.org/packages/97/8a/d710f792d6f6ecc089c5e55b66e66c3f2f35516a1ede5a8f54c13350ffb0/requests_toolbelt-0.8.0-py2.py3-none-any.whl (54kB)
    Downloading from URL https://files.pythonhosted.org/packages/97/8a/d710f792d6f6ecc089c5e55b66e66c3f2f35516a1ede5a8f54c13350ffb0/requests_toolbelt-0.8.0-py2.py3-none-any.whl#sha256=42c9c170abc2cacb78b8ab23ac957945c7716249206f90874651971a4acff237 (from https://pypi.org/simple/requests-toolbelt/)
    Ignoring unknown cache-control directive: immutable
    Updating cache with response from "https://files.pythonhosted.org/packages/97/8a/d710f792d6f6ecc089c5e55b66e66c3f2f35516a1ede5a8f54c13350ffb0/requests_toolbelt-0.8.0-py2.py3-none-any.whl"
    Caching due to etag
    Added requests-toolbelt<0.9.0,>=0.8.0 from https://files.pythonhosted.org/packages/97/8a/d710f792d6f6ecc089c5e55b66e66c3f2f35516a1ede5a8f54c13350ffb0/requests_toolbelt-0.8.0-py2.py3-none-any.whl#sha256=42c9c170abc2cacb78b8ab23ac957945c7716249206f90874651971a4acff237 (from poetry>=0.12) to build tracker '/tmp/pip-req-tracker-8mdv9nr2'
    Removed requests-toolbelt<0.9.0,>=0.8.0 from https://files.pythonhosted.org/packages/97/8a/d710f792d6f6ecc089c5e55b66e66c3f2f35516a1ede5a8f54c13350ffb0/requests_toolbelt-0.8.0-py2.py3-none-any.whl#sha256=42c9c170abc2cacb78b8ab23ac957945c7716249206f90874651971a4acff237 (from poetry>=0.12) from build tracker '/tmp/pip-req-tracker-8mdv9nr2'
  Collecting cachy<0.3,>=0.2 (from poetry>=0.12)
    1 location(s) to search for versions of cachy:
    * https://pypi.org/simple/cachy/
    Getting page https://pypi.org/simple/cachy/
    Looking up "https://pypi.org/simple/cachy/" in the cache
    Request header has "max_age" as 0, cache bypassed
    https://pypi.org:443 "GET /simple/cachy/ HTTP/1.1" 200 1262
    Updating cache with response from "https://pypi.org/simple/cachy/"
    Caching due to etag
    Analyzing links from page https://pypi.org/simple/cachy/
      Found link https://files.pythonhosted.org/packages/73/2c/6c0e90d805c8003c7a74790b19e44064df25e09a55f191eb71ccd2b512ad/cachy-0.2.0.tar.gz#sha256=b71513e5a38ce90c1280c02b7d8d6bb3fdf64666c9cc0584f2479afea097d56c (from https://pypi.org/simple/cachy/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*), version: 0.2.0
    Using version 0.2.0 (newest of versions: 0.2.0)
    Created temporary directory: /tmp/pip-unpack-i6xfd0ih
    Looking up "https://files.pythonhosted.org/packages/26/37/8ce3e7b330078b6797a34e79a80a8ad6935e404a3b903765417182c9ce19/cachy-0.2.0-py2.py3-none-any.whl" in the cache
    No cache entry available
    https://files.pythonhosted.org:443 "GET /packages/26/37/8ce3e7b330078b6797a34e79a80a8ad6935e404a3b903765417182c9ce19/cachy-0.2.0-py2.py3-none-any.whl HTTP/1.1" 200 59845
    Downloading https://files.pythonhosted.org/packages/26/37/8ce3e7b330078b6797a34e79a80a8ad6935e404a3b903765417182c9ce19/cachy-0.2.0-py2.py3-none-any.whl (59kB)
    Downloading from URL https://files.pythonhosted.org/packages/26/37/8ce3e7b330078b6797a34e79a80a8ad6935e404a3b903765417182c9ce19/cachy-0.2.0-py2.py3-none-any.whl#sha256=b71e8e7ddb5b386e23e81befdfac8a93885406139b8681bedc17b3444fcb8fca (from https://pypi.org/simple/cachy/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*)
    Ignoring unknown cache-control directive: immutable
    Updating cache with response from "https://files.pythonhosted.org/packages/26/37/8ce3e7b330078b6797a34e79a80a8ad6935e404a3b903765417182c9ce19/cachy-0.2.0-py2.py3-none-any.whl"
    Caching due to etag
    Added cachy<0.3,>=0.2 from https://files.pythonhosted.org/packages/26/37/8ce3e7b330078b6797a34e79a80a8ad6935e404a3b903765417182c9ce19/cachy-0.2.0-py2.py3-none-any.whl#sha256=b71e8e7ddb5b386e23e81befdfac8a93885406139b8681bedc17b3444fcb8fca (from poetry>=0.12) to build tracker '/tmp/pip-req-tracker-8mdv9nr2'
    Removed cachy<0.3,>=0.2 from https://files.pythonhosted.org/packages/26/37/8ce3e7b330078b6797a34e79a80a8ad6935e404a3b903765417182c9ce19/cachy-0.2.0-py2.py3-none-any.whl#sha256=b71e8e7ddb5b386e23e81befdfac8a93885406139b8681bedc17b3444fcb8fca (from poetry>=0.12) from build tracker '/tmp/pip-req-tracker-8mdv9nr2'
  Collecting requests<3.0,>=2.18 (from poetry>=0.12)
    1 location(s) to search for versions of requests:
    * https://pypi.org/simple/requests/
    Getting page https://pypi.org/simple/requests/
    Looking up "https://pypi.org/simple/requests/" in the cache
    Request header has "max_age" as 0, cache bypassed
    https://pypi.org:443 "GET /simple/requests/ HTTP/1.1" 200 17483
    Updating cache with response from "https://pypi.org/simple/requests/"
    Caching due to etag
    Analyzing links from page https://pypi.org/simple/requests/
      Found link https://files.pythonhosted.org/packages/ba/bb/dfa0141a32d773c79acb1b1df26a852b03472c0e46d2b959a714c90608/requests-2.22.0.tar.gz#sha256=11e007a8a2aa0323f5a921e9e6a2d7e4e67d9877e85773fba9ba6419025cbeb4 (from https://pypi.org/simple/requests/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*), version: 2.22.0
    Using version 2.22.0 (newest of versions: 2.18.0, 2.18.1, 2.18.2, 2.18.3, 2.18.4, 2.19.0, 2.19.1, 2.20.0, 2.20.1, 2.21.0, 2.22.0)
    Created temporary directory: /tmp/pip-unpack-wcnszw3s
    Looking up "https://files.pythonhosted.org/packages/51/bd/23c926cd341ea6b7dd0b2a00aba99ae0f828be89d72b2190f27c11d4b7fb/requests-2.22.0-py2.py3-none-any.whl" in the cache
    No cache entry available
    https://files.pythonhosted.org:443 "GET /packages/51/bd/23c926cd341ea6b7dd0b2a00aba99ae0f828be89d72b2190f27c11d4b7fb/requests-2.22.0-py2.py3-none-any.whl HTTP/1.1" 200 57952
    Downloading https://files.pythonhosted.org/packages/51/bd/23c926cd341ea6b7dd0b2a00aba99ae0f828be89d72b2190f27c11d4b7fb/requests-2.22.0-py2.py3-none-any.whl (57kB)
    Downloading from URL https://files.pythonhosted.org/packages/51/bd/23c926cd341ea6b7dd0b2a00aba99ae0f828be89d72b2190f27c11d4b7fb/requests-2.22.0-py2.py3-none-any.whl#sha256=9cf5292fcd0f598c671cfc1e0d7d1a7f13bb8085e9a590f48c010551dc6c4b31 (from https://pypi.org/simple/requests/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*)
    Ignoring unknown cache-control directive: immutable
    Updating cache with response from "https://files.pythonhosted.org/packages/51/bd/23c926cd341ea6b7dd0b2a00aba99ae0f828be89d72b2190f27c11d4b7fb/requests-2.22.0-py2.py3-none-any.whl"
    Caching due to etag
    Added requests<3.0,>=2.18 from https://files.pythonhosted.org/packages/51/bd/23c926cd341ea6b7dd0b2a00aba99ae0f828be89d72b2190f27c11d4b7fb/requests-2.22.0-py2.py3-none-any.whl#sha256=9cf5292fcd0f598c671cfc1e0d7d1a7f13bb8085e9a590f48c010551dc6c4b31 (from poetry>=0.12) to build tracker '/tmp/pip-req-tracker-8mdv9nr2'
    Removed requests<3.0,>=2.18 from https://files.pythonhosted.org/packages/51/bd/23c926cd341ea6b7dd0b2a00aba99ae0f828be89d72b2190f27c11d4b7fb/requests-2.22.0-py2.py3-none-any.whl#sha256=9cf5292fcd0f598c671cfc1e0d7d1a7f13bb8085e9a590f48c010551dc6c4b31 (from poetry>=0.12) from build tracker '/tmp/pip-req-tracker-8mdv9nr2'
  Collecting tomlkit<0.6.0,>=0.5.1 (from poetry>=0.12)
    1 location(s) to search for versions of tomlkit:
    * https://pypi.org/simple/tomlkit/
    Getting page https://pypi.org/simple/tomlkit/
    Looking up "https://pypi.org/simple/tomlkit/" in the cache
    Request header has "max_age" as 0, cache bypassed
    https://pypi.org:443 "GET /simple/tomlkit/ HTTP/1.1" 200 2966
    Updating cache with response from "https://pypi.org/simple/tomlkit/"
    Caching due to etag
    Analyzing links from page https://pypi.org/simple/tomlkit/
      Found link https://files.pythonhosted.org/packages/62/1a/d47efe5a7cce6cd8f9ed74877fd74993b4ca2fe9513eb5a31030f9/tomlkit-0.5.3.tar.gz#sha256=d6506342615d051bc961f70bfcfa3d29b6616cc08a3ddfd4bc24196f16fd4ec2 (from https://pypi.org/simple/tomlkit/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*), version: 0.5.3
    Using version 0.5.3 (newest of versions: 0.5.1, 0.5.2, 0.5.3)
    Created temporary directory: /tmp/pip-unpack-7g36e7od
    Looking up "https://files.pythonhosted.org/packages/71/c6/06c014b92cc48270765d6a9418d82239b158d8a9b69e031b0e2c6598740b/tomlkit-0.5.3-py2.py3-none-any.whl" in the cache
    No cache entry available
    https://files.pythonhosted.org:443 "GET /packages/71/c6/06c014b92cc48270765d6a9418d82239b158d8a9b69e031b0e2c6598740b/tomlkit-0.5.3-py2.py3-none-any.whl HTTP/1.1" 200 116796
    Downloading https://files.pythonhosted.org/packages/71/c6/06c014b92cc48270765d6a9418d82239b158d8a9b69e031b0e2c6598740b/tomlkit-0.5.3-py2.py3-none-any.whl (116kB)
    Downloading from URL https://files.pythonhosted.org/packages/71/c6/06c014b92cc48270765d6a9418d82239b158d8a9b69e031b0e2c6598740b/tomlkit-0.5.3-py2.py3-none-any.whl#sha256=f077456d35303e7908cc233b340f71e0bec96f63429997f38ca9272b7d64029e (from https://pypi.org/simple/tomlkit/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*)
    Ignoring unknown cache-control directive: immutable
    Updating cache with response from "https://files.pythonhosted.org/packages/71/c6/06c014b92cc48270765d6a9418d82239b158d8a9b69e031b0e2c6598740b/tomlkit-0.5.3-py2.py3-none-any.whl"
    Caching due to etag
    Added tomlkit<0.6.0,>=0.5.1 from https://files.pythonhosted.org/packages/71/c6/06c014b92cc48270765d6a9418d82239b158d8a9b69e031b0e2c6598740b/tomlkit-0.5.3-py2.py3-none-any.whl#sha256=f077456d35303e7908cc233b340f71e0bec96f63429997f38ca9272b7d64029e (from poetry>=0.12) to build tracker '/tmp/pip-req-tracker-8mdv9nr2'
    Removed tomlkit<0.6.0,>=0.5.1 from https://files.pythonhosted.org/packages/71/c6/06c014b92cc48270765d6a9418d82239b158d8a9b69e031b0e2c6598740b/tomlkit-0.5.3-py2.py3-none-any.whl#sha256=f077456d35303e7908cc233b340f71e0bec96f63429997f38ca9272b7d64029e (from poetry>=0.12) from build tracker '/tmp/pip-req-tracker-8mdv9nr2'
  Collecting jsonschema<4.0,>=3.0a3 (from poetry>=0.12)
    1 location(s) to search for versions of jsonschema:
    * https://pypi.org/simple/jsonschema/
    Getting page https://pypi.org/simple/jsonschema/
    Looking up "https://pypi.org/simple/jsonschema/" in the cache
    Request header has "max_age" as 0, cache bypassed
    https://pypi.org:443 "GET /simple/jsonschema/ HTTP/1.1" 200 5936
    Updating cache with response from "https://pypi.org/simple/jsonschema/"
    Caching due to etag
    Analyzing links from page https://pypi.org/simple/jsonschema/
      Found link https://files.pythonhosted.org/packages/cd/d8/8316660a62d54e3ef85ab3053ff171e10801b19cfe55c78bb0b3810e7/jsonschema-3.0.1.tar.gz#sha256=0c0a81564f181de3212efa2d17de1910f8732fa1b71c42266d983cd74304e20d (from https://pypi.org/simple/jsonschema/), version: 3.0.1
    Using version 3.0.1 (newest of versions: 3.0.0a3, 3.0.0a4, 3.0.0a5, 3.0.0a6, 3.0.0b1, 3.0.0b2, 3.0.0b3, 3.0.0, 3.0.1)
    Created temporary directory: /tmp/pip-unpack-oiw45hxe
    Looking up "https://files.pythonhosted.org/packages/aa/69/df679dfbdd051568b53c38ec8152a3ab6bc533434fc7ed11ab034bf5e82f/jsonschema-3.0.1-py2.py3-none-any.whl" in the cache
    No cache entry available
    https://files.pythonhosted.org:443 "GET /packages/aa/69/df679dfbdd051568b53c38ec8152a3ab6bc533434fc7ed11ab034bf5e82f/jsonschema-3.0.1-py2.py3-none-any.whl HTTP/1.1" 200 54363
    Downloading https://files.pythonhosted.org/packages/aa/69/df679dfbdd051568b53c38ec8152a3ab6bc533434fc7ed11ab034bf5e82f/jsonschema-3.0.1-py2.py3-none-any.whl (54kB)
    Downloading from URL https://files.pythonhosted.org/packages/aa/69/df679dfbdd051568b53c38ec8152a3ab6bc533434fc7ed11ab034bf5e82f/jsonschema-3.0.1-py2.py3-none-any.whl#sha256=a5f6559964a3851f59040d3b961de5e68e70971afb88ba519d27e6a039efff1a (from https://pypi.org/simple/jsonschema/)
    Ignoring unknown cache-control directive: immutable
    Updating cache with response from "https://files.pythonhosted.org/packages/aa/69/df679dfbdd051568b53c38ec8152a3ab6bc533434fc7ed11ab034bf5e82f/jsonschema-3.0.1-py2.py3-none-any.whl"
    Caching due to etag
    Added jsonschema<4.0,>=3.0a3 from https://files.pythonhosted.org/packages/aa/69/df679dfbdd051568b53c38ec8152a3ab6bc533434fc7ed11ab034bf5e82f/jsonschema-3.0.1-py2.py3-none-any.whl#sha256=a5f6559964a3851f59040d3b961de5e68e70971afb88ba519d27e6a039efff1a (from poetry>=0.12) to build tracker '/tmp/pip-req-tracker-8mdv9nr2'
    Removed jsonschema<4.0,>=3.0a3 from https://files.pythonhosted.org/packages/aa/69/df679dfbdd051568b53c38ec8152a3ab6bc533434fc7ed11ab034bf5e82f/jsonschema-3.0.1-py2.py3-none-any.whl#sha256=a5f6559964a3851f59040d3b961de5e68e70971afb88ba519d27e6a039efff1a (from poetry>=0.12) from build tracker '/tmp/pip-req-tracker-8mdv9nr2'
  Collecting pyparsing<3.0,>=2.2 (from poetry>=0.12)
    1 location(s) to search for versions of pyparsing:
    * https://pypi.org/simple/pyparsing/
    Getting page https://pypi.org/simple/pyparsing/
    Looking up "https://pypi.org/simple/pyparsing/" in the cache
    Request header has "max_age" as 0, cache bypassed
    https://pypi.org:443 "GET /simple/pyparsing/ HTTP/1.1" 200 19996
    Updating cache with response from "https://pypi.org/simple/pyparsing/"
    Caching due to etag
    Analyzing links from page https://pypi.org/simple/pyparsing/
      Found link https://files.pythonhosted.org/packages/51/35/bf0f20fdbce45b2554aeb15a1beae2b4a3043526e8b692b65b4a9341450ebe/pyparsing-2.4.0.tar.gz#sha256=1873c03321fc118f4e9746baf201ff990ceb915f433f23b395f5580d1840cb2a (from https://pypi.org/simple/pyparsing/) (requires-python:>=2.6, !=3.0.*, !=3.1.*, !=3.2.*), version: 2.4.0
    Using version 2.4.0 (newest of versions: 2.2.0, 2.2.1, 2.2.2, 2.3.0, 2.3.1, 2.4.0)
    Created temporary directory: /tmp/pip-unpack-krljjke2
    Looking up "https://files.pythonhosted.org/packages/dd/d9/3ec19e966301a6e25769976999bd7bbe552016f0d32b577dc9d63d2e0c49/pyparsing-2.4.0-py2.py3-none-any.whl" in the cache
    No cache entry available
    https://files.pythonhosted.org:443 "GET /packages/dd/d9/3ec19e966301a6e25769976999bd7bbe552016f0d32b577dc9d63d2e0c49/pyparsing-2.4.0-py2.py3-none-any.whl HTTP/1.1" 200 62288
    Downloading https://files.pythonhosted.org/packages/dd/d9/3ec19e966301a6e25769976999bd7bbe552016f0d32b577dc9d63d2e0c49/pyparsing-2.4.0-py2.py3-none-any.whl (62kB)
    Downloading from URL https://files.pythonhosted.org/packages/dd/d9/3ec19e966301a6e25769976999bd7bbe552016f0d32b577dc9d63d2e0c49/pyparsing-2.4.0-py2.py3-none-any.whl#sha256=9b6323ef4ab914af344ba97510e966d64ba91055d6b9afa6b30799340e89cc03 (from https://pypi.org/simple/pyparsing/) (requires-python:>=2.6, !=3.0.*, !=3.1.*, !=3.2.*)
    Ignoring unknown cache-control directive: immutable
    Updating cache with response from "https://files.pythonhosted.org/packages/dd/d9/3ec19e966301a6e25769976999bd7bbe552016f0d32b577dc9d63d2e0c49/pyparsing-2.4.0-py2.py3-none-any.whl"
    Caching due to etag
    Added pyparsing<3.0,>=2.2 from https://files.pythonhosted.org/packages/dd/d9/3ec19e966301a6e25769976999bd7bbe552016f0d32b577dc9d63d2e0c49/pyparsing-2.4.0-py2.py3-none-any.whl#sha256=9b6323ef4ab914af344ba97510e966d64ba91055d6b9afa6b30799340e89cc03 (from poetry>=0.12) to build tracker '/tmp/pip-req-tracker-8mdv9nr2'
    Removed pyparsing<3.0,>=2.2 from https://files.pythonhosted.org/packages/dd/d9/3ec19e966301a6e25769976999bd7bbe552016f0d32b577dc9d63d2e0c49/pyparsing-2.4.0-py2.py3-none-any.whl#sha256=9b6323ef4ab914af344ba97510e966d64ba91055d6b9afa6b30799340e89cc03 (from poetry>=0.12) from build tracker '/tmp/pip-req-tracker-8mdv9nr2'
  Collecting pyrsistent<0.15.0,>=0.14.2 (from poetry>=0.12)
    1 location(s) to search for versions of pyrsistent:
    * https://pypi.org/simple/pyrsistent/
    Getting page https://pypi.org/simple/pyrsistent/
    Looking up "https://pypi.org/simple/pyrsistent/" in the cache
    Request header has "max_age" as 0, cache bypassed
    https://pypi.org:443 "GET /simple/pyrsistent/ HTTP/1.1" 200 5234
    Updating cache with response from "https://pypi.org/simple/pyrsistent/"
    Caching due to etag
    Analyzing links from page https://pypi.org/simple/pyrsistent/
      Found link https://files.pythonhosted.org/packages/3e/35/3d959e68e4b60cfc6c8c2d75ca615b81e415417ccf3fac80ae0bf6/pyrsistent-0.15.2.tar.gz#sha256=16692ee739d42cf5e39cef8d27649a8c1fdb7aa99887098f1460057c5eb75c3a (from https://pypi.org/simple/pyrsistent/), version: 0.15.2
    Using version 0.14.11 (newest of versions: 0.14.2, 0.14.3, 0.14.4, 0.14.5, 0.14.6, 0.14.7, 0.14.8, 0.14.9, 0.14.10, 0.14.11)
    Created temporary directory: /tmp/pip-unpack-36_4fwyx
    Looking up "https://files.pythonhosted.org/packages/8c/46/4e93ab8a379d7efe93f20a0fb8a27bdfe88942cc954ab0210c3164e783e0/pyrsistent-0.14.11.tar.gz" in the cache
    No cache entry available
    https://files.pythonhosted.org:443 "GET /packages/8c/46/4e93ab8a379d7efe93f20a0fb8a27bdfe88942cc954ab0210c3164e783e0/pyrsistent-0.14.11.tar.gz HTTP/1.1" 200 104498
    Downloading https://files.pythonhosted.org/packages/8c/46/4e93ab8a379d7efe93f20a0fb8a27bdfe88942cc954ab0210c3164e783e0/pyrsistent-0.14.11.tar.gz (104kB)
    Downloading from URL https://files.pythonhosted.org/packages/8c/46/4e93ab8a379d7efe93f20a0fb8a27bdfe88942cc954ab0210c3164e783e0/pyrsistent-0.14.11.tar.gz#sha256=3ca82748918eb65e2d89f222b702277099aca77e34843c5eb9d52451173970e2 (from https://pypi.org/simple/pyrsistent/)
    Ignoring unknown cache-control directive: immutable
    Updating cache with response from "https://files.pythonhosted.org/packages/8c/46/4e93ab8a379d7efe93f20a0fb8a27bdfe88942cc954ab0210c3164e783e0/pyrsistent-0.14.11.tar.gz"
    Caching due to etag
    Added pyrsistent<0.15.0,>=0.14.2 from https://files.pythonhosted.org/packages/8c/46/4e93ab8a379d7efe93f20a0fb8a27bdfe88942cc954ab0210c3164e783e0/pyrsistent-0.14.11.tar.gz#sha256=3ca82748918eb65e2d89f222b702277099aca77e34843c5eb9d52451173970e2 (from poetry>=0.12) to build tracker '/tmp/pip-req-tracker-8mdv9nr2'
      Running setup.py (path:/tmp/pip-install-adglwq7w/pyrsistent/setup.py) egg_info for package pyrsistent
      Running command python setup.py egg_info
      running egg_info
      creating pip-egg-info/pyrsistent.egg-info
      writing pip-egg-info/pyrsistent.egg-info/PKG-INFO
      writing dependency_links to pip-egg-info/pyrsistent.egg-info/dependency_links.txt
      writing requirements to pip-egg-info/pyrsistent.egg-info/requires.txt
      writing top-level names to pip-egg-info/pyrsistent.egg-info/top_level.txt
      writing manifest file 'pip-egg-info/pyrsistent.egg-info/SOURCES.txt'
      reading manifest file 'pip-egg-info/pyrsistent.egg-info/SOURCES.txt'
      reading manifest template 'MANIFEST.in'
      writing manifest file 'pip-egg-info/pyrsistent.egg-info/SOURCES.txt'
    Source in /tmp/pip-install-adglwq7w/pyrsistent has version 0.14.11, which satisfies requirement pyrsistent<0.15.0,>=0.14.2 from https://files.pythonhosted.org/packages/8c/46/4e93ab8a379d7efe93f20a0fb8a27bdfe88942cc954ab0210c3164e783e0/pyrsistent-0.14.11.tar.gz#sha256=3ca82748918eb65e2d89f222b702277099aca77e34843c5eb9d52451173970e2 (from poetry>=0.12)
    Removed pyrsistent<0.15.0,>=0.14.2 from https://files.pythonhosted.org/packages/8c/46/4e93ab8a379d7efe93f20a0fb8a27bdfe88942cc954ab0210c3164e783e0/pyrsistent-0.14.11.tar.gz#sha256=3ca82748918eb65e2d89f222b702277099aca77e34843c5eb9d52451173970e2 (from poetry>=0.12) from build tracker '/tmp/pip-req-tracker-8mdv9nr2'
  Collecting cleo<0.7.0,>=0.6.7 (from poetry>=0.12)
    1 location(s) to search for versions of cleo:
    * https://pypi.org/simple/cleo/
    Getting page https://pypi.org/simple/cleo/
    Looking up "https://pypi.org/simple/cleo/" in the cache
    Request header has "max_age" as 0, cache bypassed
    https://pypi.org:443 "GET /simple/cleo/ HTTP/1.1" 200 3536
    Updating cache with response from "https://pypi.org/simple/cleo/"
    Caching due to etag
    Analyzing links from page https://pypi.org/simple/cleo/
      Found link https://files.pythonhosted.org/packages/11/8f/104f390374cab631c74c1931f3d12367d278c73a9a55e5d49f9cc1/cleo-0.7.4.tar.gz#sha256=58d26642fa608a1515093275cd98875100c7d50f01fc1f3bbb7a78dbb73e4b14 (from https://pypi.org/simple/cleo/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*), version: 0.7.4
    Using version 0.6.8 (newest of versions: 0.6.7, 0.6.8)
    Created temporary directory: /tmp/pip-unpack-jdw5k_r2
    Looking up "https://files.pythonhosted.org/packages/a7/b9/270301a3a87587f09bc3985973f2e362ffa45fa5fcd5128501516b2f5e31/cleo-0.6.8-py2.py3-none-any.whl" in the cache
    No cache entry available
    https://files.pythonhosted.org:443 "GET /packages/a7/b9/270301a3a87587f09bc3985973f2e362ffa45fa5fcd5128501516b2f5e31/cleo-0.6.8-py2.py3-none-any.whl HTTP/1.1" 200 264834
    Downloading https://files.pythonhosted.org/packages/a7/b9/270301a3a87587f09bc3985973f2e362ffa45fa5fcd5128501516b2f5e31/cleo-0.6.8-py2.py3-none-any.whl (264kB)
    Downloading from URL https://files.pythonhosted.org/packages/a7/b9/270301a3a87587f09bc3985973f2e362ffa45fa5fcd5128501516b2f5e31/cleo-0.6.8-py2.py3-none-any.whl#sha256=9b7f79f1aa470a025c0d28c76aa225ee9e65028d32f80032e871aa3500df61b8 (from https://pypi.org/simple/cleo/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*)
    Ignoring unknown cache-control directive: immutable
    Updating cache with response from "https://files.pythonhosted.org/packages/a7/b9/270301a3a87587f09bc3985973f2e362ffa45fa5fcd5128501516b2f5e31/cleo-0.6.8-py2.py3-none-any.whl"
    Caching due to etag
    Added cleo<0.7.0,>=0.6.7 from https://files.pythonhosted.org/packages/a7/b9/270301a3a87587f09bc3985973f2e362ffa45fa5fcd5128501516b2f5e31/cleo-0.6.8-py2.py3-none-any.whl#sha256=9b7f79f1aa470a025c0d28c76aa225ee9e65028d32f80032e871aa3500df61b8 (from poetry>=0.12) to build tracker '/tmp/pip-req-tracker-8mdv9nr2'
    Removed cleo<0.7.0,>=0.6.7 from https://files.pythonhosted.org/packages/a7/b9/270301a3a87587f09bc3985973f2e362ffa45fa5fcd5128501516b2f5e31/cleo-0.6.8-py2.py3-none-any.whl#sha256=9b7f79f1aa470a025c0d28c76aa225ee9e65028d32f80032e871aa3500df61b8 (from poetry>=0.12) from build tracker '/tmp/pip-req-tracker-8mdv9nr2'
  Collecting shellingham<2.0,>=1.1 (from poetry>=0.12)
    1 location(s) to search for versions of shellingham:
    * https://pypi.org/simple/shellingham/
    Getting page https://pypi.org/simple/shellingham/
    Looking up "https://pypi.org/simple/shellingham/" in the cache
    Request header has "max_age" as 0, cache bypassed
    https://pypi.org:443 "GET /simple/shellingham/ HTTP/1.1" 200 2980
    Updating cache with response from "https://pypi.org/simple/shellingham/"
    Caching due to etag
    Analyzing links from page https://pypi.org/simple/shellingham/
      Found link https://files.pythonhosted.org/packages/ba/0e/325fb7f306232706e1f2b3aa6092dc0ee6c07baf78692f9035adb1357da/shellingham-1.3.1.tar.gz#sha256=985b23bbd1feae47ca6a6365eacd314d93d95a8a16f8f346945074c28fe6f3e0 (from https://pypi.org/simple/shellingham/) (requires-python:>=2.6,!=3.0,!=3.1,!=3.2,!=3.3), version: 1.3.1
    Using version 1.3.1 (newest of versions: 1.1.0, 1.2.0, 1.2.1, 1.2.2, 1.2.3, 1.2.4, 1.2.5, 1.2.6, 1.2.7, 1.2.8, 1.3.0, 1.3.1)
    Created temporary directory: /tmp/pip-unpack-b3i2a3wq
    Looking up "https://files.pythonhosted.org/packages/2d/ac/e8a34d4b3d24bf554f40651b2aac549a3fc7223725bf10fbdfe2083b6372/shellingham-1.3.1-py2.py3-none-any.whl" in the cache
    No cache entry available
    https://files.pythonhosted.org:443 "GET /packages/2d/ac/e8a34d4b3d24bf554f40651b2aac549a3fc7223725bf10fbdfe2083b6372/shellingham-1.3.1-py2.py3-none-any.whl HTTP/1.1" 200 10940
    Downloading https://files.pythonhosted.org/packages/2d/ac/e8a34d4b3d24bf554f40651b2aac549a3fc7223725bf10fbdfe2083b6372/shellingham-1.3.1-py2.py3-none-any.whl
    Downloading from URL https://files.pythonhosted.org/packages/2d/ac/e8a34d4b3d24bf554f40651b2aac549a3fc7223725bf10fbdfe2083b6372/shellingham-1.3.1-py2.py3-none-any.whl#sha256=77d37a4fd287c1e663006f7ecf1b9deca9ad492d0082587bd813c44eb49e4e62 (from https://pypi.org/simple/shellingham/) (requires-python:>=2.6,!=3.0,!=3.1,!=3.2,!=3.3)
    Ignoring unknown cache-control directive: immutable
    Updating cache with response from "https://files.pythonhosted.org/packages/2d/ac/e8a34d4b3d24bf554f40651b2aac549a3fc7223725bf10fbdfe2083b6372/shellingham-1.3.1-py2.py3-none-any.whl"
    Caching due to etag
    Added shellingham<2.0,>=1.1 from https://files.pythonhosted.org/packages/2d/ac/e8a34d4b3d24bf554f40651b2aac549a3fc7223725bf10fbdfe2083b6372/shellingham-1.3.1-py2.py3-none-any.whl#sha256=77d37a4fd287c1e663006f7ecf1b9deca9ad492d0082587bd813c44eb49e4e62 (from poetry>=0.12) to build tracker '/tmp/pip-req-tracker-8mdv9nr2'
    Removed shellingham<2.0,>=1.1 from https://files.pythonhosted.org/packages/2d/ac/e8a34d4b3d24bf554f40651b2aac549a3fc7223725bf10fbdfe2083b6372/shellingham-1.3.1-py2.py3-none-any.whl#sha256=77d37a4fd287c1e663006f7ecf1b9deca9ad492d0082587bd813c44eb49e4e62 (from poetry>=0.12) from build tracker '/tmp/pip-req-tracker-8mdv9nr2'
  Collecting cachecontrol[filecache]<0.13.0,>=0.12.4 (from poetry>=0.12)
    1 location(s) to search for versions of cachecontrol:
    * https://pypi.org/simple/cachecontrol/
    Getting page https://pypi.org/simple/cachecontrol/
    Looking up "https://pypi.org/simple/cachecontrol/" in the cache
    Request header has "max_age" as 0, cache bypassed
    https://pypi.org:443 "GET /simple/cachecontrol/ HTTP/1.1" 200 3370
    Updating cache with response from "https://pypi.org/simple/cachecontrol/"
    Caching due to etag
    Analyzing links from page https://pypi.org/simple/cachecontrol/
      Found link https://files.pythonhosted.org/packages/dc/09/0c516d56b074c839da7e1c2d48b80d8cccb1917163b26a91ca4355aa6/CacheControl-0.12.5.tar.gz#sha256=cef77effdf51b43178f6a2d3b787e3734f98ade253fa3187f3bb7315aaa42ff7 (from https://pypi.org/simple/cachecontrol/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*), version: 0.12.5
    Using version 0.12.5 (newest of versions: 0.12.4, 0.12.5)
    Created temporary directory: /tmp/pip-unpack-myilkfjk
    Looking up "https://files.pythonhosted.org/packages/5e/f0/2c193ed1f17c97ae539da7e1c2d48b80d8cccb1917163b26a91ca4355aa6/CacheControl-0.12.5.tar.gz" in the cache
    No cache entry available
    https://files.pythonhosted.org:443 "GET /packages/5e/f0/2c193ed1f17c97ae539da7e1c2d48b80d8cccb1917163b26a91ca4355aa6/CacheControl-0.12.5.tar.gz HTTP/1.1" 200 14383
    Downloading https://files.pythonhosted.org/packages/5e/f0/2c193ed1f17c97ae539da7e1c2d48b80d8cccb1917163b26a91ca4355aa6/CacheControl-0.12.5.tar.gz
    Downloading from URL https://files.pythonhosted.org/packages/5e/f0/2c193ed1f17c97ae539da7e1c2d48b80d8cccb1917163b26a91ca4355aa6/CacheControl-0.12.5.tar.gz#sha256=cef77effdf51b43178f6a2d3b787e3734f98ade253fa3187f3bb7315aaa42ff7 (from https://pypi.org/simple/cachecontrol/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*)
    Ignoring unknown cache-control directive: immutable
    Updating cache with response from "https://files.pythonhosted.org/packages/5e/f0/2c193ed1f17c97ae539da7e1c2d48b80d8cccb1917163b26a91ca4355aa6/CacheControl-0.12.5.tar.gz"
    Caching due to etag
    Added cachecontrol[filecache]<0.13.0,>=0.12.4 from https://files.pythonhosted.org/packages/5e/f0/2c193ed1f17c97ae539da7e1c2d48b80d8cccb1917163b26a91ca4355aa6/CacheControl-0.12.5.tar.gz#sha256=cef77effdf51b43178f6a2d3b787e3734f98ade253fa3187f3bb7315aaa42ff7 (from poetry>=0.12) to build tracker '/tmp/pip-req-tracker-8mdv9nr2'
      Running setup.py (path:/tmp/pip-install-adglwq7w/cachecontrol/setup.py) egg_info for package cachecontrol
      Running command python setup.py egg_info
      running egg_info
      creating pip-egg-info/CacheControl.egg-info
      writing pip-egg-info/CacheControl.egg-info/PKG-INFO
      writing dependency_links to pip-egg-info/CacheControl.egg-info/dependency_links.txt
      writing entry points to pip-egg-info/CacheControl.egg-info/entry_points.txt
      writing requirements to pip-egg-info/CacheControl.egg-info/requires.txt
      writing top-level names to pip-egg-info/CacheControl.egg-info/top_level.txt
      writing manifest file 'pip-egg-info/CacheControl.egg-info/SOURCES.txt'
      reading manifest file 'pip-egg-info/CacheControl.egg-info/SOURCES.txt'
      reading manifest template 'MANIFEST.in'
      writing manifest file 'pip-egg-info/CacheControl.egg-info/SOURCES.txt'
    Source in /tmp/pip-install-adglwq7w/cachecontrol has version 0.12.5, which satisfies requirement cachecontrol[filecache]<0.13.0,>=0.12.4 from https://files.pythonhosted.org/packages/5e/f0/2c193ed1f17c97ae539da7e1c2d48b80d8cccb1917163b26a91ca4355aa6/CacheControl-0.12.5.tar.gz#sha256=cef77effdf51b43178f6a2d3b787e3734f98ade253fa3187f3bb7315aaa42ff7 (from poetry>=0.12)
    Removed cachecontrol[filecache]<0.13.0,>=0.12.4 from https://files.pythonhosted.org/packages/5e/f0/2c193ed1f17c97ae539da7e1c2d48b80d8cccb1917163b26a91ca4355aa6/CacheControl-0.12.5.tar.gz#sha256=cef77effdf51b43178f6a2d3b787e3734f98ade253fa3187f3bb7315aaa42ff7 (from poetry>=0.12) from build tracker '/tmp/pip-req-tracker-8mdv9nr2'
    Installing extra requirements: 'filecache'
  Collecting html5lib<2.0,>=1.0 (from poetry>=0.12)
    1 location(s) to search for versions of html5lib:
    * https://pypi.org/simple/html5lib/
    Getting page https://pypi.org/simple/html5lib/
    Looking up "https://pypi.org/simple/html5lib/" in the cache
    Request header has "max_age" as 0, cache bypassed
    https://pypi.org:443 "GET /simple/html5lib/ HTTP/1.1" 200 2811
    Updating cache with response from "https://pypi.org/simple/html5lib/"
    Caching due to etag
    Analyzing links from page https://pypi.org/simple/html5lib/
      Found link https://files.pythonhosted.org/packages/8a/ed/fd8710ed9d304e87510b9368e7a5f1acd8831c2d6691edd3c62a0823f98f/html5lib-1.0.1.tar.gz#sha256=66cb0dcfdbbc4f9c3ba1a63fdb511ffdbd4f513b2b6d81b80cd26ce6b3fb3736 (from https://pypi.org/simple/html5lib/), version: 1.0.1
    Using version 1.0.1 (newest of versions: 1.0.1)
    Created temporary directory: /tmp/pip-unpack-n5bbsc6f
    Looking up "https://files.pythonhosted.org/packages/a5/62/bbd2be0e7943ec8504b517e62bab011b4946e1258842bc159e5dfde15b96/html5lib-1.0.1-py2.py3-none-any.whl" in the cache
    No cache entry available
    https://files.pythonhosted.org:443 "GET /packages/a5/62/bbd2be0e7943ec8504b517e62bab011b4946e1258842bc159e5dfde15b96/html5lib-1.0.1-py2.py3-none-any.whl HTTP/1.1" 200 117321
    Downloading https://files.pythonhosted.org/packages/a5/62/bbd2be0e7943ec8504b517e62bab011b4946e1258842bc159e5dfde15b96/html5lib-1.0.1-py2.py3-none-any.whl (117kB)
    Downloading from URL https://files.pythonhosted.org/packages/a5/62/bbd2be0e7943ec8504b517e62bab011b4946e1258842bc159e5dfde15b96/html5lib-1.0.1-py2.py3-none-any.whl#sha256=20b159aa3badc9d5ee8f5c647e5efd02ed2a66ab8d354930bd9ff139fc1dc0a3 (from https://pypi.org/simple/html5lib/)
    Ignoring unknown cache-control directive: immutable
    Updating cache with response from "https://files.pythonhosted.org/packages/a5/62/bbd2be0e7943ec8504b517e62bab011b4946e1258842bc159e5dfde15b96/html5lib-1.0.1-py2.py3-none-any.whl"
    Caching due to etag
    Added html5lib<2.0,>=1.0 from https://files.pythonhosted.org/packages/a5/62/bbd2be0e7943ec8504b517e62bab011b4946e1258842bc159e5dfde15b96/html5lib-1.0.1-py2.py3-none-any.whl#sha256=20b159aa3badc9d5ee8f5c647e5efd02ed2a66ab8d354930bd9ff139fc1dc0a3 (from poetry>=0.12) to build tracker '/tmp/pip-req-tracker-8mdv9nr2'
    Removed html5lib<2.0,>=1.0 from https://files.pythonhosted.org/packages/a5/62/bbd2be0e7943ec8504b517e62bab011b4946e1258842bc159e5dfde15b96/html5lib-1.0.1-py2.py3-none-any.whl#sha256=20b159aa3badc9d5ee8f5c647e5efd02ed2a66ab8d354930bd9ff139fc1dc0a3 (from poetry>=0.12) from build tracker '/tmp/pip-req-tracker-8mdv9nr2'
  Collecting urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 (from requests<3.0,>=2.18->poetry>=0.12)
    1 location(s) to search for versions of urllib3:
    * https://pypi.org/simple/urllib3/
    Getting page https://pypi.org/simple/urllib3/
    Looking up "https://pypi.org/simple/urllib3/" in the cache
    Request header has "max_age" as 0, cache bypassed
    https://pypi.org:443 "GET /simple/urllib3/ HTTP/1.1" 200 7591
    Updating cache with response from "https://pypi.org/simple/urllib3/"
    Caching due to etag
    Analyzing links from page https://pypi.org/simple/urllib3/
      Found link https://files.pythonhosted.org/packages/9c/ed/c5fd0aa8444b47f7463338f3cbdf00c316627558784e3f542f07/urllib3-1.25.3.tar.gz#sha256=dbe59173209418ae49d485b87d1681aefa36252ee85884c31346debd19463232 (from https://pypi.org/simple/urllib3/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4), version: 1.25.3
    Using version 1.25.3 (newest of versions: 1.21.1, 1.22, 1.23, 1.24, 1.24.1, 1.24.2, 1.24.3, 1.25.2, 1.25.3)
    Created temporary directory: /tmp/pip-unpack-5dl_l_99
    Looking up "https://files.pythonhosted.org/packages/e6/60/247f23a7121ae632d62811ba7f273d0e58972d75e58a94d329d51550a47d/urllib3-1.25.3-py2.py3-none-any.whl" in the cache
    No cache entry available
    https://files.pythonhosted.org:443 "GET /packages/e6/60/247f23a7121ae632d62811ba7f273d0e58972d75e58a94d329d51550a47d/urllib3-1.25.3-py2.py3-none-any.whl HTTP/1.1" 200 150942
    Downloading https://files.pythonhosted.org/packages/e6/60/247f23a7121ae632d62811ba7f273d0e58972d75e58a94d329d51550a47d/urllib3-1.25.3-py2.py3-none-any.whl (150kB)
    Downloading from URL https://files.pythonhosted.org/packages/e6/60/247f23a7121ae632d62811ba7f273d0e58972d75e58a94d329d51550a47d/urllib3-1.25.3-py2.py3-none-any.whl#sha256=b246607a25ac80bedac05c6f282e3cdaf3afb65420fd024ac94435cabe6e18d1 (from https://pypi.org/simple/urllib3/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4)
    Ignoring unknown cache-control directive: immutable
    Updating cache with response from "https://files.pythonhosted.org/packages/e6/60/247f23a7121ae632d62811ba7f273d0e58972d75e58a94d329d51550a47d/urllib3-1.25.3-py2.py3-none-any.whl"
    Caching due to etag
    Added urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 from https://files.pythonhosted.org/packages/e6/60/247f23a7121ae632d62811ba7f273d0e58972d75e58a94d329d51550a47d/urllib3-1.25.3-py2.py3-none-any.whl#sha256=b246607a25ac80bedac05c6f282e3cdaf3afb65420fd024ac94435cabe6e18d1 (from requests<3.0,>=2.18->poetry>=0.12) to build tracker '/tmp/pip-req-tracker-8mdv9nr2'
    Removed urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 from https://files.pythonhosted.org/packages/e6/60/247f23a7121ae632d62811ba7f273d0e58972d75e58a94d329d51550a47d/urllib3-1.25.3-py2.py3-none-any.whl#sha256=b246607a25ac80bedac05c6f282e3cdaf3afb65420fd024ac94435cabe6e18d1 (from requests<3.0,>=2.18->poetry>=0.12) from build tracker '/tmp/pip-req-tracker-8mdv9nr2'
  Collecting chardet<3.1.0,>=3.0.2 (from requests<3.0,>=2.18->poetry>=0.12)
    1 location(s) to search for versions of chardet:
    * https://pypi.org/simple/chardet/
    Getting page https://pypi.org/simple/chardet/
    Looking up "https://pypi.org/simple/chardet/" in the cache
    Request header has "max_age" as 0, cache bypassed
    https://pypi.org:443 "GET /simple/chardet/ HTTP/1.1" 200 2028
    Updating cache with response from "https://pypi.org/simple/chardet/"
    Caching due to etag
    Analyzing links from page https://pypi.org/simple/chardet/
      Found link https://files.pythonhosted.org/packages/13/29/9336841acc9ef3f0d4a3cf93462473795d18e9535498c8f929d/chardet-3.0.4.tar.gz#sha256=84ab92ed1c4d4f16916e05906b6b75a6c0fb5db821cc65e70cbd64a3e2a5eaae (from https://pypi.org/simple/chardet/), version: 3.0.4
    Using version 3.0.4 (newest of versions: 3.0.2, 3.0.3, 3.0.4)
    Created temporary directory: /tmp/pip-unpack-uejjbvs5
    Looking up "https://files.pythonhosted.org/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl" in the cache
    No cache entry available
    https://files.pythonhosted.org:443 "GET /packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl HTTP/1.1" 200 133356
    Downloading https://files.pythonhosted.org/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl (133kB)
    Downloading from URL https://files.pythonhosted.org/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl#sha256=fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691 (from https://pypi.org/simple/chardet/)
    Ignoring unknown cache-control directive: immutable
    Updating cache with response from "https://files.pythonhosted.org/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl"
    Caching due to etag
    Added chardet<3.1.0,>=3.0.2 from https://files.pythonhosted.org/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl#sha256=fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691 (from requests<3.0,>=2.18->poetry>=0.12) to build tracker '/tmp/pip-req-tracker-8mdv9nr2'
    Removed chardet<3.1.0,>=3.0.2 from https://files.pythonhosted.org/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl#sha256=fc323ffcaeaed0e0a02bf4d117757b98aed530d9ed4531e3e15460124c106691 (from requests<3.0,>=2.18->poetry>=0.12) from build tracker '/tmp/pip-req-tracker-8mdv9nr2'
  Collecting certifi>=2017.4.17 (from requests<3.0,>=2.18->poetry>=0.12)
    1 location(s) to search for versions of certifi:
    * https://pypi.org/simple/certifi/
    Getting page https://pypi.org/simple/certifi/
    Looking up "https://pypi.org/simple/certifi/" in the cache
    Request header has "max_age" as 0, cache bypassed
    https://pypi.org:443 "GET /simple/certifi/ HTTP/1.1" 200 5478
    Updating cache with response from "https://pypi.org/simple/certifi/"
    Caching due to etag
    Analyzing links from page https://pypi.org/simple/certifi/
      Found link https://files.pythonhosted.org/packages/55/bf/e1094fc906275d135818fee16ad8495985956a9b7e2bb21942a1/certifi-2019.3.9.tar.gz#sha256=b26104d6835d1f5e49452a26eb2ff87fe7090b89dfcaee5ea2212697e1e1d7ae (from https://pypi.org/simple/certifi/), version: 2019.3.9
    Using version 2019.3.9 (newest of versions: 2017.4.17, 2017.7.27, 2017.7.27.1, 2017.11.5, 2018.1.18, 2018.4.16, 2018.8.13, 2018.8.24, 2018.10.15, 2018.11.29, 2019.3.9)
    Created temporary directory: /tmp/pip-unpack-zm04icg6
    Looking up "https://files.pythonhosted.org/packages/60/75/f692a584e85b7eaba0e03827b3d51f45f571c2e793dd731e598828d380aa/certifi-2019.3.9-py2.py3-none-any.whl" in the cache
    No cache entry available
    https://files.pythonhosted.org:443 "GET /packages/60/75/f692a584e85b7eaba0e03827b3d51f45f571c2e793dd731e598828d380aa/certifi-2019.3.9-py2.py3-none-any.whl HTTP/1.1" 200 158601
    Downloading https://files.pythonhosted.org/packages/60/75/f692a584e85b7eaba0e03827b3d51f45f571c2e793dd731e598828d380aa/certifi-2019.3.9-py2.py3-none-any.whl (158kB)
    Downloading from URL https://files.pythonhosted.org/packages/60/75/f692a584e85b7eaba0e03827b3d51f45f571c2e793dd731e598828d380aa/certifi-2019.3.9-py2.py3-none-any.whl#sha256=59b7658e26ca9c7339e00f8f4636cdfe59d34fa37b9b04f6f9e9926b3cece1a5 (from https://pypi.org/simple/certifi/)
    Ignoring unknown cache-control directive: immutable
    Updating cache with response from "https://files.pythonhosted.org/packages/60/75/f692a584e85b7eaba0e03827b3d51f45f571c2e793dd731e598828d380aa/certifi-2019.3.9-py2.py3-none-any.whl"
    Caching due to etag
    Added certifi>=2017.4.17 from https://files.pythonhosted.org/packages/60/75/f692a584e85b7eaba0e03827b3d51f45f571c2e793dd731e598828d380aa/certifi-2019.3.9-py2.py3-none-any.whl#sha256=59b7658e26ca9c7339e00f8f4636cdfe59d34fa37b9b04f6f9e9926b3cece1a5 (from requests<3.0,>=2.18->poetry>=0.12) to build tracker '/tmp/pip-req-tracker-8mdv9nr2'
    Removed certifi>=2017.4.17 from https://files.pythonhosted.org/packages/60/75/f692a584e85b7eaba0e03827b3d51f45f571c2e793dd731e598828d380aa/certifi-2019.3.9-py2.py3-none-any.whl#sha256=59b7658e26ca9c7339e00f8f4636cdfe59d34fa37b9b04f6f9e9926b3cece1a5 (from requests<3.0,>=2.18->poetry>=0.12) from build tracker '/tmp/pip-req-tracker-8mdv9nr2'
  Collecting idna<2.9,>=2.5 (from requests<3.0,>=2.18->poetry>=0.12)
    1 location(s) to search for versions of idna:
    * https://pypi.org/simple/idna/
    Getting page https://pypi.org/simple/idna/
    Looking up "https://pypi.org/simple/idna/" in the cache
    Request header has "max_age" as 0, cache bypassed
    https://pypi.org:443 "GET /simple/idna/ HTTP/1.1" 200 2810
    Updating cache with response from "https://pypi.org/simple/idna/"
    Caching due to etag
    Analyzing links from page https://pypi.org/simple/idna/
      Found link https://files.pythonhosted.org/packages/22/35/04dedec60e950cadb579ca166e448ba77f9d24efc03edd7e55fa57d04b7/idna-2.8.tar.gz#sha256=c357b3f628cf53ae2c4c05627ecc484553142ca23264e593d327bcde5e9c3407 (from https://pypi.org/simple/idna/), version: 2.8
    Using version 2.8 (newest of versions: 2.5, 2.6, 2.7, 2.8)
    Created temporary directory: /tmp/pip-unpack-f1yantmq
    Looking up "https://files.pythonhosted.org/packages/14/2c/cd551d81dbe15200be1cf41cd03869a46fe7226e7450af7a6545bfc474c9/idna-2.8-py2.py3-none-any.whl" in the cache
    No cache entry available
    https://files.pythonhosted.org:443 "GET /packages/14/2c/cd551d81dbe15200be1cf41cd03869a46fe7226e7450af7a6545bfc474c9/idna-2.8-py2.py3-none-any.whl HTTP/1.1" 200 58594
    Downloading https://files.pythonhosted.org/packages/14/2c/cd551d81dbe15200be1cf41cd03869a46fe7226e7450af7a6545bfc474c9/idna-2.8-py2.py3-none-any.whl (58kB)
    Downloading from URL https://files.pythonhosted.org/packages/14/2c/cd551d81dbe15200be1cf41cd03869a46fe7226e7450af7a6545bfc474c9/idna-2.8-py2.py3-none-any.whl#sha256=ea8b7f6188e6fa117537c3df7da9fc686d485087abf6ac197f9c46432f7e4a3c (from https://pypi.org/simple/idna/)
    Ignoring unknown cache-control directive: immutable
    Updating cache with response from "https://files.pythonhosted.org/packages/14/2c/cd551d81dbe15200be1cf41cd03869a46fe7226e7450af7a6545bfc474c9/idna-2.8-py2.py3-none-any.whl"
    Caching due to etag
    Added idna<2.9,>=2.5 from https://files.pythonhosted.org/packages/14/2c/cd551d81dbe15200be1cf41cd03869a46fe7226e7450af7a6545bfc474c9/idna-2.8-py2.py3-none-any.whl#sha256=ea8b7f6188e6fa117537c3df7da9fc686d485087abf6ac197f9c46432f7e4a3c (from requests<3.0,>=2.18->poetry>=0.12) to build tracker '/tmp/pip-req-tracker-8mdv9nr2'
    Removed idna<2.9,>=2.5 from https://files.pythonhosted.org/packages/14/2c/cd551d81dbe15200be1cf41cd03869a46fe7226e7450af7a6545bfc474c9/idna-2.8-py2.py3-none-any.whl#sha256=ea8b7f6188e6fa117537c3df7da9fc686d485087abf6ac197f9c46432f7e4a3c (from requests<3.0,>=2.18->poetry>=0.12) from build tracker '/tmp/pip-req-tracker-8mdv9nr2'
  Collecting six>=1.11.0 (from jsonschema<4.0,>=3.0a3->poetry>=0.12)
    1 location(s) to search for versions of six:
    * https://pypi.org/simple/six/
    Getting page https://pypi.org/simple/six/
    Looking up "https://pypi.org/simple/six/" in the cache
    Request header has "max_age" as 0, cache bypassed
    https://pypi.org:443 "GET /simple/six/ HTTP/1.1" 200 3648
    Updating cache with response from "https://pypi.org/simple/six/"
    Caching due to etag
    Analyzing links from page https://pypi.org/simple/six/
      Found link https://files.pythonhosted.org/packages/0e/f9/66471f9b7de47d1f4b6994648ec67a51efe58fa907c1e11e350cddfca/six-1.12.0.tar.gz#sha256=d16a0141ec1a18405cd4ce8b4613101da75da0e9a7aec5bdd4fa804d0e0eba73 (from https://pypi.org/simple/six/) (requires-python:>=2.6, !=3.0.*, !=3.1.*), version: 1.12.0
    Using version 1.12.0 (newest of versions: 1.11.0, 1.12.0)
    Created temporary directory: /tmp/pip-unpack-4tojzd3w
    Looking up "https://files.pythonhosted.org/packages/73/fb/00a976f728d0d1fecfe898238ce23f502a721c0ac0ecfedb80e0d88c64e9/six-1.12.0-py2.py3-none-any.whl" in the cache
    No cache entry available
    https://files.pythonhosted.org:443 "GET /packages/73/fb/00a976f728d0d1fecfe898238ce23f502a721c0ac0ecfedb80e0d88c64e9/six-1.12.0-py2.py3-none-any.whl HTTP/1.1" 200 10586
    Downloading https://files.pythonhosted.org/packages/73/fb/00a976f728d0d1fecfe898238ce23f502a721c0ac0ecfedb80e0d88c64e9/six-1.12.0-py2.py3-none-any.whl
    Downloading from URL https://files.pythonhosted.org/packages/73/fb/00a976f728d0d1fecfe898238ce23f502a721c0ac0ecfedb80e0d88c64e9/six-1.12.0-py2.py3-none-any.whl#sha256=3350809f0555b11f552448330d0b52d5f24c91a322ea4a15ef22629740f3761c (from https://pypi.org/simple/six/) (requires-python:>=2.6, !=3.0.*, !=3.1.*)
    Ignoring unknown cache-control directive: immutable
    Updating cache with response from "https://files.pythonhosted.org/packages/73/fb/00a976f728d0d1fecfe898238ce23f502a721c0ac0ecfedb80e0d88c64e9/six-1.12.0-py2.py3-none-any.whl"
    Caching due to etag
    Added six>=1.11.0 from https://files.pythonhosted.org/packages/73/fb/00a976f728d0d1fecfe898238ce23f502a721c0ac0ecfedb80e0d88c64e9/six-1.12.0-py2.py3-none-any.whl#sha256=3350809f0555b11f552448330d0b52d5f24c91a322ea4a15ef22629740f3761c (from jsonschema<4.0,>=3.0a3->poetry>=0.12) to build tracker '/tmp/pip-req-tracker-8mdv9nr2'
    Removed six>=1.11.0 from https://files.pythonhosted.org/packages/73/fb/00a976f728d0d1fecfe898238ce23f502a721c0ac0ecfedb80e0d88c64e9/six-1.12.0-py2.py3-none-any.whl#sha256=3350809f0555b11f552448330d0b52d5f24c91a322ea4a15ef22629740f3761c (from jsonschema<4.0,>=3.0a3->poetry>=0.12) from build tracker '/tmp/pip-req-tracker-8mdv9nr2'
  Collecting setuptools (from jsonschema<4.0,>=3.0a3->poetry>=0.12)
    1 location(s) to search for versions of setuptools:
    * https://pypi.org/simple/setuptools/
    Getting page https://pypi.org/simple/setuptools/
    Looking up "https://pypi.org/simple/setuptools/" in the cache
    Request header has "max_age" as 0, cache bypassed
    https://pypi.org:443 "GET /simple/setuptools/ HTTP/1.1" 200 85662
    Updating cache with response from "https://pypi.org/simple/setuptools/"
    Caching due to etag
    Analyzing links from page https://pypi.org/simple/setuptools/
      Skipping link https://files.pythonhosted.org/packages/77/38/9087b4391a05b9c7f938b94a16d80305bf0369c6b0b9509e86165e1d3/setuptools-41.0.1.zip#sha256=a222d126f5471598053c9a77f4b5d4f26eaa1f150ad6e01dcf1a42e185d05613 (from https://pypi.org/simple/setuptools/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*), version: 41.0.1
    Using version 41.0.1 (newest of versions: 0.7.2, 0.7.3, 0.7.4, 0.7.5, 0.7.6, 0.7.7, 0.7.8, 0.8, 0.9, 0.9.1, 0.9.2, 0.9.3, 0.9.4, 0.9.5, 0.9.6, 0.9.7, 0.9.8, 1.0, 1.1, 1.1.1, 1.1.2, 1.1.3, 1.1.4, 1.1.5, 1.1.6, 1.1.7, 1.2, 1.3, 1.3.1, 1.3.2, 1.4, 1.4.1, 1.4.2, 2.0, 2.0.1, 2.0.2, 2.1, 2.1.1, 2.1.2, 2.2, 3.0, 3.0.1, 3.0.2, 3.1, 3.2, 3.3, 3.4, 3.4.1, 3.4.2, 3.4.3, 3.4.4, 3.5, 3.5.1, 3.5.2, 3.6, 3.7, 3.7.1, 3.8, 3.8.1, 4.0, 4.0.1, 5.0, 5.0.1, 5.0.2, 5.1, 5.2, 5.3, 5.4, 5.4.1, 5.4.2, 5.5, 5.5.1, 5.6, 5.7, 5.8, 6.0.1, 6.0.2, 6.1, 7.0, 8.0, 8.0.1, 8.0.2, 8.0.3, 8.0.4, 8.1, 8.2, 8.2.1, 8.3, 9.0, 9.0.1, 9.1, 10.0, 10.0.1, 10.1, 10.2, 10.2.1, 11.0, 11.1, 11.2, 11.3, 11.3.1, 12.0, 12.0.1, 12.0.2, 12.0.3, 12.0.4, 12.0.5, 12.1, 12.2, 12.3, 12.4, 13.0.1, 13.0.2, 14.0, 14.1, 14.1.1, 14.2, 14.3, 14.3.1, 15.0, 15.1, 15.2, 16.0, 17.0, 17.1, 17.1.1, 18.0, 18.0.1, 18.1, 18.2, 18.3, 18.3.1, 18.3.2, 18.4, 18.5, 18.6, 18.6.1, 18.7, 18.7.1, 18.8, 18.8.1, 19.0, 19.1, 19.1.1, 19.2, 19.3, 19.4, 19.4.1, 19.5, 19.6, 19.6.1, 19.6.2, 19.7, 20.0, 20.1, 20.1.1, 20.2.2, 20.3, 20.3.1, 20.4, 20.6.6, 20.6.7, 20.6.8, 20.7.0, 20.8.0, 20.8.1, 20.9.0, 20.10.1, 21.0.0, 21.1.0, 21.2.0, 21.2.1, 21.2.2, 22.0.0, 22.0.1, 22.0.2, 22.0.4, 22.0.5, 23.0.0, 23.1.0, 23.2.0, 23.2.1, 24.0.0, 24.0.1, 24.0.2, 24.0.3, 24.1.0, 24.1.1, 24.2.0, 24.2.1, 24.3.0, 24.3.1, 25.0.0, 25.0.1, 25.0.2, 25.1.0, 25.1.1, 25.1.2, 25.1.3, 25.1.4, 25.1.5, 25.1.6, 25.2.0, 25.3.0, 25.4.0, 26.0.0, 26.1.0, 26.1.1, 27.0.0, 27.1.0, 27.1.2, 27.2.0, 27.3.0, 27.3.1, 28.0.0, 28.1.0, 28.2.0, 28.3.0, 28.4.0, 28.5.0, 28.6.0, 28.6.1, 28.7.0, 28.7.1, 28.8.0, 28.8.1, 29.0.0, 29.0.1, 30.0.0, 30.1.0, 30.2.0, 30.2.1, 30.3.0, 30.4.0, 31.0.0, 31.0.1, 32.0.0, 32.1.0, 32.1.1, 32.1.2, 32.1.3, 32.2.0, 32.3.0, 32.3.1, 33.1.0, 33.1.1, 34.0.0, 34.0.1, 34.0.2, 34.0.3, 34.1.0, 34.1.1, 34.2.0, 34.3.0, 34.3.1, 34.3.2, 34.3.3, 34.4.0, 34.4.1, 35.0.0, 35.0.1, 35.0.2, 36.0.1, 36.1.0, 36.1.1, 36.2.0, 36.2.1, 36.2.2, 36.2.3, 36.2.4, 36.2.5, 36.2.6, 36.2.7, 36.3.0, 36.4.0, 36.5.0, 36.6.0, 36.6.1, 36.7.0, 36.7.1, 36.7.2, 36.8.0, 37.0.0, 38.0.0, 38.1.0, 38.2.0, 38.2.1, 38.2.3, 38.2.4, 38.2.5, 38.3.0, 38.4.0, 38.4.1, 38.5.0, 38.5.1, 38.5.2, 38.6.0, 38.6.1, 38.7.0, 39.0.0, 39.0.1, 39.1.0, 39.2.0, 40.0.0, 40.1.0, 40.1.1, 40.2.0, 40.3.0, 40.4.0, 40.4.1, 40.4.2, 40.4.3, 40.5.0, 40.6.0, 40.6.1, 40.6.2, 40.6.3, 40.7.0, 40.7.1, 40.7.2, 40.7.3, 40.8.0, 40.9.0, 41.0.0, 41.0.1)
    Created temporary directory: /tmp/pip-unpack-nsk89y1q
    Looking up "https://files.pythonhosted.org/packages/ec/51/f45cea425fd5cb0b0380f5b0f048ebc1da5b417e48d304838c02d6288a1e/setuptools-41.0.1-py2.py3-none-any.whl" in the cache
    No cache entry available
    https://files.pythonhosted.org:443 "GET /packages/ec/51/f45cea425fd5cb0b0380f5b0f048ebc1da5b417e48d304838c02d6288a1e/setuptools-41.0.1-py2.py3-none-any.whl HTTP/1.1" 200 575966
    Downloading https://files.pythonhosted.org/packages/ec/51/f45cea425fd5cb0b0380f5b0f048ebc1da5b417e48d304838c02d6288a1e/setuptools-41.0.1-py2.py3-none-any.whl (575kB)
    Downloading from URL https://files.pythonhosted.org/packages/ec/51/f45cea425fd5cb0b0380f5b0f048ebc1da5b417e48d304838c02d6288a1e/setuptools-41.0.1-py2.py3-none-any.whl#sha256=c7769ce668c7a333d84e17fe8b524b1c45e7ee9f7908ad0a73e1eda7e6a5aebf (from https://pypi.org/simple/setuptools/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*)
    Ignoring unknown cache-control directive: immutable
    Updating cache with response from "https://files.pythonhosted.org/packages/ec/51/f45cea425fd5cb0b0380f5b0f048ebc1da5b417e48d304838c02d6288a1e/setuptools-41.0.1-py2.py3-none-any.whl"
    Caching due to etag
    Added setuptools from https://files.pythonhosted.org/packages/ec/51/f45cea425fd5cb0b0380f5b0f048ebc1da5b417e48d304838c02d6288a1e/setuptools-41.0.1-py2.py3-none-any.whl#sha256=c7769ce668c7a333d84e17fe8b524b1c45e7ee9f7908ad0a73e1eda7e6a5aebf (from jsonschema<4.0,>=3.0a3->poetry>=0.12) to build tracker '/tmp/pip-req-tracker-8mdv9nr2'
    Removed setuptools from https://files.pythonhosted.org/packages/ec/51/f45cea425fd5cb0b0380f5b0f048ebc1da5b417e48d304838c02d6288a1e/setuptools-41.0.1-py2.py3-none-any.whl#sha256=c7769ce668c7a333d84e17fe8b524b1c45e7ee9f7908ad0a73e1eda7e6a5aebf (from jsonschema<4.0,>=3.0a3->poetry>=0.12) from build tracker '/tmp/pip-req-tracker-8mdv9nr2'
  Collecting attrs>=17.4.0 (from jsonschema<4.0,>=3.0a3->poetry>=0.12)
    1 location(s) to search for versions of attrs:
    * https://pypi.org/simple/attrs/
    Getting page https://pypi.org/simple/attrs/
    Looking up "https://pypi.org/simple/attrs/" in the cache
    Request header has "max_age" as 0, cache bypassed
    https://pypi.org:443 "GET /simple/attrs/ HTTP/1.1" 200 2959
    Updating cache with response from "https://pypi.org/simple/attrs/"
    Caching due to etag
    Analyzing links from page https://pypi.org/simple/attrs/
      Skipping link https://files.pythonhosted.org/packages/1a/61/fc5394f19383fbbe3e1147a0291276afa43a0dc3ed0d6cd9fda813/attrs-19.1.0.tar.gz#sha256=f0b870f674851ecbfbbbd364d6b5cbdff9dcedbc7f3f5e18a6891057f21fe399 (from https://pypi.org/simple/attrs/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*), version: 19.1.0
    Using version 19.1.0 (newest of versions: 17.4.0, 18.1.0, 18.2.0, 19.1.0)
    Created temporary directory: /tmp/pip-unpack-g3h7xb3t
    Looking up "https://files.pythonhosted.org/packages/23/96/d828354fa2dbdf216eaa7b7de0db692f12c234f7ef888cc14980ef40d1d2/attrs-19.1.0-py2.py3-none-any.whl" in the cache
    No cache entry available
    https://files.pythonhosted.org:443 "GET /packages/23/96/d828354fa2dbdf216eaa7b7de0db692f12c234f7ef888cc14980ef40d1d2/attrs-19.1.0-py2.py3-none-any.whl HTTP/1.1" 200 35784
    Downloading https://files.pythonhosted.org/packages/23/96/d828354fa2dbdf216eaa7b7de0db692f12c234f7ef888cc14980ef40d1d2/attrs-19.1.0-py2.py3-none-any.whl
    Downloading from URL https://files.pythonhosted.org/packages/23/96/d828354fa2dbdf216eaa7b7de0db692f12c234f7ef888cc14980ef40d1d2/attrs-19.1.0-py2.py3-none-any.whl#sha256=69c0dbf2ed392de1cb5ec704444b08a5ef81680a61cb899dc08127123af36a79 (from https://pypi.org/simple/attrs/) (requires-python:>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*)
    Ignoring unknown cache-control directive: immutable
    Updating cache with response from "https://files.pythonhosted.org/packages/23/96/d828354fa2dbdf216eaa7b7de0db692f12c234f7ef888cc14980ef40d1d2/attrs-19.1.0-py2.py3-none-any.whl"
    Caching due to etag
    Added attrs>=17.4.0 from https://files.pythonhosted.org/packages/23/96/d828354fa2dbdf216eaa7b7de0db692f12c234f7ef888cc14980ef40d1d2/attrs-19.1.0-py2.py3-none-any.whl#sha256=69c0dbf2ed392de1cb5ec704444b08a5ef81680a61cb899dc08127123af36a79 (from jsonschema<4.0,>=3.0a3->poetry>=0.12) to build tracker '/tmp/pip-req-tracker-8mdv9nr2'
    Removed attrs>=17.4.0 from https://files.pythonhosted.org/packages/23/96/d828354fa2dbdf216eaa7b7de0db692f12c234f7ef888cc14980ef40d1d2/attrs-19.1.0-py2.py3-none-any.whl#sha256=69c0dbf2ed392de1cb5ec704444b08a5ef81680a61cb899dc08127123af36a79 (from jsonschema<4.0,>=3.0a3->poetry>=0.12) from build tracker '/tmp/pip-req-tracker-8mdv9nr2'
  Collecting pastel<0.2.0,>=0.1.0 (from cleo<0.7.0,>=0.6.7->poetry>=0.12)
    1 location(s) to search for versions of pastel:
    * https://pypi.org/simple/pastel/
    Getting page https://pypi.org/simple/pastel/
    Looking up "https://pypi.org/simple/pastel/" in the cache
    Request header has "max_age" as 0, cache bypassed
    https://pypi.org:443 "GET /simple/pastel/ HTTP/1.1" 200 400
    Updating cache with response from "https://pypi.org/simple/pastel/"
    Caching due to etag
    Analyzing links from page https://pypi.org/simple/pastel/
      Found link https://files.pythonhosted.org/packages/9b/7e/7d701686013c0d7dae62e0977467232a6adc2e562c23878eb3cd4f97d02e/pastel-0.1.0-py3-none-any.whl#sha256=d1fee8079534f99f1805a044fef946d23eee6d6a7cd34292c30e6c16be9a80b9 (from https://pypi.org/simple/pastel/), version: 0.1.0
      Found link https://files.pythonhosted.org/packages/bd/13/a68f2e448b471e8c49e9b596d569ae167a5135ac672b1dc5f24f62f9c15f/pastel-0.1.0.tar.gz#sha256=3108af417ec0fa6d0a620e676ec4f02c839ca13e10611586e5d2174b46aa0bc3 (from https://pypi.org/simple/pastel/), version: 0.1.0
    Using version 0.1.0 (newest of versions: 0.1.0)
    Created temporary directory: /tmp/pip-unpack-7kq7hd4t
    Looking up "https://files.pythonhosted.org/packages/9b/7e/7d701686013c0d7dae62e0977467232a6adc2e562c23878eb3cd4f97d02e/pastel-0.1.0-py3-none-any.whl" in the cache
    No cache entry available
    https://files.pythonhosted.org:443 "GET /packages/9b/7e/7d701686013c0d7dae62e0977467232a6adc2e562c23878eb3cd4f97d02e/pastel-0.1.0-py3-none-any.whl HTTP/1.1" 200 6718
    Downloading https://files.pythonhosted.org/packages/9b/7e/7d701686013c0d7dae62e0977467232a6adc2e562c23878eb3cd4f97d02e/pastel-0.1.0-py3-none-any.whl
    Downloading from URL https://files.pythonhosted.org/packages/9b/7e/7d701686013c0d7dae62e0977467232a6adc2e562c23878eb3cd4f97d02e/pastel-0.1.0-py3-none-any.whl#sha256=d1fee8079534f99f1805a044fef946d23eee6d6a7cd34292c30e6c16be9a80b9 (from https://pypi.org/simple/pastel/)
    Ignoring unknown cache-control directive: immutable
    Updating cache with response from "https://files.pythonhosted.org/packages/9b/7e/7d701686013c0d7dae62e0977467232a6adc2e562c23878eb3cd4f97d02e/pastel-0.1.0-py3-none-any.whl"
    Caching due to etag
    Added pastel<0.2.0,>=0.1.0 from https://files.pythonhosted.org/packages/9b/7e/7d701686013c0d7dae62e0977467232a6adc2e562c23878eb3cd4f97d02e/pastel-0.1.0-py3-none-any.whl#sha256=d1fee8079534f99f1805a044fef946d23eee6d6a7cd34292c30e6c16be9a80b9 (from cleo<0.7.0,>=0.6.7->poetry>=0.12) to build tracker '/tmp/pip-req-tracker-8mdv9nr2'
    Removed pastel<0.2.0,>=0.1.0 from https://files.pythonhosted.org/packages/9b/7e/7d701686013c0d7dae62e0977467232a6adc2e562c23878eb3cd4f97d02e/pastel-0.1.0-py3-none-any.whl#sha256=d1fee8079534f99f1805a044fef946d23eee6d6a7cd34292c30e6c16be9a80b9 (from cleo<0.7.0,>=0.6.7->poetry>=0.12) from build tracker '/tmp/pip-req-tracker-8mdv9nr2'
  Collecting pylev<2.0,>=1.3 (from cleo<0.7.0,>=0.6.7->poetry>=0.12)
    1 location(s) to search for versions of pylev:
    * https://pypi.org/simple/pylev/
    Getting page https://pypi.org/simple/pylev/
    Looking up "https://pypi.org/simple/pylev/" in the cache
    Request header has "max_age" as 0, cache bypassed
    https://pypi.org:443 "GET /simple/pylev/ HTTP/1.1" 200 931
    Updating cache with response from "https://pypi.org/simple/pylev/"
    Caching due to etag
    Analyzing links from page https://pypi.org/simple/pylev/
      Found link https://files.pythonhosted.org/packages/e3/b2/c95b670c668858d217a1b6e94e8f7fcf79a4c1e02db1e1c24b0515435d24/pylev-1.0.0.tar.gz#sha256=f8658050912d4ac77886c06e38fec07a164c443e537d6e035643ee0ca7a25f4d (from https://pypi.org/simple/pylev/), version: 1.0.0
      Found link https://files.pythonhosted.org/packages/9a/3c/6076072ebd61a7836d83db0c6b57020c8221fd6f26e402ff24cf5b3e692e/pylev-1.0.1.tar.gz#sha256=58d67b93e9166277ddb72886bafb44d5d356313e99e3d7815c4a311121f41df1 (from https://pypi.org/simple/pylev/), version: 1.0.1
      Found link https://files.pythonhosted.org/packages/c0/4c/16ea4b520b190fd1a0e02c5f3ac8151cf1cbf76e702da4ebdc40bf830620/pylev-1.0.2.tar.gz#sha256=1152d9708e1e84205e7de186ea07bbcef08add3fe1560d60c908ec453f28924d (from https://pypi.org/simple/pylev/), version: 1.0.2
      Found link https://files.pythonhosted.org/packages/f3/a7/d48071f549aea73a7ed513e0e87a9754d1181e35e094d21970d38a09031e/pylev-1.1.0.tar.gz#sha256=569e038dbb863396e6bbd3b1cdd44a50559f4a046422e864c5cc6d2429cd624f (from https://pypi.org/simple/pylev/), version: 1.1.0
      Found link https://files.pythonhosted.org/packages/4c/c1/fbf1e7949bf8a9d96512a3d236e2f51b1c185fedf858b97e53393d6a0f63/pylev-1.2.0-py2.py3-none-any.whl#sha256=ded6f7b40ed01b7717f66303ac5e0c2d7a0b78c40f98ecd7e40d946e2176fdc0 (from https://pypi.org/simple/pylev/), version: 1.2.0
      Found link https://files.pythonhosted.org/packages/49/32/ae7248aa0b459475994d44917639d9b7a9b0208c71fc9142a381d9776797/pylev-1.2.0.tar.gz#sha256=0187706ab2fa9db9f1bf4976b5f8a1fc69f04e005f535672147da9c79669bfa1 (from https://pypi.org/simple/pylev/), version: 1.2.0
      Found link https://files.pythonhosted.org/packages/40/1c/7dff1d242bf1e19f9c6202f0ba4e6fd18cc7ecb8bc85b17b2d16c806e228/pylev-1.3.0-py2.py3-none-any.whl#sha256=1d29a87beb45ebe1e821e7a3b10da2b6b2f4c79b43f482c2df1a1f748a6e114e (from https://pypi.org/simple/pylev/), version: 1.3.0
      Found link https://files.pythonhosted.org/packages/cc/61/dab2081d3d86dcf0b9f5dcfb11b256d76cd14aad7ccdd7c8dd5e7f7e41a0/pylev-1.3.0.tar.gz#sha256=063910098161199b81e453025653ec53556c1be7165a9b7c50be2f4d57eae1c3 (from https://pypi.org/simple/pylev/), version: 1.3.0
    Using version 1.3.0 (newest of versions: 1.3.0)
    Created temporary directory: /tmp/pip-unpack-0c6jzdd1
    Looking up "https://files.pythonhosted.org/packages/40/1c/7dff1d242bf1e19f9c6202f0ba4e6fd18cc7ecb8bc85b17b2d16c806e228/pylev-1.3.0-py2.py3-none-any.whl" in the cache
    No cache entry available
    https://files.pythonhosted.org:443 "GET /packages/40/1c/7dff1d242bf1e19f9c6202f0ba4e6fd18cc7ecb8bc85b17b2d16c806e228/pylev-1.3.0-py2.py3-none-any.whl HTTP/1.1" 200 4927
    Downloading https://files.pythonhosted.org/packages/40/1c/7dff1d242bf1e19f9c6202f0ba4e6fd18cc7ecb8bc85b17b2d16c806e228/pylev-1.3.0-py2.py3-none-any.whl
    Downloading from URL https://files.pythonhosted.org/packages/40/1c/7dff1d242bf1e19f9c6202f0ba4e6fd18cc7ecb8bc85b17b2d16c806e228/pylev-1.3.0-py2.py3-none-any.whl#sha256=1d29a87beb45ebe1e821e7a3b10da2b6b2f4c79b43f482c2df1a1f748a6e114e (from https://pypi.org/simple/pylev/)
    Ignoring unknown cache-control directive: immutable
    Updating cache with response from "https://files.pythonhosted.org/packages/40/1c/7dff1d242bf1e19f9c6202f0ba4e6fd18cc7ecb8bc85b17b2d16c806e228/pylev-1.3.0-py2.py3-none-any.whl"
    Caching due to etag
    Added pylev<2.0,>=1.3 from https://files.pythonhosted.org/packages/40/1c/7dff1d242bf1e19f9c6202f0ba4e6fd18cc7ecb8bc85b17b2d16c806e228/pylev-1.3.0-py2.py3-none-any.whl#sha256=1d29a87beb45ebe1e821e7a3b10da2b6b2f4c79b43f482c2df1a1f748a6e114e (from cleo<0.7.0,>=0.6.7->poetry>=0.12) to build tracker '/tmp/pip-req-tracker-8mdv9nr2'
    Removed pylev<2.0,>=1.3 from https://files.pythonhosted.org/packages/40/1c/7dff1d242bf1e19f9c6202f0ba4e6fd18cc7ecb8bc85b17b2d16c806e228/pylev-1.3.0-py2.py3-none-any.whl#sha256=1d29a87beb45ebe1e821e7a3b10da2b6b2f4c79b43f482c2df1a1f748a6e114e (from cleo<0.7.0,>=0.6.7->poetry>=0.12) from build tracker '/tmp/pip-req-tracker-8mdv9nr2'
  Collecting msgpack (from cachecontrol[filecache]<0.13.0,>=0.12.4->poetry>=0.12)
    1 location(s) to search for versions of msgpack:
    * https://pypi.org/simple/msgpack/
    Getting page https://pypi.org/simple/msgpack/
    Looking up "https://pypi.org/simple/msgpack/" in the cache
    Request header has "max_age" as 0, cache bypassed
    https://pypi.org:443 "GET /simple/msgpack/ HTTP/1.1" 200 11872
    Updating cache with response from "https://pypi.org/simple/msgpack/"
    Caching due to etag
    Analyzing links from page https://pypi.org/simple/msgpack/
      Skipping link https://files.pythonhosted.org/packages/ed/5136c66234482044070836cc622266839e2412f8108849ab0bfdeaab8578/msgpack-0.6.1.tar.gz#sha256=4008c72f5ef2b7936447dcb83db41d97e9791c83221be13d5e19db0796df1972 (from https://pypi.org/simple/msgpack/), version: 0.6.1
    Using version 0.6.1 (newest of versions: 0.5.0, 0.5.1, 0.5.2, 0.5.3, 0.5.4, 0.5.5, 0.5.6, 0.6.0, 0.6.1)
    Created temporary directory: /tmp/pip-unpack-p52srf58
    Looking up "https://files.pythonhosted.org/packages/92/7e/ae9e91c1bb8d846efafd1f353476e3fd7309778b582d2fb4cea4cc15b9a2/msgpack-0.6.1-cp36-cp36m-manylinux1_x86_64.whl" in the cache
    No cache entry available
    https://files.pythonhosted.org:443 "GET /packages/92/7e/ae9e91c1bb8d846efafd1f353476e3fd7309778b582d2fb4cea4cc15b9a2/msgpack-0.6.1-cp36-cp36m-manylinux1_x86_64.whl HTTP/1.1" 200 248851
    Downloading https://files.pythonhosted.org/packages/92/7e/ae9e91c1bb8d846efafd1f353476e3fd7309778b582d2fb4cea4cc15b9a2/msgpack-0.6.1-cp36-cp36m-manylinux1_x86_64.whl (248kB)
    Downloading from URL https://files.pythonhosted.org/packages/92/7e/ae9e91c1bb8d846efafd1f353476e3fd7309778b582d2fb4cea4cc15b9a2/msgpack-0.6.1-cp36-cp36m-manylinux1_x86_64.whl#sha256=62bd8e43d204580308d477a157b78d3fee2fb4c15d32578108dc5d89866036c8 (from https://pypi.org/simple/msgpack/)
    Ignoring unknown cache-control directive: immutable
    Updating cache with response from "https://files.pythonhosted.org/packages/92/7e/ae9e91c1bb8d846efafd1f353476e3fd7309778b582d2fb4cea4cc15b9a2/msgpack-0.6.1-cp36-cp36m-manylinux1_x86_64.whl"
    Caching due to etag
    Added msgpack from https://files.pythonhosted.org/packages/92/7e/ae9e91c1bb8d846efafd1f353476e3fd7309778b582d2fb4cea4cc15b9a2/msgpack-0.6.1-cp36-cp36m-manylinux1_x86_64.whl#sha256=62bd8e43d204580308d477a157b78d3fee2fb4c15d32578108dc5d89866036c8 (from cachecontrol[filecache]<0.13.0,>=0.12.4->poetry>=0.12) to build tracker '/tmp/pip-req-tracker-8mdv9nr2'
    Removed msgpack from https://files.pythonhosted.org/packages/92/7e/ae9e91c1bb8d846efafd1f353476e3fd7309778b582d2fb4cea4cc15b9a2/msgpack-0.6.1-cp36-cp36m-manylinux1_x86_64.whl#sha256=62bd8e43d204580308d477a157b78d3fee2fb4c15d32578108dc5d89866036c8 (from cachecontrol[filecache]<0.13.0,>=0.12.4->poetry>=0.12) from build tracker '/tmp/pip-req-tracker-8mdv9nr2'
  Collecting lockfile>=0.9 (from cachecontrol[filecache]<0.13.0,>=0.12.4->poetry>=0.12)
    1 location(s) to search for versions of lockfile:
    * https://pypi.org/simple/lockfile/
    Getting page https://pypi.org/simple/lockfile/
    Looking up "https://pypi.org/simple/lockfile/" in the cache
    Request header has "max_age" as 0, cache bypassed
    https://pypi.org:443 "GET /simple/lockfile/ HTTP/1.1" 200 945
    Updating cache with response from "https://pypi.org/simple/lockfile/"
    Caching due to etag
    Analyzing links from page https://pypi.org/simple/lockfile/
      Found link https://files.pythonhosted.org/packages/26/8d/26427b533c0fd4e1282f97e5ad457b22b6dea44c290584432d6b8814cade/lockfile-0.8.tar.gz#sha256=3b2cccb9517fa29f86b743577f00f4545d98905e13fe49452604af470e50ce22 (from https://pypi.org/simple/lockfile/), version: 0.8
      Found link https://files.pythonhosted.org/packages/fb/89/af965281e233d8722002a4b7b7b0b650d46875d03faa7e83a1463d6789e1/lockfile-0.9.1.tar.gz#sha256=23da589c91f59cb7c644d5ce5df539d448341bd479917d6dde973f82e2719147 (from https://pypi.org/simple/lockfile/), version: 0.9.1
      Skipping link https://files.pythonhosted.org/packages/14/00/cf7b269d28ba8919b64a2139f65c4ecc853dec61992cd542c202ed91a9e6/lockfile-0.10.2-py2-none-any.whl#sha256=81ee2d4b0923a2ee3e51b93af0db82efa3f049c7435a00549f9a3ba22cf70cbf (from https://pypi.org/simple/lockfile/); it is not compatible with this Python
      Found link https://files.pythonhosted.org/packages/6a/11/114c67b0e3c25c19497fde977538339530d8ffa050d6ec9349793f933faa/lockfile-0.10.2.tar.gz#sha256=9e42252f17d1dd89ee31745e0c4fbe58862c25147eb0ef5295c9cd9bcb4ea2c1 (from https://pypi.org/simple/lockfile/), version: 0.10.2
      Skipping link https://files.pythonhosted.org/packages/73/83/9474c4a257b75b9a08aacd7de0a30ad97d9cdaeb1cbf48efa46bcb1969ea/lockfile-0.11.0-py2-none-any.whl#sha256=6591deec873a9ccccc5aeb35a1146e065cc6cd0fdaf0786da8b7b84c31d41455 (from https://pypi.org/simple/lockfile/); it is not compatible with this Python
      Found link https://files.pythonhosted.org/packages/64/61/2e2b7424f5751f66f37ac12e10ffe94ea4b5bcccc697eccb19142bcf7c54/lockfile-0.11.0.tar.gz#sha256=eed7e0c829135aaaf2a9df83652bc6e2cc50175d933741c25aac0394674e7fd3 (from https://pypi.org/simple/lockfile/), version: 0.11.0
      Found link https://files.pythonhosted.org/packages/c8/22/9460e311f340cb62d26a38c419b1381b8593b0bb6b5d1f056938b086d362/lockfile-0.12.2-py2.py3-none-any.whl#sha256=6c3cb24f344923d30b2785d5ad75182c8ea7ac1b6171b08657258ec7429d50fa (from https://pypi.org/simple/lockfile/), version: 0.12.2
      Found link https://files.pythonhosted.org/packages/17/47/72cb04a58a35ec495f96984dddb48232b551aafb95bde614605b754fe6f7/lockfile-0.12.2.tar.gz#sha256=6aed02de03cba24efabcd600b30540140634fc06cfa603822d508d5361e9f799 (from https://pypi.org/simple/lockfile/), version: 0.12.2
    Using version 0.12.2 (newest of versions: 0.9.1, 0.10.2, 0.11.0, 0.12.2)
    Created temporary directory: /tmp/pip-unpack-fu4tf177
    Looking up "https://files.pythonhosted.org/packages/c8/22/9460e311f340cb62d26a38c419b1381b8593b0bb6b5d1f056938b086d362/lockfile-0.12.2-py2.py3-none-any.whl" in the cache
    No cache entry available
    https://files.pythonhosted.org:443 "GET /packages/c8/22/9460e311f340cb62d26a38c419b1381b8593b0bb6b5d1f056938b086d362/lockfile-0.12.2-py2.py3-none-any.whl HTTP/1.1" 200 13564
    Downloading https://files.pythonhosted.org/packages/c8/22/9460e311f340cb62d26a38c419b1381b8593b0bb6b5d1f056938b086d362/lockfile-0.12.2-py2.py3-none-any.whl
    Downloading from URL https://files.pythonhosted.org/packages/c8/22/9460e311f340cb62d26a38c419b1381b8593b0bb6b5d1f056938b086d362/lockfile-0.12.2-py2.py3-none-any.whl#sha256=6c3cb24f344923d30b2785d5ad75182c8ea7ac1b6171b08657258ec7429d50fa (from https://pypi.org/simple/lockfile/)
    Ignoring unknown cache-control directive: immutable
    Updating cache with response from "https://files.pythonhosted.org/packages/c8/22/9460e311f340cb62d26a38c419b1381b8593b0bb6b5d1f056938b086d362/lockfile-0.12.2-py2.py3-none-any.whl"
    Caching due to etag
    Added lockfile>=0.9 from https://files.pythonhosted.org/packages/c8/22/9460e311f340cb62d26a38c419b1381b8593b0bb6b5d1f056938b086d362/lockfile-0.12.2-py2.py3-none-any.whl#sha256=6c3cb24f344923d30b2785d5ad75182c8ea7ac1b6171b08657258ec7429d50fa (from cachecontrol[filecache]<0.13.0,>=0.12.4->poetry>=0.12) to build tracker '/tmp/pip-req-tracker-8mdv9nr2'
    Removed lockfile>=0.9 from https://files.pythonhosted.org/packages/c8/22/9460e311f340cb62d26a38c419b1381b8593b0bb6b5d1f056938b086d362/lockfile-0.12.2-py2.py3-none-any.whl#sha256=6c3cb24f344923d30b2785d5ad75182c8ea7ac1b6171b08657258ec7429d50fa (from cachecontrol[filecache]<0.13.0,>=0.12.4->poetry>=0.12) from build tracker '/tmp/pip-req-tracker-8mdv9nr2'
  Collecting webencodings (from html5lib<2.0,>=1.0->poetry>=0.12)
    1 location(s) to search for versions of webencodings:
    * https://pypi.org/simple/webencodings/
    Getting page https://pypi.org/simple/webencodings/
    Looking up "https://pypi.org/simple/webencodings/" in the cache
    Request header has "max_age" as 0, cache bypassed
    https://pypi.org:443 "GET /simple/webencodings/ HTTP/1.1" 304 0
    Analyzing links from page https://pypi.org/simple/webencodings/
      Found link https://files.pythonhosted.org/packages/09/7e/3bc753d7e12e770201021bde5f62d515a4e9eb6adcadcbb7e548c9d33040/webencodings-0.1.tar.gz#sha256=eaac829e979dbe142175297733cfd802abd489a52a5d4891bdf2a7e8be7c1aee (from https://pypi.org/simple/webencodings/), version: 0.1
      Found link https://files.pythonhosted.org/packages/89/be/b9b6338b1eb548401f8b4b08b30b654b39fbfeb826a83cc374ac252398dd/webencodings-0.2.tar.gz#sha256=3bfdeb51884138c50604ebc61171fbac3c5dcbcb446e146847d23aff8646ab0a (from https://pypi.org/simple/webencodings/), version: 0.2
      Found link https://files.pythonhosted.org/packages/0d/cd/e7724622c49d8e392041b468a330ed2019953676507f28169299c1153a7e/webencodings-0.3.tar.gz#sha256=1045dee1b4ed6fead8cfab5131d2a30913379fc16ab56bec407a57728add85a2 (from https://pypi.org/simple/webencodings/), version: 0.3
      Found link https://files.pythonhosted.org/packages/a4/1b/5add42eff950cf85ecdd3244fc7e7eef8ebb81131289ad69b8b0089f86ab/webencodings-0.4.tar.gz#sha256=3a45b2af274dabbb84eb68256bf0fb1e2e87a48ae4ad3ba4d7936cef3ce14e1d (from https://pypi.org/simple/webencodings/), version: 0.4
      Found link https://files.pythonhosted.org/packages/c3/e5/74d05eed73b09752ac3dc4a8a69ae92ffa1ce92fcb03eaa624d1fcd17e33/webencodings-0.5.tar.gz#sha256=a5c55ee93b24e740fe951c37b5c228dccc1f171450e188555a775261cce1b904 (from https://pypi.org/simple/webencodings/), version: 0.5
      Found link https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl#sha256=a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78 (from https://pypi.org/simple/webencodings/), version: 0.5.1
      Found link https://files.pythonhosted.org/packages/0b/02/ae6ceac1baeda530866a85075641cec12989bd8d31af6d5ab4a3e8c92f47/webencodings-0.5.1.tar.gz#sha256=b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923 (from https://pypi.org/simple/webencodings/), version: 0.5.1
    Using version 0.5.1 (newest of versions: 0.1, 0.2, 0.3, 0.4, 0.5, 0.5.1)
    Created temporary directory: /tmp/pip-unpack-4lj0aaxg
    Looking up "https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl" in the cache
    Current age based on date: 1814409
    Ignoring unknown cache-control directive: immutable
    Freshness lifetime from max-age: 365000000
    The response is "fresh", returning cached response
    365000000 > 1814409
    Using cached https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl
    Downloading from URL https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl#sha256=a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78 (from https://pypi.org/simple/webencodings/)
    Added webencodings from https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl#sha256=a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78 (from html5lib<2.0,>=1.0->poetry>=0.12) to build tracker '/tmp/pip-req-tracker-8mdv9nr2'
    Removed webencodings from https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl#sha256=a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78 (from html5lib<2.0,>=1.0->poetry>=0.12) from build tracker '/tmp/pip-req-tracker-8mdv9nr2'
  Building wheels for collected packages: pyrsistent, cachecontrol
    Created temporary directory: /tmp/pip-wheel-zblqpok0
    Building wheel for pyrsistent (setup.py): started
    Destination directory: /tmp/pip-wheel-zblqpok0
    Running command /usr/bin/python3 -u -c 'import setuptools, tokenize;__file__='"'"'/tmp/pip-install-adglwq7w/pyrsistent/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-zblqpok0 --python-tag cp36
    running bdist_wheel
    running build
    running build_py
    creating build
    creating build/lib.linux-x86_64-3.6
    copying _pyrsistent_version.py -> build/lib.linux-x86_64-3.6
    creating build/lib.linux-x86_64-3.6/pyrsistent
    copying pyrsistent/_checked_types.py -> build/lib.linux-x86_64-3.6/pyrsistent
    copying pyrsistent/_pbag.py -> build/lib.linux-x86_64-3.6/pyrsistent
    copying pyrsistent/_toolz.py -> build/lib.linux-x86_64-3.6/pyrsistent
    copying pyrsistent/_precord.py -> build/lib.linux-x86_64-3.6/pyrsistent
    copying pyrsistent/__init__.py -> build/lib.linux-x86_64-3.6/pyrsistent
    copying pyrsistent/_pset.py -> build/lib.linux-x86_64-3.6/pyrsistent
    copying pyrsistent/typing.py -> build/lib.linux-x86_64-3.6/pyrsistent
    copying pyrsistent/_helpers.py -> build/lib.linux-x86_64-3.6/pyrsistent
    copying pyrsistent/_pvector.py -> build/lib.linux-x86_64-3.6/pyrsistent
    copying pyrsistent/_pmap.py -> build/lib.linux-x86_64-3.6/pyrsistent
    copying pyrsistent/_immutable.py -> build/lib.linux-x86_64-3.6/pyrsistent
    copying pyrsistent/_plist.py -> build/lib.linux-x86_64-3.6/pyrsistent
    copying pyrsistent/_compat.py -> build/lib.linux-x86_64-3.6/pyrsistent
    copying pyrsistent/_transformations.py -> build/lib.linux-x86_64-3.6/pyrsistent
    copying pyrsistent/_field_common.py -> build/lib.linux-x86_64-3.6/pyrsistent
    copying pyrsistent/_pclass.py -> build/lib.linux-x86_64-3.6/pyrsistent
    copying pyrsistent/_pdeque.py -> build/lib.linux-x86_64-3.6/pyrsistent
    copying pyrsistent/py.typed -> build/lib.linux-x86_64-3.6/pyrsistent
    copying pyrsistent/__init__.pyi -> build/lib.linux-x86_64-3.6/pyrsistent
    copying pyrsistent/typing.pyi -> build/lib.linux-x86_64-3.6/pyrsistent
    running build_ext
    building 'pvectorc' extension
    creating build/temp.linux-x86_64-3.6
    x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/python3.6m -c pvectorcmodule.c -o build/temp.linux-x86_64-3.6/pvectorcmodule.o
    x86_64-linux-gnu-gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-Bsymbolic-functions -Wl,-z,relro -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 build/temp.linux-x86_64-3.6/pvectorcmodule.o -o build/lib.linux-x86_64-3.6/pvectorc.cpython-36m-x86_64-linux-gnu.so
    installing to build/bdist.linux-x86_64/wheel
    running install
    running install_lib
    creating build/bdist.linux-x86_64
    creating build/bdist.linux-x86_64/wheel
    creating build/bdist.linux-x86_64/wheel/pyrsistent
    copying build/lib.linux-x86_64-3.6/pyrsistent/_checked_types.py -> build/bdist.linux-x86_64/wheel/pyrsistent
    copying build/lib.linux-x86_64-3.6/pyrsistent/typing.pyi -> build/bdist.linux-x86_64/wheel/pyrsistent
    copying build/lib.linux-x86_64-3.6/pyrsistent/_pbag.py -> build/bdist.linux-x86_64/wheel/pyrsistent
    copying build/lib.linux-x86_64-3.6/pyrsistent/_toolz.py -> build/bdist.linux-x86_64/wheel/pyrsistent
    copying build/lib.linux-x86_64-3.6/pyrsistent/_precord.py -> build/bdist.linux-x86_64/wheel/pyrsistent
    copying build/lib.linux-x86_64-3.6/pyrsistent/__init__.py -> build/bdist.linux-x86_64/wheel/pyrsistent
    copying build/lib.linux-x86_64-3.6/pyrsistent/_pset.py -> build/bdist.linux-x86_64/wheel/pyrsistent
    copying build/lib.linux-x86_64-3.6/pyrsistent/typing.py -> build/bdist.linux-x86_64/wheel/pyrsistent
    copying build/lib.linux-x86_64-3.6/pyrsistent/_helpers.py -> build/bdist.linux-x86_64/wheel/pyrsistent
    copying build/lib.linux-x86_64-3.6/pyrsistent/_pvector.py -> build/bdist.linux-x86_64/wheel/pyrsistent
    copying build/lib.linux-x86_64-3.6/pyrsistent/_pmap.py -> build/bdist.linux-x86_64/wheel/pyrsistent
    copying build/lib.linux-x86_64-3.6/pyrsistent/_immutable.py -> build/bdist.linux-x86_64/wheel/pyrsistent
    copying build/lib.linux-x86_64-3.6/pyrsistent/__init__.pyi -> build/bdist.linux-x86_64/wheel/pyrsistent
    copying build/lib.linux-x86_64-3.6/pyrsistent/_plist.py -> build/bdist.linux-x86_64/wheel/pyrsistent
    copying build/lib.linux-x86_64-3.6/pyrsistent/_compat.py -> build/bdist.linux-x86_64/wheel/pyrsistent
    copying build/lib.linux-x86_64-3.6/pyrsistent/_transformations.py -> build/bdist.linux-x86_64/wheel/pyrsistent
    copying build/lib.linux-x86_64-3.6/pyrsistent/_field_common.py -> build/bdist.linux-x86_64/wheel/pyrsistent
    copying build/lib.linux-x86_64-3.6/pyrsistent/_pclass.py -> build/bdist.linux-x86_64/wheel/pyrsistent
    copying build/lib.linux-x86_64-3.6/pyrsistent/py.typed -> build/bdist.linux-x86_64/wheel/pyrsistent
    copying build/lib.linux-x86_64-3.6/pyrsistent/_pdeque.py -> build/bdist.linux-x86_64/wheel/pyrsistent
    copying build/lib.linux-x86_64-3.6/_pyrsistent_version.py -> build/bdist.linux-x86_64/wheel
    copying build/lib.linux-x86_64-3.6/pvectorc.cpython-36m-x86_64-linux-gnu.so -> build/bdist.linux-x86_64/wheel
    running install_egg_info
    running egg_info
    writing pyrsistent.egg-info/PKG-INFO
    writing dependency_links to pyrsistent.egg-info/dependency_links.txt
    writing requirements to pyrsistent.egg-info/requires.txt
    writing top-level names to pyrsistent.egg-info/top_level.txt
    reading manifest file 'pyrsistent.egg-info/SOURCES.txt'
    reading manifest template 'MANIFEST.in'
    writing manifest file 'pyrsistent.egg-info/SOURCES.txt'
    Copying pyrsistent.egg-info to build/bdist.linux-x86_64/wheel/pyrsistent-0.14.11-py3.6.egg-info
    running install_scripts
    adding license file "LICENCE.mit" (matched pattern "LICEN[CS]E*")
    creating build/bdist.linux-x86_64/wheel/pyrsistent-0.14.11.dist-info/WHEEL
    creating '/tmp/pip-wheel-zblqpok0/pyrsistent-0.14.11-cp36-cp36m-linux_x86_64.whl' and adding 'build/bdist.linux-x86_64/wheel' to it
    adding '_pyrsistent_version.py'
    adding 'pvectorc.cpython-36m-x86_64-linux-gnu.so'
    adding 'pyrsistent/__init__.py'
    adding 'pyrsistent/__init__.pyi'
    adding 'pyrsistent/_checked_types.py'
    adding 'pyrsistent/_compat.py'
    adding 'pyrsistent/_field_common.py'
    adding 'pyrsistent/_helpers.py'
    adding 'pyrsistent/_immutable.py'
    adding 'pyrsistent/_pbag.py'
    adding 'pyrsistent/_pclass.py'
    adding 'pyrsistent/_pdeque.py'
    adding 'pyrsistent/_plist.py'
    adding 'pyrsistent/_pmap.py'
    adding 'pyrsistent/_precord.py'
    adding 'pyrsistent/_pset.py'
    adding 'pyrsistent/_pvector.py'
    adding 'pyrsistent/_toolz.py'
    adding 'pyrsistent/_transformations.py'
    adding 'pyrsistent/py.typed'
    adding 'pyrsistent/typing.py'
    adding 'pyrsistent/typing.pyi'
    adding 'pyrsistent-0.14.11.dist-info/LICENCE.mit'
    adding 'pyrsistent-0.14.11.dist-info/METADATA'
    adding 'pyrsistent-0.14.11.dist-info/WHEEL'
    adding 'pyrsistent-0.14.11.dist-info/top_level.txt'
    adding 'pyrsistent-0.14.11.dist-info/RECORD'
    removing build/bdist.linux-x86_64/wheel
    Building wheel for pyrsistent (setup.py): finished with status 'done'
    Stored in directory: /home/evandro/.cache/pip/wheels/83/59/9a/a037b9b3c3e93d9275ea0aff9d6064400f372879dfdab01afe
    Removing source in /tmp/pip-install-adglwq7w/pyrsistent
    Created temporary directory: /tmp/pip-wheel-oz5it5lw
    Building wheel for cachecontrol (setup.py): started
    Destination directory: /tmp/pip-wheel-oz5it5lw
    Running command /usr/bin/python3 -u -c 'import setuptools, tokenize;__file__='"'"'/tmp/pip-install-adglwq7w/cachecontrol/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-oz5it5lw --python-tag cp36
    running bdist_wheel
    running build
    running build_py
    creating build
    creating build/lib
    creating build/lib/cachecontrol
    copying cachecontrol/adapter.py -> build/lib/cachecontrol
    copying cachecontrol/serialize.py -> build/lib/cachecontrol
    copying cachecontrol/controller.py -> build/lib/cachecontrol
    copying cachecontrol/wrapper.py -> build/lib/cachecontrol
    copying cachecontrol/__init__.py -> build/lib/cachecontrol
    copying cachecontrol/heuristics.py -> build/lib/cachecontrol
    copying cachecontrol/cache.py -> build/lib/cachecontrol
    copying cachecontrol/_cmd.py -> build/lib/cachecontrol
    copying cachecontrol/compat.py -> build/lib/cachecontrol
    copying cachecontrol/filewrapper.py -> build/lib/cachecontrol
    creating build/lib/cachecontrol/caches
    copying cachecontrol/caches/redis_cache.py -> build/lib/cachecontrol/caches
    copying cachecontrol/caches/file_cache.py -> build/lib/cachecontrol/caches
    copying cachecontrol/caches/__init__.py -> build/lib/cachecontrol/caches
    running egg_info
    writing CacheControl.egg-info/PKG-INFO
    writing dependency_links to CacheControl.egg-info/dependency_links.txt
    writing entry points to CacheControl.egg-info/entry_points.txt
    writing requirements to CacheControl.egg-info/requires.txt
    writing top-level names to CacheControl.egg-info/top_level.txt
    reading manifest file 'CacheControl.egg-info/SOURCES.txt'
    reading manifest template 'MANIFEST.in'
    writing manifest file 'CacheControl.egg-info/SOURCES.txt'
    installing to build/bdist.linux-x86_64/wheel
    running install
    running install_lib
    creating build/bdist.linux-x86_64
    creating build/bdist.linux-x86_64/wheel
    creating build/bdist.linux-x86_64/wheel/cachecontrol
    copying build/lib/cachecontrol/adapter.py -> build/bdist.linux-x86_64/wheel/cachecontrol
    copying build/lib/cachecontrol/serialize.py -> build/bdist.linux-x86_64/wheel/cachecontrol
    copying build/lib/cachecontrol/controller.py -> build/bdist.linux-x86_64/wheel/cachecontrol
    copying build/lib/cachecontrol/wrapper.py -> build/bdist.linux-x86_64/wheel/cachecontrol
    creating build/bdist.linux-x86_64/wheel/cachecontrol/caches
    copying build/lib/cachecontrol/caches/redis_cache.py -> build/bdist.linux-x86_64/wheel/cachecontrol/caches
    copying build/lib/cachecontrol/caches/file_cache.py -> build/bdist.linux-x86_64/wheel/cachecontrol/caches
    copying build/lib/cachecontrol/caches/__init__.py -> build/bdist.linux-x86_64/wheel/cachecontrol/caches
    copying build/lib/cachecontrol/__init__.py -> build/bdist.linux-x86_64/wheel/cachecontrol
    copying build/lib/cachecontrol/heuristics.py -> build/bdist.linux-x86_64/wheel/cachecontrol
    copying build/lib/cachecontrol/cache.py -> build/bdist.linux-x86_64/wheel/cachecontrol
    copying build/lib/cachecontrol/_cmd.py -> build/bdist.linux-x86_64/wheel/cachecontrol
    copying build/lib/cachecontrol/compat.py -> build/bdist.linux-x86_64/wheel/cachecontrol
    copying build/lib/cachecontrol/filewrapper.py -> build/bdist.linux-x86_64/wheel/cachecontrol
    running install_egg_info
    Copying CacheControl.egg-info to build/bdist.linux-x86_64/wheel/CacheControl-0.12.5-py3.6.egg-info
    running install_scripts
    adding license file "LICENSE.txt" (matched pattern "LICEN[CS]E*")
    creating build/bdist.linux-x86_64/wheel/CacheControl-0.12.5.dist-info/WHEEL
    creating '/tmp/pip-wheel-oz5it5lw/CacheControl-0.12.5-cp36-none-any.whl' and adding 'build/bdist.linux-x86_64/wheel' to it
    adding 'cachecontrol/__init__.py'
    adding 'cachecontrol/_cmd.py'
    adding 'cachecontrol/adapter.py'
    adding 'cachecontrol/cache.py'
    adding 'cachecontrol/compat.py'
    adding 'cachecontrol/controller.py'
    adding 'cachecontrol/filewrapper.py'
    adding 'cachecontrol/heuristics.py'
    adding 'cachecontrol/serialize.py'
    adding 'cachecontrol/wrapper.py'
    adding 'cachecontrol/caches/__init__.py'
    adding 'cachecontrol/caches/file_cache.py'
    adding 'cachecontrol/caches/redis_cache.py'
    adding 'CacheControl-0.12.5.dist-info/LICENSE.txt'
    adding 'CacheControl-0.12.5.dist-info/METADATA'
    adding 'CacheControl-0.12.5.dist-info/WHEEL'
    adding 'CacheControl-0.12.5.dist-info/entry_points.txt'
    adding 'CacheControl-0.12.5.dist-info/top_level.txt'
    adding 'CacheControl-0.12.5.dist-info/RECORD'
    removing build/bdist.linux-x86_64/wheel
    Building wheel for cachecontrol (setup.py): finished with status 'done'
    Stored in directory: /home/evandro/.cache/pip/wheels/36/bd/5f/dbbee4f2d51f97ecd12a363f870361179cb1fd4bc1174ea08a
    Removing source in /tmp/pip-install-adglwq7w/cachecontrol
  Successfully built pyrsistent cachecontrol
  Installing collected packages: pkginfo, urllib3, chardet, certifi, idna, requests, requests-toolbelt, cachy, tomlkit, six, setuptools, pyrsistent, attrs, jsonschema, pyparsing, pastel, pylev, cleo, shellingham, msgpack, lockfile, cachecontrol, webencodings, html5lib, poetry

    Creating /tmp/pip-build-env-b9b5cmsv/overlay/bin
    changing mode of /tmp/pip-build-env-b9b5cmsv/overlay/bin/pkginfo to 775


    changing mode of /tmp/pip-build-env-b9b5cmsv/overlay/bin/chardetect to 775








    changing mode of /tmp/pip-build-env-b9b5cmsv/overlay/bin/easy_install to 775
    changing mode of /tmp/pip-build-env-b9b5cmsv/overlay/bin/easy_install-3.6 to 775



    changing mode of /tmp/pip-build-env-b9b5cmsv/overlay/bin/jsonschema to 775








    changing mode of /tmp/pip-build-env-b9b5cmsv/overlay/bin/doesitcache to 775



    changing mode of /tmp/pip-build-env-b9b5cmsv/overlay/bin/poetry to 775
  Successfully installed attrs-19.1.0 cachecontrol-0.12.5 cachy-0.2.0 certifi-2019.3.9 chardet-3.0.4 cleo-0.6.8 html5lib-1.0.1 idna-2.8 jsonschema-3.0.1 lockfile-0.12.2 msgpack-0.6.1 pastel-0.1.0 pkginfo-1.5.0.1 poetry-0.12.16 pylev-1.3.0 pyparsing-2.4.0 pyrsistent-0.14.11 requests-2.22.0 requests-toolbelt-0.8.0 setuptools-41.0.1 shellingham-1.3.1 six-1.12.0 tomlkit-0.5.3 urllib3-1.25.3 webencodings-0.5.1
  Cleaning up...
  Cleaned build tracker '/tmp/pip-req-tracker-8mdv9nr2'
  1 location(s) to search for versions of pip:
  * https://pypi.org/simple/pip/
  Getting page https://pypi.org/simple/pip/
  Looking up "https://pypi.org/simple/pip/" in the cache
  Request header has "max_age" as 0, cache bypassed
  Starting new HTTPS connection (1): pypi.org:443
  https://pypi.org:443 "GET /simple/pip/ HTTP/1.1" 304 0
  Analyzing links from page https://pypi.org/simple/pip/
    Found link https://files.pythonhosted.org/packages/334469ef299fcd273de4438386deb7b8681dd059f0ee3b7/pip-19.1.tar.gz#sha256=d9137cb543d8a4d73140a3282f6d777b2e786bb6abb8add3ac5b6539c82cd624 (from https://pypi.org/simple/pip/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*), version: 19.1
    Found link https://files.pythonhosted.org/packages/5c/e0/be401c003291b56efc55aeba6a80ab790d3d4cece2778288d65323009420/pip-19.1.1-py2.py3-none-any.whl#sha256=993134f0475471b91452ca029d4390dc8f298ac63a712814f101cd1b6db46676 (from https://pypi.org/simple/pip/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*), version: 19.1.1
    Found link https://files.pythonhosted.org/packages/93/ab/f86b61bef7ab14909bd7ec3cd2178feb0a1c86d451bc9bccd5a1aedcde5f/pip-19.1.1.tar.gz#sha256=44d3d7d3d30a1eb65c7e5ff1173cdf8f7467850605ac7cc3707b6064bddd0958 (from https://pypi.org/simple/pip/) (requires-python:>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*), version: 19.1.1
  Installing build dependencies ... done
  Running command /usr/bin/python3 /home/evandro/.local/lib/python3.6/site-packages/pip/_vendor/pep517/_in_process.py get_requires_for_build_wheel /tmp/tmplw1t97no
  Getting requirements to build wheel ... done
    Running command /usr/bin/python3 /home/evandro/.local/lib/python3.6/site-packages/pip/_vendor/pep517/_in_process.py prepare_metadata_for_build_wheel /tmp/tmpiqwelz4w
    Preparing wheel metadata ... done
  Source in /tmp/pip-req-build-u2nziy3a has version 0.1.2, which satisfies requirement hyperscan==0.1.2 from file:///myfiles/Downloads/python-hyperscan
  Removed hyperscan==0.1.2 from file:///myfiles/Downloads/python-hyperscan from build tracker '/tmp/pip-req-tracker-8mdv9nr2'
Building wheels for collected packages: hyperscan
  Created temporary directory: /tmp/pip-wheel-i7zjeahx
  Destination directory: /tmp/pip-wheel-i7zjeahx
  Running command /usr/bin/python3 /home/evandro/.local/lib/python3.6/site-packages/pip/_vendor/pep517/_in_process.py build_wheel /tmp/tmpcuyr4ceg
  Traceback (most recent call last):
    File "/tmp/pip-build-env-b9b5cmsv/overlay/lib/python3.6/site-packages/poetry/utils/env.py", line 382, in run
      cmd, stderr=subprocess.STDOUT, **kwargs
    File "/usr/lib/python3.6/subprocess.py", line 336, in check_output
      **kwargs).stdout
    File "/usr/lib/python3.6/subprocess.py", line 418, in run
      output=stdout, stderr=stderr)
  subprocess.CalledProcessError: Command '['/usr/bin/python', 'setup.py', 'build', '-b', 'build']' returned non-zero exit status 2.

  During handling of the above exception, another exception occurred:

  Traceback (most recent call last):
    File "/home/evandro/.local/lib/python3.6/site-packages/pip/_vendor/pep517/_in_process.py", line 207, in <module>
      main()
    File "/home/evandro/.local/lib/python3.6/site-packages/pip/_vendor/pep517/_in_process.py", line 197, in main
      json_out['return_val'] = hook(**hook_input['kwargs'])
    File "/home/evandro/.local/lib/python3.6/site-packages/pip/_vendor/pep517/_in_process.py", line 141, in build_wheel
      metadata_directory)
    File "/tmp/pip-build-env-b9b5cmsv/overlay/lib/python3.6/site-packages/poetry/masonry/api.py", line 60, in build_wheel
      poetry, SystemEnv(Path(sys.prefix)), NullIO(), Path(wheel_directory)
    File "/tmp/pip-build-env-b9b5cmsv/overlay/lib/python3.6/site-packages/poetry/masonry/builders/wheel.py", line 50, in make_in
      wb.build()
    File "/tmp/pip-build-env-b9b5cmsv/overlay/lib/python3.6/site-packages/poetry/masonry/builders/wheel.py", line 76, in build
      self._build(zip_file)
    File "/tmp/pip-build-env-b9b5cmsv/overlay/lib/python3.6/site-packages/poetry/masonry/builders/wheel.py", line 97, in _build
      "python", str(setup), "build", "-b", str(self._path / "build")
    File "/tmp/pip-build-env-b9b5cmsv/overlay/lib/python3.6/site-packages/poetry/utils/env.py", line 385, in run
      raise EnvCommandError(e)
  poetry.utils.env.EnvCommandError: Command ['/usr/bin/python', 'setup.py', 'build', '-b', 'build'] errored with the following output:
  /usr/bin/python: can't open file 'setup.py': [Errno 2] No such file or directory

  Building wheel for hyperscan (PEP 517) ... error
  ERROR: Failed building wheel for hyperscan
  Running setup.py clean for hyperscan
  Running command /usr/bin/python3 -u -c 'import setuptools, tokenize;__file__='"'"'/tmp/pip-req-build-u2nziy3a/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' clean --all
  Traceback (most recent call last):
    File "<string>", line 1, in <module>
    File "/usr/lib/python3.6/tokenize.py", line 452, in open
      buffer = _builtin_open(filename, 'rb')
  FileNotFoundError: [Errno 2] No such file or directory: '/tmp/pip-req-build-u2nziy3a/setup.py'
  ERROR: Failed cleaning build dir for hyperscan
Failed to build hyperscan
Cleaning up...
  Removing source in /tmp/pip-req-build-u2nziy3a
Removed build tracker '/tmp/pip-req-tracker-8mdv9nr2'
ERROR: Could not build wheels for hyperscan which use PEP 517 and cannot be installed directly
Exception information:
Traceback (most recent call last):
  File "/home/evandro/.local/lib/python3.6/site-packages/pip/_internal/cli/base_command.py", line 178, in main
    status = self.run(options, args)
  File "/home/evandro/.local/lib/python3.6/site-packages/pip/_internal/commands/install.py", line 385, in run
    ", ".join(r.name for r in build_failures)))
pip._internal.exceptions.InstallationError: Could not build wheels for hyperscan which use PEP 517 and cannot be installed directly
evandro@evandro-pc:~/Downloads/python-hyperscan$ 

installation error on MacOS

Hi,
I have tried to install python-hyperscan on my macbook. I have no luck no matter I use pip or poetry. I have hyperscan 5.4 installed properly by brew. While I try to install python-hyperscan, I always get error. .... Couldn't figure it out.

For pip, the error message is like

Building wheels for collected packages: hyperscan
Building wheel for hyperscan (PEP 517) ... error
ERROR: Command errored out with exit status 1:
command: /Applications/Xcode.app/Contents/Developer/usr/bin/python3 /Library/Python/3.8/site-packages/pip/_vendor/pep517/_in_process.py build_wheel /var/folders/jk/vg7nnbhj4qg0r0xz3yhskylw0000gn/T/tmpue4jkb24
cwd: /private/var/folders/jk/vg7nnbhj4qg0r0xz3yhskylw0000gn/T/pip-install-slrkf9b5/hyperscan_17835bf2676c44b2b82c6fac9b18d0d7
Complete output (37 lines):
A setup.py file already exists. Using it.
Traceback (most recent call last):
File "/private/var/folders/jk/vg7nnbhj4qg0r0xz3yhskylw0000gn/T/pip-install-slrkf9b5/hyperscan_17835bf2676c44b2b82c6fac9b18d0d7/setup.py", line 29, in
build(setup_kwargs)
File "/private/var/folders/jk/vg7nnbhj4qg0r0xz3yhskylw0000gn/T/pip-install-slrkf9b5/hyperscan_17835bf2676c44b2b82c6fac9b18d0d7/build.py", line 48, in build
**pkgconfig(['libhs']),
File "/private/var/folders/jk/vg7nnbhj4qg0r0xz3yhskylw0000gn/T/pip-install-slrkf9b5/hyperscan_17835bf2676c44b2b82c6fac9b18d0d7/build.py", line 27, in pkgconfig
subprocess.check_output(
File "/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/subprocess.py", line 411, in check_output
return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
File "/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/subprocess.py", line 489, in run
with Popen(*popenargs, **kwargs) as process:
File "/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/subprocess.py", line 854, in init
self._execute_child(args, executable, preexec_fn, close_fds,
File "/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/subprocess.py", line 1702, in _execute_child
raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'pkg-config'
Traceback (most recent call last):
File "/Library/Python/3.8/site-packages/pip/_vendor/pep517/_in_process.py", line 280, in
main()
File "/Library/Python/3.8/site-packages/pip/_vendor/pep517/_in_process.py", line 263, in main
json_out['return_val'] = hook(**hook_input['kwargs'])
File "/Library/Python/3.8/site-packages/pip/_vendor/pep517/_in_process.py", line 204, in build_wheel
return _build_backend().build_wheel(wheel_directory, config_settings,
File "/private/var/folders/jk/vg7nnbhj4qg0r0xz3yhskylw0000gn/T/pip-build-env-ywjtnpm1/overlay/lib/python3.8/site-packages/poetry/core/masonry/api.py", line 68, in build_wheel
return unicode(WheelBuilder.make_in(poetry, Path(wheel_directory)))
File "/private/var/folders/jk/vg7nnbhj4qg0r0xz3yhskylw0000gn/T/pip-build-env-ywjtnpm1/overlay/lib/python3.8/site-packages/poetry/core/masonry/builders/wheel.py", line 72, in make_in
wb.build()
File "/private/var/folders/jk/vg7nnbhj4qg0r0xz3yhskylw0000gn/T/pip-build-env-ywjtnpm1/overlay/lib/python3.8/site-packages/poetry/core/masonry/builders/wheel.py", line 103, in build
self._build(zip_file)
File "/private/var/folders/jk/vg7nnbhj4qg0r0xz3yhskylw0000gn/T/pip-build-env-ywjtnpm1/overlay/lib/python3.8/site-packages/poetry/core/masonry/builders/wheel.py", line 135, in _build
self._run_build_command(setup)
File "/private/var/folders/jk/vg7nnbhj4qg0r0xz3yhskylw0000gn/T/pip-build-env-ywjtnpm1/overlay/lib/python3.8/site-packages/poetry/core/masonry/builders/wheel.py", line 163, in _run_build_command
subprocess.check_call(
File "/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/subprocess.py", line 364, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['/Applications/Xcode.app/Contents/Developer/usr/bin/python3', '/private/var/folders/jk/vg7nnbhj4qg0r0xz3yhskylw0000gn/T/pip-install-slrkf9b5/hyperscan_17835bf2676c44b2b82c6fac9b18d0d7/setup.py', 'build', '-b', '/private/var/folders/jk/vg7nnbhj4qg0r0xz3yhskylw0000gn/T/pip-install-slrkf9b5/hyperscan_17835bf2676c44b2b82c6fac9b18d0d7/build']' returned non-zero exit status 1.

ERROR: Failed building wheel for hyperscan
Failed to build hyperscan
ERROR: Could not build wheels for hyperscan which use PEP 517 and cannot be installed directly
'

=============
If I use poetry, the error is like the below

Installing the current project: hyperscan (0.2.0)
EnvCommandError

Command ['/Users/xxxx/Library/Caches/pypoetry/virtualenvs/hyperscan-ZlXSVyo--py3.8/bin/pip', 'install', '-e', '/Users/xxxx/Project/Python/python-hyperscan', '--no-deps'] errored with the following return code 1, and output:
Obtaining file:///Users/xxxx/Project/Python/python-hyperscan
ERROR: Command errored out with exit status 1:
command: /Users/xxxx/Library/Caches/pypoetry/virtualenvs/hyperscan-ZlXSVyo--py3.8/bin/python -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/Users/xxxx/Project/Python/python-hyperscan/setup.py'"'"'; file='"'"'/Users/xxxx/Project/Python/python-hyperscan/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(file);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file, '"'"'exec'"'"'))' egg_info --egg-base /private/var/folders/jk/vg7nnbhj4qg0r0xz3yhskylw0000gn/T/pip-pip-egg-info-ilttc02s
cwd: /Users/xxxx/Project/Python/python-hyperscan/
Complete output (17 lines):
Traceback (most recent call last):
File "", line 1, in
File "/Users/xxxx/Project/Python/python-hyperscan/setup.py", line 29, in
build(setup_kwargs)
File "/Users/xxxx/Project/Python/python-hyperscan/build.py", line 48, in build
**pkgconfig(['libhs']),
File "/Users/xxxx/Project/Python/python-hyperscan/build.py", line 27, in pkgconfig
subprocess.check_output(
File "/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/subprocess.py", line 411, in check_output
return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
File "/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/subprocess.py", line 489, in run
with Popen(*popenargs, **kwargs) as process:
File "/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/subprocess.py", line 854, in init
self._execute_child(args, executable, preexec_fn, close_fds,
File "/Applications/Xcode.app/Contents/Developer/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/subprocess.py", line 1702, in _execute_child
raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'pkg-config'
----------------------------------------
WARNING: Discarding file:///Users/xxxx/Project/Python/python-hyperscan. Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

at /usr/local/Cellar/poetry/1.1.5/libexec/lib/python3.9/site-packages/poetry/utils/env.py:1074 in run
1070โ”‚ output = subprocess.check_output(
1071โ”‚ cmd, stderr=subprocess.STDOUT, **kwargs
1072โ”‚ )
1073โ”‚ except CalledProcessError as e:
โ†’ 1074โ”‚ raise EnvCommandError(e, input=input
)
1075โ”‚
1076โ”‚ return decode(output)
1077โ”‚
1078โ”‚ def execute(self, bin, *args, **kwargs):

Python3.9 installation errors

Hi, I'm facing the following error when trying to install hyperscan==0.1.5 from pip (I will give more context below).

  ERROR: Command errored out with exit status 1:
   command: /usr/local/bin/python /usr/local/lib/python3.9/site-packages/pip/_vendor/pep517/_in_process.py build_wheel /tmp/tmp9ybf83mg
       cwd: /tmp/pip-install-abs2u1co/hyperscan_e483bc77b1a7411d9142094e042fbd7d
  Complete output (25 lines):
  A setup.py file already exists. Using it.
  Traceback (most recent call last):
    File "/tmp/pip-install-abs2u1co/hyperscan_e483bc77b1a7411d9142094e042fbd7d/setup.py", line 2, in <module>
      from setuptools import setup
  ModuleNotFoundError: No module named 'setuptools'
  Traceback (most recent call last):
    File "/usr/local/lib/python3.9/site-packages/pip/_vendor/pep517/_in_process.py", line 280, in <module>
      main()
    File "/usr/local/lib/python3.9/site-packages/pip/_vendor/pep517/_in_process.py", line 263, in main
      json_out['return_val'] = hook(**hook_input['kwargs'])
    File "/usr/local/lib/python3.9/site-packages/pip/_vendor/pep517/_in_process.py", line 204, in build_wheel
      return _build_backend().build_wheel(wheel_directory, config_settings,
    File "/tmp/pip-build-env-pdwain6d/overlay/lib/python3.9/site-packages/poetry/core/masonry/api.py", line 57, in build_wheel
      return unicode(WheelBuilder.make_in(poetry, Path(wheel_directory)))
    File "/tmp/pip-build-env-pdwain6d/overlay/lib/python3.9/site-packages/poetry/core/masonry/builders/wheel.py", line 59, in make_in
      wb.build()
    File "/tmp/pip-build-env-pdwain6d/overlay/lib/python3.9/site-packages/poetry/core/masonry/builders/wheel.py", line 89, in build
      self._build(zip_file)
    File "/tmp/pip-build-env-pdwain6d/overlay/lib/python3.9/site-packages/poetry/core/masonry/builders/wheel.py", line 121, in _build
      self._run_build_command(setup)
    File "/tmp/pip-build-env-pdwain6d/overlay/lib/python3.9/site-packages/poetry/core/masonry/builders/wheel.py", line 149, in _run_build_command
      subprocess.check_call(
    File "/usr/local/lib/python3.9/subprocess.py", line 373, in check_call
      raise CalledProcessError(retcode, cmd)
  subprocess.CalledProcessError: Command '['/usr/local/bin/python', '/tmp/pip-install-abs2u1co/hyperscan_e483bc77b1a7411d9142094e042fbd7d/setup.py', 'build', '-b', '/tmp/pip-install-abs2u1co/hyperscan_e483bc77b1a7411d9142094e042fbd7d/build']' returned non-zero exit status 1.
  ----------------------------------------
  ERROR: Failed building wheel for hyperscan
Failed to build hyperscan
ERROR: Could not build wheels for hyperscan which use PEP 517 and cannot be installed directly

I'm using docker, image python:3.9-slim-buster. I have already installed libhyperscan5 (and all the other dependencies needed) and made sure that setuptools is installed and upgraded (I have v53.0.0).

I have made a test also for hyperscan==0.2.0 and no errors are raised during the installation. Yet, every time I import hyperscan in my code, I get the same error described in #28

root@08e7ef3102e3:~# python -c "import hyperscan"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/local/lib/python3.9/site-packages/hyperscan/__init__.py", line 5, in <module>
    from hyperscan._hyperscan import *
ImportError: /usr/local/lib/python3.9/site-packages/hyperscan/_hyperscan.cpython-39-x86_64-linux-gnu.so: undefined symbol: hs_compile_lit_multi

Nevertheless, and it is a big question mark to me, the setup MacOS (11.2) + python3.9 + hyperscan library installed from brew + pip install hyperscan==0.2.0 perfectly works

Request for maintainer(s)

Discussed in #43

Originally posted by darvid July 24, 2022
I'm struggling with some personal issues right now and probably won't have the time to maintain this package in the near future. If someone is willing to become a maintainer please let me know. Thanks.

match_handler always returns 0

static int match_handler(unsigned int id, unsigned long long from,
                         unsigned long long to, unsigned int flags,
                         void *context) {
  ...
  return 0;
}

I'm new to Hyperscan, but according to the documentation here:

The match callback function has the capability to halt scanning by returning a non-zero value.

Maybe match_handler should return whatever Python callback returns? This way we could also halt scanning from Python.

Python 3.10 using error

got error msg "File "/Users/kennywu/anaconda3/lib/python3.10/site-packages/hyperscan/init.py", line 3, in
from hyperscan._ext import * # noqa: F401, F403
ImportError: dlopen(/Users/kennywu/anaconda3/lib/python3.10/site-packages/hyperscan/_ext.cpython-310-darwin.so, 2): Symbol not found: __ZTTNSt3__119basic_ostringstreamIcNS_11char_traitsIcEENS_9allocatorIcEEEE
Referenced from: /Users/kennywu/anaconda3/lib/python3.10/site-packages/hyperscan/_ext.cpython-310-darwin.so
Expected in: /usr/lib/libc++.1.dylib
in /Users/kennywu/anaconda3/lib/python3.10/site-packages/hyperscan/_ext.cpython-310-darwin.so"

when I tried the command python -c "import hyperscan".

how can I resolve it? thx.

symbol not found in flat namespace '_ch_alloc_scratch'

Hi all,
I'm installing hyperscan on Mac M1 with pip install hyperscan and I get this error:

File "/Users/user/miniconda3/envs/env/lib/python3.10/site-packages/hyperscan/__init__.py", line 3, in <module> from hyperscan._ext import * # noqa: F401, F403 ImportError: dlopen(/Users/user/miniconda3/envs/env/lib/python3.10/site-packages/hyperscan/_ext.cpython-310-darwin.so, 0x0002): symbol not found in flat namespace '_ch_alloc_scratch'

Is this yet not supported on ARM architecture?

Strange "hyperscan.InvalidError: error code -1"

I got strange hyperscan.InvalidError: error code -1 while using scan() function.
There nothing else in the stack trace and I cannot find any clue in google

It looks like some stupid simple error. Any Idea what it might be?
Is it possible to make the error message more elaborate?

Unable to get pip install to work: Window 10, Anaconda 2.

pip install hyperscan
Collecting hyperscan
Using cached hyperscan-0.0.1.tar.gz
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "", line 1, in
File "c:\users\richkatz\appdata\local\temp\pip-build-a7rgfv\hyperscan\setup.py", line 74, in
setup()
File "c:\users\richkatz\appdata\local\temp\pip-build-a7rgfv\hyperscan\setup.py", line 32, in setup
'pkg-config', '--cflags', 'libhs']).decode('utf-8'),
File "c:\users\richkatz\anaconda2\lib\subprocess.py", line 567, in check_output
process = Popen(stdout=PIPE, *popenargs, **kwargs)
File "c:\users\richkatz\anaconda2\lib\subprocess.py", line 711, in init
errread, errwrite)
File "c:\users\richkatz\anaconda2\lib\subprocess.py", line 959, in _execute_child
startupinfo)
WindowsError: [Error 2] The system cannot find the file specified

----------------------------------------

Command "python setup.py egg_info" failed with error code 1 in c:\users\richkatz\appdata\local\temp\pip-build-a7rgfv\hyperscan\

v0.2.0 does not work with Python 3.10

We're currently using v0.2.0 since we have a customized version of libhs. Since trying to update to Python 3.10 we're seeing the following error (in a container based on python:3.10-bullseye:

$ python3 -m pip install hyperscan==0.2.0 --no-cache-dir
Defaulting to user installation because normal site-packages is not writeable
Collecting hyperscan==0.2.0
  Downloading hyperscan-0.2.0.tar.gz (13 kB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Building wheels for collected packages: hyperscan
  Building wheel for hyperscan (pyproject.toml) ... done
  Created wheel for hyperscan: filename=hyperscan-0.2.0-cp310-cp310-manylinux_2_31_x86_64.whl size=12566 sha256=c6665898f9cdb3b601ccbc21d0a432838502eb6644ab555e7220cf8e8a5bd341
  Stored in directory: /tmp/pip-ephem-wheel-cache-scq2qfof/wheels/4d/2a/88/2f04c0e9dfd098657e8617bff17d277bfa9eb5febc26b4ba33
Successfully built hyperscan
Installing collected packages: hyperscan
Successfully installed hyperscan-0.2.0
$ python3
Python 3.10.11 (main, Apr  5 2023, 23:35:11) [GCC 10.2.1 20210110] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import hyperscan
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.10/site-packages/hyperscan/__init__.py", line 5, in <module>
    from hyperscan._hyperscan import *
ModuleNotFoundError: No module named 'hyperscan._hyperscan'
>>> 

Upgrading to v0.4.0 fixes the problem, but we can't use it because we require dynamically linking libhs. I suppose this is either a bug report for the old version or a feature request for dynamic linking support in the newer version?

Error on import: Undefined symbol hs_compile_lit_multi

Since today, after installing hyperscan 0.1.5 on Python 3.6.9 (Ubuntu 18.04), importing hyperscan results
in an ImportError.

My Hyperscan package versions are:

  • libhyperscan-dev/now 5.1.0-1 amd64 [installed,local]
  • libhyperscan5/now 5.1.0-1 amd64 [installed,local]

The error:

import hyperscan

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/tmp/test3/lib/python3.6/site-packages/hyperscan/__init__.py", line 5, in <module>
    from hyperscan._hyperscan import *
ImportError: /tmp/test3/lib/python3.6/site-packages/hyperscan/_hyperscan.cpython-36m-x86_64-linux-gnu.so: undefined symbol: hs_compile_lit_multi

Occurs with hyperscan-0.1.5-cp36-cp36m-manylinux2014_x86_64.whl.
I noticed that this file was updated recently (11-12-2020), so I thought that might be the cause.

Does not occur with hyperscan-0.1.5-cp36-cp36m-manylinux1_x86_64.whl

Also does not occur with hyperscan-0.1.5-cp38-cp38-manylinux2014_x86_64.whl on a machine with Python 3.8.5 (Ubuntu 20.04).

Do you know of any things that might cause this?

Segmentation Fault error when number of patterns reaches ~520000

Hello,
First of all thank you for making this library, it has been very useful!

I seem to have found a segmentation fault bug. The database compile function breaks when the number of patterns provided reaches somewhere between 522000 and 523000 (on my machine at least). This number is consistent and always the same, and does not seem to vary with respect to the complexity of the patterns. Note that this is not an issue when using the C implementation directly, nor is it a RAM / out of memory related problem.

Here is a minimal reproducible example:

import hyperscan
import numpy as np

db = hyperscan.Database()
n = 521000
# generate `n` patterns, each of 4 bytes written in hex format (e.g. \\x23\\xff\\x3d\\xab) and encodes 
# in bytes using utf-8 which is identical to ascii given the each character's order is lower than 128
expressions = ["\\x{:02x}\\x{:02x}\\x{:02x}\\x{:02x}".format(*list(np.random.randint(0,256,4,np.uint8))).encode("utf-8") for i in range(n)]

db.compile(expressions=expressions)

I've looked at the source code and gave it a go, however I'm extremely unfamiliar with the C-python connection API, and did not get very far.

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.