Raven: CICD Scanning for Github

Published: Apr 2, 2024 by Isaac Johnson

Raven (Risk Analysis and Vulnerability Enumeration for CI/CD) is a solution for scanning Github repos for vulnerabilities. It can scan a repo, an org or all of a user’s Github repos then store the findings into a graph DB, Neo4j.

I was intrigued on exactly what this could provide so I installed it and scanned some of my repos. Let’s both explore Raven as well as the data collected in Neo4j.

I’ll spoil it a bit and say that you’ll see some attempts to expose this through Kubernetes, as is my normal pattern, but the way it was using ports and ingress really didn’t jive with my setup so we wrap this writeup by just sticking with Docker.

Installation

Let’s clone the Github repo

builder@builder-T100:~$ git clone https://github.com/CycodeLabs/raven.git
Cloning into 'raven'...
remote: Enumerating objects: 835, done.
remote: Counting objects: 100% (354/354), done.
remote: Compressing objects: 100% (156/156), done.
remote: Total 835 (delta 280), reused 198 (delta 198), pack-reused 481
Receiving objects: 100% (835/835), 522.24 KiB | 3.09 MiB/s, done.
Resolving deltas: 100% (461/461), done.

If we use the makefile, we can launch docker compose:

builder@builder-T100:~/raven$ make setup
Building Services...
docker compose -p raven --file deployment/docker-compose.yml up -d
[+] Running 14/14
 ✔ redis 7 layers [⣿⣿⣿⣿⣿⣿⣿]      0B/0B      Pulled                                                                 5.4s
   ✔ a378f10b3218 Already exists                                                                                   0.0s
   ✔ 3c75410c1f8b Pull complete                                                                                    1.5s
   ✔ 667874757cc1 Pull complete                                                                                    2.1s
   ✔ 7150b93d249d Pull complete                                                                                    4.1s
   ✔ ed7c83735e28 Pull complete                                                                                    4.2s
   ✔ 4f4fb700ef54 Pull complete                                                                                    4.2s
   ✔ 3fa899a007ab Pull complete                                                                                    4.2s
 ✔ neo4j 5 layers [⣿⣿⣿⣿⣿]      0B/0B      Pulled                                                                  11.2s
   ✔ e67fdae35593 Pull complete                                                                                    2.7s
   ✔ 03b1c1358482 Pull complete                                                                                    8.0s
   ✔ c914fe955fee Pull complete                                                                                    8.1s
   ✔ ecab2cd70e50 Pull complete                                                                                    8.2s
   ✔ 0e9d048cd1fe Pull complete                                                                                   10.0s
[+] Building 0.0s (0/0)
[+] Running 4/5
[+] Running 5/5n_default       Created                                                                             0.3s
 ✔ Network raven_default       Created                                                                             0.3s
 ✔ Volume "raven_raven-redis"  Created                                                                             0.0s
 ✔ Volume "raven_raven-neo4j"  Created                                                                             0.0s
 ✔ Container raven-neo4j       Healthy                                                                            29.3s
 ✔ Container raven-redis       Started                                                                            38.6s

Luckily I don’t have a container already using the Redis port. It was able to snag 6379 and 7687 for Neo4j

 $ docker ps | head -n3
CONTAINER ID   IMAGE                                                            COMMAND                  CREATED              STATUS                        PORTS                                                                                            NAMES
68b08b8d624b   redis:7.2.1                                                      "docker-entrypoint.s…"   About a minute ago   Up 50 seconds (healthy)       0.0.0.0:6379->6379/tcp, :::6379->6379/tcp                                                        raven-redis
4e8353c6e514   neo4j:5.12                                                       "tini -g -- /startup…"   About a minute ago   Up About a minute (healthy)   0.0.0.0:7474->7474/tcp, :::7474->7474/tcp, 7473/tcp, 0.0.0.0:7687->7687/tcp, :::7687->7687/tcp   raven-neo4j

We then need to install Raven with pip3

builder@builder-T100:~/raven$ pip3 install raven-cycode
Defaulting to user installation because normal site-packages is not writeable
Collecting raven-cycode
  Downloading raven_cycode-1.0.7-py3-none-any.whl (40 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 40.4/40.4 KB 427.0 kB/s eta 0:00:00
Collecting PyYAML==6.0.1
  Downloading PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (705 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 705.5/705.5 KB 6.8 MB/s eta 0:00:00
Collecting colorama==0.4.6
  Downloading colorama-0.4.6-py2.py3-none-any.whl (25 kB)
Collecting certifi==2023.11.17
  Downloading certifi-2023.11.17-py3-none-any.whl (162 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 162.5/162.5 KB 22.0 MB/s eta 0:00:00
Collecting pytest==7.4.4
  Downloading pytest-7.4.4-py3-none-any.whl (325 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 325.3/325.3 KB 46.2 MB/s eta 0:00:00
Collecting slack-sdk==3.26.2
  Downloading slack_sdk-3.26.2-py2.py3-none-any.whl (284 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 284.1/284.1 KB 28.0 MB/s eta 0:00:00
Collecting pansi==2020.7.3
  Downloading pansi-2020.7.3-py2.py3-none-any.whl (10 kB)
Collecting urllib3==2.1.0
  Downloading urllib3-2.1.0-py3-none-any.whl (104 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 104.6/104.6 KB 13.9 MB/s eta 0:00:00
Collecting interchange==2021.0.4
  Downloading interchange-2021.0.4-py2.py3-none-any.whl (28 kB)
Collecting redis==5.0.1
  Downloading redis-5.0.1-py3-none-any.whl (250 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 250.3/250.3 KB 41.6 MB/s eta 0:00:00
Collecting packaging==23.2
  Downloading packaging-23.2-py3-none-any.whl (53 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 53.0/53.0 KB 14.2 MB/s eta 0:00:00
Collecting idna==3.6
  Downloading idna-3.6-py3-none-any.whl (61 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 61.6/61.6 KB 17.5 MB/s eta 0:00:00
Collecting charset-normalizer==3.3.2
  Downloading charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (142 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 142.1/142.1 KB 11.7 MB/s eta 0:00:00
Collecting pytz==2023.3.post1
  Downloading pytz-2023.3.post1-py2.py3-none-any.whl (502 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 502.5/502.5 KB 44.2 MB/s eta 0:00:00
Requirement already satisfied: six==1.16.0 in /usr/lib/python3/dist-packages (from raven-cycode) (1.16.0)
Requirement already satisfied: monotonic==1.6 in /usr/lib/python3/dist-packages (from raven-cycode) (1.6)
Collecting pluggy==1.3.0
  Downloading pluggy-1.3.0-py3-none-any.whl (18 kB)
Collecting tqdm==4.66.1
  Downloading tqdm-4.66.1-py3-none-any.whl (78 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 78.3/78.3 KB 14.4 MB/s eta 0:00:00
Collecting loguru==0.7.2
  Downloading loguru-0.7.2-py3-none-any.whl (62 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 62.5/62.5 KB 9.3 MB/s eta 0:00:00
Collecting py2neo==2021.2.4
  Downloading py2neo-2021.2.4-py2.py3-none-any.whl (177 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 177.2/177.2 KB 33.6 MB/s eta 0:00:00
Collecting iniconfig==2.0.0
  Downloading iniconfig-2.0.0-py3-none-any.whl (5.9 kB)
Collecting requests==2.31.0
  Downloading requests-2.31.0-py3-none-any.whl (62 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 62.6/62.6 KB 12.0 MB/s eta 0:00:00
Collecting Pygments==2.17.2
  Downloading pygments-2.17.2-py3-none-any.whl (1.2 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.2/1.2 MB 22.2 MB/s eta 0:00:00
Collecting exceptiongroup>=1.0.0rc8
  Downloading exceptiongroup-1.2.0-py3-none-any.whl (16 kB)
Collecting tomli>=1.0.0
  Downloading tomli-2.0.1-py3-none-any.whl (12 kB)
Collecting async-timeout>=4.0.2
  Downloading async_timeout-4.0.3-py3-none-any.whl (5.7 kB)
Installing collected packages: pytz, urllib3, tqdm, tomli, slack-sdk, PyYAML, Pygments, pluggy, pansi, packaging, loguru, interchange, iniconfig, idna, exceptiongroup, colorama, charset-normalizer, certifi, async-timeout, requests, redis, pytest, py2neo, raven-cycode
  WARNING: The script tqdm is installed in '/home/builder/.local/bin' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
  WARNING: The script pygmentize is installed in '/home/builder/.local/bin' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
  WARNING: The script normalizer is installed in '/home/builder/.local/bin' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
  WARNING: The scripts py.test and pytest are installed in '/home/builder/.local/bin' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
  WARNING: The script raven is installed in '/home/builder/.local/bin' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
Successfully installed PyYAML-6.0.1 Pygments-2.17.2 async-timeout-4.0.3 certifi-2023.11.17 charset-normalizer-3.3.2 colorama-0.4.6 exceptiongroup-1.2.0 idna-3.6 iniconfig-2.0.0 interchange-2021.0.4 loguru-0.7.2 packaging-23.2 pansi-2020.7.3 pluggy-1.3.0 py2neo-2021.2.4 pytest-7.4.4 pytz-2023.3.post1 raven-cycode-1.0.7 redis-5.0.1 requests-2.31.0 slack-sdk-3.26.2 tomli-2.0.1 tqdm-4.66.1 urllib3-2.1.0

Since I just added pip3 on this host, I had to add it to my PATH

builder@builder-T100:~/raven$ which raven
builder@builder-T100:~/raven$ export PATH=/home/builder/.local/bin:$PATH
builder@builder-T100:~/raven$ which raven
/home/builder/.local/bin/raven

Usage

I’ll start by indexing my own user account

builder@builder-T100:~/raven$ raven download account --token $GITHUB_TOKEN --account-name idjohnson
2024-03-14 16:26:59 | INFO     | [+] Scanning user: idjohnson
2024-03-14 16:26:59 | INFO     | [*] Querying page: 1
2024-03-14 16:27:27 | WARNING  | [-] Local action './actions/backport' not found in 'idjohnson/frappe', skipping.
2024-03-14 16:28:04 | INFO     | [*] Querying page: 2

[x] Index results with: raven index

Now that it’s loaded, like the message suggests, we need to index our results

builder@builder-T100:~/raven$ raven index
2024-03-14 16:32:13 | INFO     | [*] Indexing actions...
Indexing actions: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 50/50 [00:09<00:00,  5.10it/s]
2024-03-14 16:32:23 | INFO     | [*] Indexing workflows...
Indexing workflows: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 56/56 [00:08<00:00,  6.25it/s]

[x] View results at: http://localhost:7474

I can now see the report locally:

builder@builder-T100:~/raven$ raven report --format raw

Name: Usage of Outdated Node Version
Severity: low
Description: Using composite action that uses an outdated Node version.
Tags: ['endoflife']
Workflow URLS:
- https://github.com/idjohnson/podman-desktop/tree/main/.github/workflows/next-build.yaml
- https://github.com/idjohnson/fluffychat/tree/main/.github/workflows/process_tags.yaml
- https://github.com/idjohnson/podman-desktop/tree/main/.github/workflows/release.yaml
- https://github.com/idjohnson/frappe/tree/develop/.github/workflows/on_release.yml
- https://github.com/idjohnson/fluffychat/tree/main/.github/workflows/release.yaml

Name: Self Hosted Runner
Severity: medium
Description: Self Hosted runners should not be used for public repositories.
Tags: ['unauthenticated', 'best-practice']
Workflow URLS:
- https://github.com/idjohnson/gcpimexample/tree/main/.github/workflows/tofu.yml
- https://github.com/idjohnson/helloworld-gh-docker-action/tree/master/.github/workflows/main.yaml
- https://github.com/idjohnson/gcpimexample/tree/main/.github/workflows/pulumi.yml
- https://github.com/idjohnson/punq/tree/main/.github/workflows/develop.yml
- https://github.com/idjohnson/punq/tree/main/.github/workflows/main.yml

Name: Unpinnable Action
Severity: low
Description: Unpinnable actions can lead to software supply chain attacks.
Tags: ['supply-chain', 'best-practice']
Workflow URLS:
- https://github.com/RafikFarhad/push-to-gcr-github-action/tree/master/action.yaml
- https://github.com/SonarSource/sonarqube-scan-action/tree/master/action.yml
- https://github.com/Azure/static-web-apps-deploy/tree/v1/action.yml
- https://github.com/pypa/gh-action-pypi-publish/tree/unstable/v1/action.yml
- https://github.com/actions/hello-world-docker-action/tree/main/action.yml
- https://github.com/jakejarvis/s3-sync-action/tree/master/action.yml

Exposing Neo4j

I need to make a quick A record in Azure DNS first

$ az account set --subscription "Pay-As-You-Go" && az network dns record-set a add-record -g idjdnsrg -z tpk.pw -a 75.73.224.240 -n raven
{
  "ARecords": [
    {
      "ipv4Address": "75.73.224.240"
    }
  ],
  "TTL": 3600,
  "etag": "e00de1c5-cbf2-4b3f-acd8-55f1d980600f",
  "fqdn": "raven.tpk.pw.",
  "id": "/subscriptions/d955c0ba-13dc-44cf-a29a-8fed74cbb22d/resourceGroups/idjdnsrg/providers/Microsoft.Network/dnszones/tpk.pw/A/raven",
  "name": "raven",
  "provisioningState": "Succeeded",
  "resourceGroup": "idjdnsrg",
  "targetResource": {},
  "type": "Microsoft.Network/dnszones/A"
}

I can then create a Raven Ingress, Service and Endpoint

$ cat RavenNeo.yaml
---
apiVersion: v1
kind: Endpoints
metadata:
  name: raven-external-ip
subsets:
- addresses:
  - ip: 192.168.1.100
  ports:
  - name: ravenint
    port: 7474
    protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
  name: raven-external-ip
spec:
  clusterIP: None
  clusterIPs:
  - None
  internalTrafficPolicy: Cluster
  ipFamilies:
  - IPv4
  - IPv6
  ipFamilyPolicy: RequireDualStack
  ports:
  - name: raven
    port: 80
    protocol: TCP
    targetPort: 7474
  sessionAffinity: None
  type: ClusterIP
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    cert-manager.io/cluster-issuer: azuredns-tpkpw
    kubernetes.io/ingress.class: nginx
    kubernetes.io/tls-acme: "true"
    nginx.ingress.kubernetes.io/proxy-read-timeout: "3600"
    nginx.ingress.kubernetes.io/proxy-send-timeout: "3600"
    nginx.org/websocket-services: raven-external-ip
  generation: 1
  labels:
    app.kubernetes.io/instance: raveningress
  name: raveningress
spec:
  rules:
  - host: raven.tpk.pw
    http:
      paths:
      - backend:
          service:
            name: raven-external-ip
            port:
              number: 80
        path: /
        pathType: ImplementationSpecific
  tls:
  - hosts:
    - raven.tpk.pw
    secretName: raven-tls

Then apply to make it live

$ kubectl apply -f RavenNeo.yaml
endpoints/raven-external-ip created
service/raven-external-ip created
ingress.networking.k8s.io/raveningress created

I see the cert created

$ kubectl get cert raven-tls
NAME        READY   SECRET      AGE
raven-tls   True    raven-tls   2m12s

At least externally, I cannot get to the Neo4j database. I tried localhost and raven.tpk.pw:7474 and just raven.tpk.pw

/content/images/2024/03/raven-01.png

It seems I need to hand off two ports

$ docker port raven-neo4j
7474/tcp -> 0.0.0.0:7474
7474/tcp -> [::]:7474
7687/tcp -> 0.0.0.0:7687
7687/tcp -> [::]:7687

Ideally, I would just punch a hole through the firewall, but as I am remote at the moment, I’ll try just making another service.

builder@LuiGi17:~$ az account set --subscription "Pay-As-You-Go" && az network dns record-set a add-record -g idjdnsrg -z tpk.pw -a 75.73.224.240 -n ravenn4j
{
  "ARecords": [
    {
      "ipv4Address": "75.73.224.240"
    }
  ],
  "TTL": 3600,
  "etag": "60b05dbe-d20b-4c6b-b84f-ba1c96bbd4cb",
  "fqdn": "ravenn4j.tpk.pw.",
  "id": "/subscriptions/d955c0ba-13dc-44cf-a29a-8fed74cbb22d/resourceGroups/idjdnsrg/providers/Microsoft.Network/dnszones/tpk.pw/A/ravenn4j",
  "name": "ravenn4j",
  "provisioningState": "Succeeded",
  "resourceGroup": "idjdnsrg",
  "targetResource": {},
  "type": "Microsoft.Network/dnszones/A"
}
builder@LuiGi17:~$ cp RavenNeo.yaml RavenNeo4j.yaml
builder@LuiGi17:~$ vi RavenNeo4j.yaml
builder@LuiGi17:~$ diff RavenNeo4j.yaml RavenNeo.yaml
5c5
<   name: ravenn4j-external-ip
---
>   name: raven-external-ip
10,11c10,11
<   - name: ravenn4jint
<     port: 7687
---
>   - name: ravenint
>     port: 7474
17c17
<   name: ravenn4j-external-ip
---
>   name: raven-external-ip
28c28
<   - name: ravenn4j
---
>   - name: raven
31c31
<     targetPort: 7687
---
>     targetPort: 7474
44c44
<     nginx.org/websocket-services: ravenn4j-external-ip
---
>     nginx.org/websocket-services: raven-external-ip
47,48c47,48
<     app.kubernetes.io/instance: ravenn4jingress
<   name: ravenn4jingress
---
>     app.kubernetes.io/instance: raveningress
>   name: raveningress
51c51
<   - host: ravenn4j.tpk.pw
---
>   - host: raven.tpk.pw
56c56
<             name: ravenn4j-external-ip
---
>             name: raven-external-ip
63,64c63,64
<     - ravenn4j.tpk.pw
<     secretName: ravenn4j-tls
---
>     - raven.tpk.pw
>     secretName: raven-tls
builder@LuiGi17:~$ kubectl apply -f RavenNeo4j.yaml
endpoints/ravenn4j-external-ip created
service/ravenn4j-external-ip created
ingress.networking.k8s.io/ravenn4jingress created

None of my tries worked, however

/content/images/2024/03/raven-0021.png

I’ll just cleanup and try in-network

builder@LuiGi17:~$ kubectl delete -f RavenNeo.yaml
endpoints "raven-external-ip" deleted
service "raven-external-ip" deleted
ingress.networking.k8s.io "raveningress" deleted
builder@LuiGi17:~$ kubectl delete -f RavenNeo
RavenNeo.yaml    RavenNeo4j.yaml
builder@LuiGi17:~$ kubectl delete -f RavenNeo4j.yaml
endpoints "ravenn4j-external-ip" deleted
service "ravenn4j-external-ip" deleted
ingress.networking.k8s.io "ravenn4jingress" deleted

Back in Network…

I got the same password issue, even locally.

I then realized that I forgot to check the actual docker-compose file itself in the /deployment folder

services:
  neo4j:
    image: neo4j:5.12
    container_name: raven-neo4j
    environment:
      NEO4J_AUTH: neo4j/123456789 # Change 'password' to your desired Neo4j password

Darf! They set the default password to 123456789 instead of the common neo4j

I could now login and explore Neo4j

/content/images/2024/03/raven-02.png

This means we can use Neo4j to find relationships in our data, such as actions with MATCH p=()-[r:ACTION]->() RETURN p LIMIT 25

/content/images/2024/03/raven-03.png

And we can zoom in as you would expect

On Restarts

I had to restart the Dockerhost and found Raven’s Neo4j wasn’t running.

Earlier we saw it launch with ‘make setup’ which ultimately launched a ‘docker-compose’ file in ./deployment

I went onto the Dockerhost and saw the container wasn’t running (albeit existed)

$ docker stats raven-neo4j
CONTAINER ID   NAME          CPU %     MEM USAGE / LIMIT   MEM %     NET I/O   BLOCK I/O   PIDS
4e8353c6e514   raven-neo4j   0.00%     0B / 0B             0.00%     0B / 0B   0B / 0B     0

I first attempted to launch with docker compose up

builder@builder-T100:~/raven/deployment$ docker compose up -d
[+] Building 0.0s (0/0)
[+] Running 3/4
 ✔ Network deployment_default       Created                                                                                                   0.1s
 ✔ Volume "deployment_raven-neo4j"  Created                                                                                                   0.0s
 ✔ Volume "deployment_raven-redis"  Created                                                                                                   0.0s
 ⠹ Container raven-neo4j            Creating                                                                                                145.2s

This hung because the Neo4j container raven-neo4j that had been built, but evidentially wiped on a Dockerhost crash, was missing

builder@builder-T100:~/raven/deployment$ docker images -a | grep raven
builder@builder-T100:~/raven/deployment$

I actually had to use kill -9 on that compose process to terminate it.

I tried the original make setup

builder@builder-T100:~/raven$ make setup
Building Services...
docker compose -p raven --file deployment/docker-compose.yml up -d
[+] Building 0.0s (0/0)
[+] Running 2/2
 ✔ Container raven-neo4j  Healthy                                                                                                            11.1s
 ✔ Container raven-redis  Started                                                                                                            11.5s

That worked

/content/images/2024/03/raven-06.png

What we are seeing below, for example, is really how Github actions map to their tasks

/content/images/2024/03/raven-07.png

Nodestream

This gave me an excuse to finally play with NodeStream created by some truely magnificent engineers out of TurboTax.

First, we pip install the library

builder@builder-T100:~/raven$ pip install nodestream
Defaulting to user installation because normal site-packages is not writeable
Collecting nodestream
  Downloading nodestream-0.11.11-py3-none-any.whl (123 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 123.4/123.4 KB 1.7 MB/s eta 0:00:00
Collecting boto3<2.0.0,>=1.26.137
  Downloading boto3-1.34.69-py3-none-any.whl (139 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 139.3/139.3 KB 7.1 MB/s eta 0:00:00
Requirement already satisfied: pyyaml<7.0,>=6.0 in /home/builder/.local/lib/python3.10/site-packages (from nodestream) (6.0.1)
Collecting pandas<3,>=2
  Downloading pandas-2.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (13.0 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 13.0/13.0 MB 43.1 MB/s eta 0:00:00
Collecting python-json-logger<3.0.0,>=2.0.4
  Downloading python_json_logger-2.0.7-py3-none-any.whl (8.1 kB)
Collecting psutil<6.0.0,>=5.9.6
  Downloading psutil-5.9.8-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (288 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 288.2/288.2 KB 50.0 MB/s eta 0:00:00
Collecting schema<0.8.0,>=0.7.5
  Downloading schema-0.7.5-py2.py3-none-any.whl (17 kB)
Collecting testcontainers[neo4j]<4.0.0,>=3.7.1
  Downloading testcontainers-3.7.1-py2.py3-none-any.whl (45 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 45.3/45.3 KB 10.4 MB/s eta 0:00:00
Collecting uvloop<=0.18.0,>=0.17.0
  Downloading uvloop-0.18.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.2 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.2/4.2 MB 71.1 MB/s eta 0:00:00
Collecting Jinja2<4,>=3
  Downloading Jinja2-3.1.3-py3-none-any.whl (133 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 133.2/133.2 KB 28.5 MB/s eta 0:00:00
Collecting jmespath<2.0.0,>=1.0.1
  Downloading jmespath-1.0.1-py3-none-any.whl (20 kB)
Collecting neo4j<6.0.0,>=5.8.0
  Downloading neo4j-5.18.0.tar.gz (198 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 198.0/198.0 KB 43.1 MB/s eta 0:00:00
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Installing backend dependencies ... done
  Preparing metadata (pyproject.toml) ... done
  WARNING: Generating metadata for package neo4j produced metadata for project name unknown. Fix your #egg=neo4j fragments.
Discarding https://files.pythonhosted.org/packages/87/17/ccb010bd9ec0039a1578d9ba55830ff4270620fa5fc44a00651144e0136d/neo4j-5.18.0.tar.gz#sha256=4014406ae5b8b485a8ba46c9f00b6f5b4aaf88e7c3a50603445030c2aab701c9 (from https://pypi.org/simple/neo4j/) (requires-python:>=3.7): Requested unknown from https://files.pythonhosted.org/packages/87/17/ccb010bd9ec0039a1578d9ba55830ff4270620fa5fc44a00651144e0136d/neo4j-5.18.0.tar.gz#sha256=4014406ae5b8b485a8ba46c9f00b6f5b4aaf88e7c3a50603445030c2aab701c9 (from nodestream) has inconsistent name: filename has 'neo4j', but metadata has 'unknown'
  Downloading neo4j-5.17.0.tar.gz (197 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 197.8/197.8 KB 2.8 MB/s eta 0:00:00
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Installing backend dependencies ... done
  Preparing metadata (pyproject.toml) ... done
  WARNING: Generating metadata for package neo4j produced metadata for project name unknown. Fix your #egg=neo4j fragments.
Discarding https://files.pythonhosted.org/packages/9f/cb/cd58ece4e7bf710d66627275fdbe7e5e930884d2a4eb69108b469124c363/neo4j-5.17.0.tar.gz#sha256=dcd7150a0c3834a89a6e27505e614f340376f31c97c48ba60dc70a220ee85e3b (from https://pypi.org/simple/neo4j/) (requires-python:>=3.7): Requested unknown from https://files.pythonhosted.org/packages/9f/cb/cd58ece4e7bf710d66627275fdbe7e5e930884d2a4eb69108b469124c363/neo4j-5.17.0.tar.gz#sha256=dcd7150a0c3834a89a6e27505e614f340376f31c97c48ba60dc70a220ee85e3b (from nodestream) has inconsistent name: filename has 'neo4j', but metadata has 'unknown'
  Downloading neo4j-5.16.0.tar.gz (197 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 197.8/197.8 KB 1.9 MB/s eta 0:00:00
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Installing backend dependencies ... done
  Preparing metadata (pyproject.toml) ... done
  WARNING: Generating metadata for package neo4j produced metadata for project name unknown. Fix your #egg=neo4j fragments.
Discarding https://files.pythonhosted.org/packages/21/27/0b1c5f370ef4a1745e4c8dde3e21e8376b76f83864397081538bfc34582a/neo4j-5.16.0.tar.gz#sha256=3d04334f5f99dc06c8150e75f2d608a560789ef35670494ecdcec31c0af276a9 (from https://pypi.org/simple/neo4j/) (requires-python:>=3.7): Requested unknown from https://files.pythonhosted.org/packages/21/27/0b1c5f370ef4a1745e4c8dde3e21e8376b76f83864397081538bfc34582a/neo4j-5.16.0.tar.gz#sha256=3d04334f5f99dc06c8150e75f2d608a560789ef35670494ecdcec31c0af276a9 (from nodestream) has inconsistent name: filename has 'neo4j', but metadata has 'unknown'
  Downloading neo4j-5.15.0.tar.gz (196 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 196.5/196.5 KB 3.0 MB/s eta 0:00:00
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Installing backend dependencies ... done
  Preparing metadata (pyproject.toml) ... done
  WARNING: Generating metadata for package neo4j produced metadata for project name unknown. Fix your #egg=neo4j fragments.
Discarding https://files.pythonhosted.org/packages/3f/8a/57cf3ea81791cfc1e1af5b22728bbcd3a0613a18a16fc665835dd9d17f20/neo4j-5.15.0.tar.gz#sha256=5c53eccf5192ac21463d3fac05cf58f1547ed231b953c837aa4393e2fc713ed3 (from https://pypi.org/simple/neo4j/) (requires-python:>=3.7): Requested unknown from https://files.pythonhosted.org/packages/3f/8a/57cf3ea81791cfc1e1af5b22728bbcd3a0613a18a16fc665835dd9d17f20/neo4j-5.15.0.tar.gz#sha256=5c53eccf5192ac21463d3fac05cf58f1547ed231b953c837aa4393e2fc713ed3 (from nodestream) has inconsistent name: filename has 'neo4j', but metadata has 'unknown'
  Downloading neo4j-5.14.1.tar.gz (192 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 192.8/192.8 KB 2.5 MB/s eta 0:00:00
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Installing backend dependencies ... done
  Preparing metadata (pyproject.toml) ... done
  WARNING: Generating metadata for package neo4j produced metadata for project name unknown. Fix your #egg=neo4j fragments.
Discarding https://files.pythonhosted.org/packages/73/54/9312a287aac523357766797230fe85ec7b70affe9422f05c82b2286d2d47/neo4j-5.14.1.tar.gz#sha256=3200be8550ed16622b2fadf4f749d08b9982989c4bfce6f99ab693f104104cb4 (from https://pypi.org/simple/neo4j/) (requires-python:>=3.7): Requested unknown from https://files.pythonhosted.org/packages/73/54/9312a287aac523357766797230fe85ec7b70affe9422f05c82b2286d2d47/neo4j-5.14.1.tar.gz#sha256=3200be8550ed16622b2fadf4f749d08b9982989c4bfce6f99ab693f104104cb4 (from nodestream) has inconsistent name: filename has 'neo4j', but metadata has 'unknown'
  Downloading neo4j-5.14.0.tar.gz (192 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 192.4/192.4 KB 19.3 MB/s eta 0:00:00
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Installing backend dependencies ... done
  Preparing metadata (pyproject.toml) ... done
  WARNING: Generating metadata for package neo4j produced metadata for project name unknown. Fix your #egg=neo4j fragments.
Discarding https://files.pythonhosted.org/packages/30/2c/7429812a750f86b0942067f4be72fc24beabb3079f5d96326293f5219d9f/neo4j-5.14.0.tar.gz#sha256=6040efca47126c01385f09e550fb7d7671b1853a1e1c34908aa3713cebd285da (from https://pypi.org/simple/neo4j/) (requires-python:>=3.7): Requested unknown from https://files.pythonhosted.org/packages/30/2c/7429812a750f86b0942067f4be72fc24beabb3079f5d96326293f5219d9f/neo4j-5.14.0.tar.gz#sha256=6040efca47126c01385f09e550fb7d7671b1853a1e1c34908aa3713cebd285da (from nodestream) has inconsistent name: filename has 'neo4j', but metadata has 'unknown'
  Downloading neo4j-5.13.0.tar.gz (192 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 192.3/192.3 KB 27.8 MB/s eta 0:00:00
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Installing backend dependencies ... done
  Preparing metadata (pyproject.toml) ... done
  WARNING: Generating metadata for package neo4j produced metadata for project name unknown. Fix your #egg=neo4j fragments.
Discarding https://files.pythonhosted.org/packages/27/20/b2ada75a6181869fcef6da078681eb12e3c7f1c93e413eb726d961962608/neo4j-5.13.0.tar.gz#sha256=44e60e2b4946340a60b5ba13710d599615f7432612af2bdefc29f44169004de5 (from https://pypi.org/simple/neo4j/) (requires-python:>=3.7): Requested unknown from https://files.pythonhosted.org/packages/27/20/b2ada75a6181869fcef6da078681eb12e3c7f1c93e413eb726d961962608/neo4j-5.13.0.tar.gz#sha256=44e60e2b4946340a60b5ba13710d599615f7432612af2bdefc29f44169004de5 (from nodestream) has inconsistent name: filename has 'neo4j', but metadata has 'unknown'
  Downloading neo4j-5.12.0.tar.gz (190 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 190.9/190.9 KB 17.0 MB/s eta 0:00:00
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Installing backend dependencies ... done
  Preparing metadata (pyproject.toml) ... done
  WARNING: Generating metadata for package neo4j produced metadata for project name unknown. Fix your #egg=neo4j fragments.
Discarding https://files.pythonhosted.org/packages/19/11/9af80c8621ba433039bf47acd7b037998138516eb86fdb9ba492c49ee844/neo4j-5.12.0.tar.gz#sha256=00a776a687267150f9e1950017316b751cf63db7b734a699b1405ac20fd4a731 (from https://pypi.org/simple/neo4j/) (requires-python:>=3.7): Requested unknown from https://files.pythonhosted.org/packages/19/11/9af80c8621ba433039bf47acd7b037998138516eb86fdb9ba492c49ee844/neo4j-5.12.0.tar.gz#sha256=00a776a687267150f9e1950017316b751cf63db7b734a699b1405ac20fd4a731 (from nodestream) has inconsistent name: filename has 'neo4j', but metadata has 'unknown'
  Downloading neo4j-5.11.0.tar.gz (188 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 188.4/188.4 KB 29.5 MB/s eta 0:00:00
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Installing backend dependencies ... done
  Preparing metadata (pyproject.toml) ... done
  WARNING: Generating metadata for package neo4j produced metadata for project name unknown. Fix your #egg=neo4j fragments.
Discarding https://files.pythonhosted.org/packages/d0/68/f9ce3c2e8c4e4fa5e175dffbda7a920acb59e3db97d9efa85d0e3c671758/neo4j-5.11.0.tar.gz#sha256=81d425ef9a53279c6909ec8d33e7dc913acc840292f0f3a047f3c3c5b74bccb5 (from https://pypi.org/simple/neo4j/) (requires-python:>=3.7): Requested unknown from https://files.pythonhosted.org/packages/d0/68/f9ce3c2e8c4e4fa5e175dffbda7a920acb59e3db97d9efa85d0e3c671758/neo4j-5.11.0.tar.gz#sha256=81d425ef9a53279c6909ec8d33e7dc913acc840292f0f3a047f3c3c5b74bccb5 (from nodestream) has inconsistent name: filename has 'neo4j', but metadata has 'unknown'
  Downloading neo4j-5.10.0.tar.gz (187 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 187.7/187.7 KB 5.6 MB/s eta 0:00:00
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Installing backend dependencies ... done
  Preparing metadata (pyproject.toml) ... done
  WARNING: Generating metadata for package neo4j produced metadata for project name unknown. Fix your #egg=neo4j fragments.
Discarding https://files.pythonhosted.org/packages/21/53/24d8ba3afffd91c59f356fffbf5d0e2afdc9085ee40927b16d9ee65f05a6/neo4j-5.10.0.tar.gz#sha256=90616b2de1dc5a5e0ab17b72f0762f3496ac9f21c58bc0067f44d40c41db6a4e (from https://pypi.org/simple/neo4j/) (requires-python:>=3.7): Requested unknown from https://files.pythonhosted.org/packages/21/53/24d8ba3afffd91c59f356fffbf5d0e2afdc9085ee40927b16d9ee65f05a6/neo4j-5.10.0.tar.gz#sha256=90616b2de1dc5a5e0ab17b72f0762f3496ac9f21c58bc0067f44d40c41db6a4e (from nodestream) has inconsistent name: filename has 'neo4j', but metadata has 'unknown'
  Downloading neo4j-5.9.0.tar.gz (188 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 188.5/188.5 KB 5.5 MB/s eta 0:00:00
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Installing backend dependencies ... done
  Preparing metadata (pyproject.toml) ... done
  WARNING: Generating metadata for package neo4j produced metadata for project name unknown. Fix your #egg=neo4j fragments.
Discarding https://files.pythonhosted.org/packages/e9/b7/faa4628ea379f9e43772ca4448356a35e58ce44306a91117f2892487e187/neo4j-5.9.0.tar.gz#sha256=b0abc0065f616bfd8230a48b1f6c91f9aacd7e2aea76d72d09a745ae169cf4da (from https://pypi.org/simple/neo4j/) (requires-python:>=3.7): Requested unknown from https://files.pythonhosted.org/packages/e9/b7/faa4628ea379f9e43772ca4448356a35e58ce44306a91117f2892487e187/neo4j-5.9.0.tar.gz#sha256=b0abc0065f616bfd8230a48b1f6c91f9aacd7e2aea76d72d09a745ae169cf4da (from nodestream) has inconsistent name: filename has 'neo4j', but metadata has 'unknown'
  Downloading neo4j-5.8.1.tar.gz (187 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 187.7/187.7 KB 20.1 MB/s eta 0:00:00
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Installing backend dependencies ... done
  Preparing metadata (pyproject.toml) ... done
  WARNING: Generating metadata for package neo4j produced metadata for project name unknown. Fix your #egg=neo4j fragments.
Discarding https://files.pythonhosted.org/packages/97/9f/8f04fe1e04c832d87283ede166290cc29c1c3aa0d274946f88361d42a9d3/neo4j-5.8.1.tar.gz#sha256=79c947f402e9f8624587add7b8af742b38cbcdf364d48021c5bff9220457965b (from https://pypi.org/simple/neo4j/) (requires-python:>=3.7): Requested unknown from https://files.pythonhosted.org/packages/97/9f/8f04fe1e04c832d87283ede166290cc29c1c3aa0d274946f88361d42a9d3/neo4j-5.8.1.tar.gz#sha256=79c947f402e9f8624587add7b8af742b38cbcdf364d48021c5bff9220457965b (from nodestream) has inconsistent name: filename has 'neo4j', but metadata has 'unknown'
  Downloading neo4j-5.8.0.tar.gz (187 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 187.5/187.5 KB 2.0 MB/s eta 0:00:00
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Installing backend dependencies ... done
  Preparing metadata (pyproject.toml) ... done
  WARNING: Generating metadata for package neo4j produced metadata for project name unknown. Fix your #egg=neo4j fragments.
Discarding https://files.pythonhosted.org/packages/6a/86/8045ef105ecbc1069d36856e0fe52b0f9b7838a55277908034b4bef0f9dc/neo4j-5.8.0.tar.gz#sha256=af5e70801f63eaaff8fa90bfdc943c144fb6857438590782b30d0ed745229b9e (from https://pypi.org/simple/neo4j/) (requires-python:>=3.7): Requested unknown from https://files.pythonhosted.org/packages/6a/86/8045ef105ecbc1069d36856e0fe52b0f9b7838a55277908034b4bef0f9dc/neo4j-5.8.0.tar.gz#sha256=af5e70801f63eaaff8fa90bfdc943c144fb6857438590782b30d0ed745229b9e (from nodestream) has inconsistent name: filename has 'neo4j', but metadata has 'unknown'
Collecting nodestream
  Downloading nodestream-0.11.10-py3-none-any.whl (123 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 123.2/123.2 KB 2.4 MB/s eta 0:00:00
  Downloading nodestream-0.11.9-py3-none-any.whl (123 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 123.2/123.2 KB 3.1 MB/s eta 0:00:00
  Downloading nodestream-0.11.8-py3-none-any.whl (122 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 122.9/122.9 KB 3.5 MB/s eta 0:00:00
  Downloading nodestream-0.11.7-py3-none-any.whl (122 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 122.2/122.2 KB 3.9 MB/s eta 0:00:00
  Downloading nodestream-0.11.6-py3-none-any.whl (122 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 122.2/122.2 KB 3.5 MB/s eta 0:00:00
  Downloading nodestream-0.11.5-py3-none-any.whl (122 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 122.1/122.1 KB 3.3 MB/s eta 0:00:00
  Downloading nodestream-0.11.4-py3-none-any.whl (122 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 122.1/122.1 KB 3.4 MB/s eta 0:00:00
  Downloading nodestream-0.11.3-py3-none-any.whl (122 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 122.1/122.1 KB 4.1 MB/s eta 0:00:00
  Downloading nodestream-0.11.2-py3-none-any.whl (121 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 121.9/121.9 KB 4.0 MB/s eta 0:00:00
  Downloading nodestream-0.11.1-py3-none-any.whl (121 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 121.9/121.9 KB 4.7 MB/s eta 0:00:00
  Downloading nodestream-0.11.0-py3-none-any.whl (121 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 121.9/121.9 KB 5.1 MB/s eta 0:00:00
  Downloading nodestream-0.10.8-py3-none-any.whl (120 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 120.6/120.6 KB 4.3 MB/s eta 0:00:00
  Downloading nodestream-0.10.7-py3-none-any.whl (120 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 120.5/120.5 KB 4.8 MB/s eta 0:00:00
  Downloading nodestream-0.10.6-py3-none-any.whl (120 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 120.4/120.4 KB 4.8 MB/s eta 0:00:00
  Downloading nodestream-0.10.5-py3-none-any.whl (120 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 120.4/120.4 KB 5.1 MB/s eta 0:00:00
  Downloading nodestream-0.10.4-py3-none-any.whl (120 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 120.4/120.4 KB 4.9 MB/s eta 0:00:00
  Downloading nodestream-0.10.3-py3-none-any.whl (120 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 120.4/120.4 KB 4.9 MB/s eta 0:00:00
  Downloading nodestream-0.10.2-py3-none-any.whl (120 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 120.3/120.3 KB 4.8 MB/s eta 0:00:00
  Downloading nodestream-0.10.1-py3-none-any.whl (120 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 120.2/120.2 KB 4.2 MB/s eta 0:00:00
  Downloading nodestream-0.10.0-py3-none-any.whl (118 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 118.9/118.9 KB 4.9 MB/s eta 0:00:00
  Downloading nodestream-0.9.5-py3-none-any.whl (116 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 116.5/116.5 KB 4.3 MB/s eta 0:00:00
  Downloading nodestream-0.9.4-py3-none-any.whl (116 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 116.1/116.1 KB 4.8 MB/s eta 0:00:00
  Downloading nodestream-0.9.3-py3-none-any.whl (116 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 116.1/116.1 KB 5.4 MB/s eta 0:00:00
  Downloading nodestream-0.9.2-py3-none-any.whl (114 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 114.9/114.9 KB 4.8 MB/s eta 0:00:00
  Downloading nodestream-0.9.1-py3-none-any.whl (113 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 113.8/113.8 KB 4.8 MB/s eta 0:00:00
  Downloading nodestream-0.9.0-py3-none-any.whl (113 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 113.9/113.9 KB 4.2 MB/s eta 0:00:00
  Downloading nodestream-0.8.20-py3-none-any.whl (108 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 108.5/108.5 KB 4.2 MB/s eta 0:00:00
  Downloading nodestream-0.8.19-py3-none-any.whl (108 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 108.5/108.5 KB 4.5 MB/s eta 0:00:00
  Downloading nodestream-0.8.18-py3-none-any.whl (107 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 107.8/107.8 KB 4.6 MB/s eta 0:00:00
  Downloading nodestream-0.8.17-py3-none-any.whl (107 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 107.7/107.7 KB 4.7 MB/s eta 0:00:00
  Downloading nodestream-0.8.16-py3-none-any.whl (107 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 107.7/107.7 KB 4.6 MB/s eta 0:00:00
  Downloading nodestream-0.8.15-py3-none-any.whl (107 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 107.6/107.6 KB 4.8 MB/s eta 0:00:00
Collecting aiokafka<0.9.0,>=0.8.0
  Downloading aiokafka-0.8.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.1/1.1 MB 4.2 MB/s eta 0:00:00
Collecting nodestream
  Downloading nodestream-0.8.14-py3-none-any.whl (107 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 107.4/107.4 KB 5.7 MB/s eta 0:00:00
  Downloading nodestream-0.8.13-py3-none-any.whl (106 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 106.7/106.7 KB 4.7 MB/s eta 0:00:00
  Downloading nodestream-0.8.12-py3-none-any.whl (106 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 106.6/106.6 KB 4.8 MB/s eta 0:00:00
  Downloading nodestream-0.8.11-py3-none-any.whl (106 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 106.6/106.6 KB 5.0 MB/s eta 0:00:00
  Downloading nodestream-0.8.10-py3-none-any.whl (106 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 106.5/106.5 KB 5.4 MB/s eta 0:00:00
  Downloading nodestream-0.8.9-py3-none-any.whl (106 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 106.6/106.6 KB 5.3 MB/s eta 0:00:00
  Downloading nodestream-0.8.8-py3-none-any.whl (106 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 106.5/106.5 KB 5.5 MB/s eta 0:00:00
  Downloading nodestream-0.8.7-py3-none-any.whl (106 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 106.4/106.4 KB 5.5 MB/s eta 0:00:00
  Downloading nodestream-0.8.6-py3-none-any.whl (107 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 107.1/107.1 KB 4.7 MB/s eta 0:00:00
Collecting uvloop<0.18.0,>=0.17.0
  Downloading uvloop-0.17.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.1 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.1/4.1 MB 4.6 MB/s eta 0:00:00
Collecting jq<2.0.0,>=1.4.1
  Downloading jq-1.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (657 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 657.6/657.6 KB 4.8 MB/s eta 0:00:00
Collecting nodestream
  Downloading nodestream-0.8.5-py3-none-any.whl (107 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 107.1/107.1 KB 6.5 MB/s eta 0:00:00
  Downloading nodestream-0.8.4-py3-none-any.whl (106 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 106.8/106.8 KB 5.8 MB/s eta 0:00:00
  Downloading nodestream-0.8.3-py3-none-any.whl (106 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 106.8/106.8 KB 6.6 MB/s eta 0:00:00
  Downloading nodestream-0.8.2-py3-none-any.whl (113 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 113.5/113.5 KB 5.9 MB/s eta 0:00:00
  Downloading nodestream-0.8.1-py3-none-any.whl (113 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 113.1/113.1 KB 6.2 MB/s eta 0:00:00
  Downloading nodestream-0.7.2-py3-none-any.whl (110 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 110.3/110.3 KB 5.4 MB/s eta 0:00:00
  Downloading nodestream-0.7.1-py3-none-any.whl (110 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 110.2/110.2 KB 6.4 MB/s eta 0:00:00
  Downloading nodestream-0.7.0-py3-none-any.whl (110 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 110.2/110.2 KB 5.6 MB/s eta 0:00:00
  Downloading nodestream-0.6.1-py3-none-any.whl (109 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 109.9/109.9 KB 6.0 MB/s eta 0:00:00
  Downloading nodestream-0.6.0-py3-none-any.whl (109 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 109.9/109.9 KB 5.6 MB/s eta 0:00:00
  Downloading nodestream-0.5.0-py3-none-any.whl (106 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 106.0/106.0 KB 5.0 MB/s eta 0:00:00
  Downloading nodestream-0.4.0-py3-none-any.whl (103 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 103.2/103.2 KB 5.5 MB/s eta 0:00:00
  Downloading nodestream-0.3.3-py3-none-any.whl (101 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 101.8/101.8 KB 5.5 MB/s eta 0:00:00
  Downloading nodestream-0.3.2-py3-none-any.whl (101 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 101.8/101.8 KB 6.3 MB/s eta 0:00:00
  Downloading nodestream-0.3.1-py3-none-any.whl (101 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 101.8/101.8 KB 5.4 MB/s eta 0:00:00
  Downloading nodestream-0.3.0-py3-none-any.whl (101 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 101.8/101.8 KB 6.4 MB/s eta 0:00:00
  Downloading nodestream-0.2.0-py3-none-any.whl (98 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 98.5/98.5 KB 5.9 MB/s eta 0:00:00
ERROR: Cannot install nodestream==0.10.0, nodestream==0.10.1, nodestream==0.10.2, nodestream==0.10.3, nodestream==0.10.4, nodestream==0.10.5, nodestream==0.10.6, nodestream==0.10.7, nodestream==0.10.8, nodestream==0.11.0, nodestream==0.11.1, nodestream==0.11.10, nodestream==0.11.11, nodestream==0.11.2, nodestream==0.11.3, nodestream==0.11.4, nodestream==0.11.5, nodestream==0.11.6, nodestream==0.11.7, nodestream==0.11.8, nodestream==0.11.9, nodestream==0.2.0, nodestream==0.3.0, nodestream==0.3.1, nodestream==0.3.2, nodestream==0.3.3, nodestream==0.4.0, nodestream==0.5.0, nodestream==0.6.0, nodestream==0.6.1, nodestream==0.7.0, nodestream==0.7.1, nodestream==0.7.2, nodestream==0.8.1, nodestream==0.8.10, nodestream==0.8.11, nodestream==0.8.12, nodestream==0.8.13, nodestream==0.8.14, nodestream==0.8.15, nodestream==0.8.16, nodestream==0.8.17, nodestream==0.8.18, nodestream==0.8.19, nodestream==0.8.2, nodestream==0.8.20, nodestream==0.8.3, nodestream==0.8.4, nodestream==0.8.5, nodestream==0.8.6, nodestream==0.8.7, nodestream==0.8.8, nodestream==0.8.9, nodestream==0.9.0, nodestream==0.9.1, nodestream==0.9.2, nodestream==0.9.3, nodestream==0.9.4 and nodestream==0.9.5 because these package versions have conflicting dependencies.

The conflict is caused by:
    nodestream 0.11.11 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.11.10 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.11.9 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.11.8 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.11.7 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.11.6 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.11.5 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.11.4 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.11.3 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.11.2 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.11.1 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.11.0 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.10.8 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.10.7 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.10.6 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.10.5 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.10.4 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.10.3 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.10.2 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.10.1 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.10.0 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.9.5 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.9.4 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.9.3 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.9.2 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.9.1 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.9.0 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.8.20 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.8.19 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.8.18 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.8.17 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.8.16 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.8.15 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.8.14 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.8.13 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.8.12 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.8.11 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.8.10 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.8.9 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.8.8 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.8.7 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.8.6 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.8.5 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.8.4 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.8.3 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.8.2 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.8.1 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.7.2 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.7.1 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.7.0 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.6.1 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.6.0 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.5.0 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.4.0 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.3.3 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.3.2 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.3.1 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.3.0 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.2.0 depends on neo4j<6.0.0 and >=5.8.0

To fix this you could try to:
1. loosen the range of package versions you've specified
2. remove package versions to allow pip attempt to solve the dependency conflict

ERROR: ResolutionImpossible: for help visit https://pip.pypa.io/en/latest/topics/dependency-resolution/#dealing-with-dependency-conflicts

Well it certainly wasn’t pleased with the neo4j dependencies (i re-ran the command with pip3 as well just in case this Dockerhost was amiss).

I have a backup Docker host in the former cluster master Macbook Air I respun. It’s a fresh Ubuntu 22 instance so it should be as clean as could be at this point

isaac@isaac-MacBookAir:~$ sudo apt install python3-pip python3
[sudo] password for isaac:
Sorry, try again.
[sudo] password for isaac:
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
python3 is already the newest version (3.10.6-1~22.04).
python3 set to manually installed.
The following packages were automatically installed and are no longer required:
  app-install-data-partner bsdmainutils g++-9 gcc-10-base gir1.2-clutter-1.0 gir1.2-clutter-gst-3.0 gir1.2-cogl-1.0 gir1.2-coglpango-1.0
  gir1.2-gnomebluetooth-1.0 gir1.2-gtkclutter-1.0 gnome-getting-started-docs gnome-screenshot ippusbxd libamtk-5-0 libamtk-5-common libaom0
  libasn1-8-heimdal libboost-date-time1.71.0 libboost-filesystem1.71.0 libboost-iostreams1.71.0 libboost-locale1.71.0 libboost-thread1.71.0
  libbrlapi0.7 libcamel-1.2-62 libcbor0.6 libcdio18 libcmis-0.5-5v5 libcodec2-0.9 libdns-export1109 libdvdnav4 libdvdread7 libedataserver-1.2-24
  libedataserverui-1.2-2 libextutils-pkgconfig-perl libfftw3-double3 libfprint-2-tod1 libfuse2 libfwupdplugin1 libgdk-pixbuf-xlib-2.0-0
  libgdk-pixbuf2.0-0 libgssapi3-heimdal libgupnp-1.2-0 libhandy-0.0-0 libhcrypto4-heimdal libheimbase1-heimdal libheimntlm0-heimdal libhogweed5
  libhx509-5-heimdal libicu66 libidn11 libigdgmm11 libisl22 libjson-c4 libjuh-java libjurt-java libkrb5-26-heimdal libldap-2.4-2
  liblibreoffice-java libllvm10 libllvm12 libmozjs-68-0 libmpdec2 libmysqlclient21 libneon27-gnutls libnettle7 libntfs-3g883 liborcus-0.15-0
  libperl5.30 libpgm-5.2-0 libphonenumber7 libpoppler97 libprotobuf17 libpython3.8 libpython3.8-minimal libpython3.8-stdlib libqpdf26 libraw19
  libreoffice-style-tango libridl-java libroken18-heimdal libsane libsnmp35 libssl1.1 libstdc++-9-dev libtepl-4-0 libtracker-control-2.0-0
  libtracker-miner-2.0-0 libtracker-sparql-2.0-0 libunoloader-java libvpx6 libwebp6 libwind0-heimdal libwmf0.2-7 libx264-155 libx265-179 libxmlb1
  linux-hwe-5.15-headers-5.15.0-100 ltrace lz4 mysql-common ncal perl-modules-5.30 pkg-config popularity-contest python3-entrypoints
  python3-requests-unixsocket python3-simplejson python3.8 python3.8-minimal syslinux syslinux-common syslinux-legacy ure-java vino
  xul-ext-ubufox
Use 'sudo apt autoremove' to remove them.
The following additional packages will be installed:
  javascript-common libexpat1-dev libjs-jquery libjs-sphinxdoc libjs-underscore libpython3-dev libpython3.10-dev python3-dev python3-distutils
  python3-setuptools python3-wheel python3.10-dev zlib1g-dev
Suggested packages:
  apache2 | lighttpd | httpd python-setuptools-doc
The following NEW packages will be installed:
  javascript-common libexpat1-dev libjs-jquery libjs-sphinxdoc libjs-underscore libpython3-dev libpython3.10-dev python3-dev python3-distutils
  python3-pip python3-setuptools python3-wheel python3.10-dev zlib1g-dev
0 upgraded, 14 newly installed, 0 to remove and 8 not upgraded.
Need to get 8,013 kB of archives.
After this operation, 34.2 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://us.archive.ubuntu.com/ubuntu jammy/main amd64 javascript-common all 11+nmu1 [5,936 B]
Get:2 http://us.archive.ubuntu.com/ubuntu jammy-updates/main amd64 libexpat1-dev amd64 2.4.7-1ubuntu0.3 [147 kB]
Get:3 http://us.archive.ubuntu.com/ubuntu jammy/main amd64 libjs-jquery all 3.6.0+dfsg+~3.5.13-1 [321 kB]
Get:4 http://us.archive.ubuntu.com/ubuntu jammy/main amd64 libjs-underscore all 1.13.2~dfsg-2 [118 kB]
Get:5 http://us.archive.ubuntu.com/ubuntu jammy/main amd64 libjs-sphinxdoc all 4.3.2-1 [139 kB]
Get:6 http://us.archive.ubuntu.com/ubuntu jammy-updates/main amd64 zlib1g-dev amd64 1:1.2.11.dfsg-2ubuntu9.2 [164 kB]
Get:7 http://us.archive.ubuntu.com/ubuntu jammy-updates/main amd64 libpython3.10-dev amd64 3.10.12-1~22.04.3 [4,762 kB]
Get:8 http://us.archive.ubuntu.com/ubuntu jammy-updates/main amd64 libpython3-dev amd64 3.10.6-1~22.04 [7,166 B]
Get:9 http://us.archive.ubuntu.com/ubuntu jammy-updates/main amd64 python3.10-dev amd64 3.10.12-1~22.04.3 [507 kB]
Get:10 http://us.archive.ubuntu.com/ubuntu jammy-updates/main amd64 python3-distutils all 3.10.8-1~22.04 [139 kB]
Get:11 http://us.archive.ubuntu.com/ubuntu jammy-updates/main amd64 python3-dev amd64 3.10.6-1~22.04 [26.0 kB]
Get:12 http://us.archive.ubuntu.com/ubuntu jammy-updates/main amd64 python3-setuptools all 59.6.0-1.2ubuntu0.22.04.1 [339 kB]
Get:13 http://us.archive.ubuntu.com/ubuntu jammy-updates/universe amd64 python3-wheel all 0.37.1-2ubuntu0.22.04.1 [32.0 kB]
Get:14 http://us.archive.ubuntu.com/ubuntu jammy-updates/universe amd64 python3-pip all 22.0.2+dfsg-1ubuntu0.4 [1,305 kB]
Fetched 8,013 kB in 1s (6,494 kB/s)
Selecting previously unselected package javascript-common.
(Reading database ... 268158 files and directories currently installed.)
Preparing to unpack .../00-javascript-common_11+nmu1_all.deb ...
Unpacking javascript-common (11+nmu1) ...
Selecting previously unselected package libexpat1-dev:amd64.
Preparing to unpack .../01-libexpat1-dev_2.4.7-1ubuntu0.3_amd64.deb ...
Unpacking libexpat1-dev:amd64 (2.4.7-1ubuntu0.3) ...
Selecting previously unselected package libjs-jquery.
Preparing to unpack .../02-libjs-jquery_3.6.0+dfsg+~3.5.13-1_all.deb ...
Unpacking libjs-jquery (3.6.0+dfsg+~3.5.13-1) ...
Selecting previously unselected package libjs-underscore.
Preparing to unpack .../03-libjs-underscore_1.13.2~dfsg-2_all.deb ...
Unpacking libjs-underscore (1.13.2~dfsg-2) ...
Selecting previously unselected package libjs-sphinxdoc.
Preparing to unpack .../04-libjs-sphinxdoc_4.3.2-1_all.deb ...
Unpacking libjs-sphinxdoc (4.3.2-1) ...
Selecting previously unselected package zlib1g-dev:amd64.
Preparing to unpack .../05-zlib1g-dev_1%3a1.2.11.dfsg-2ubuntu9.2_amd64.deb ...
Unpacking zlib1g-dev:amd64 (1:1.2.11.dfsg-2ubuntu9.2) ...
Selecting previously unselected package libpython3.10-dev:amd64.
Preparing to unpack .../06-libpython3.10-dev_3.10.12-1~22.04.3_amd64.deb ...
Unpacking libpython3.10-dev:amd64 (3.10.12-1~22.04.3) ...
Selecting previously unselected package libpython3-dev:amd64.
Preparing to unpack .../07-libpython3-dev_3.10.6-1~22.04_amd64.deb ...
Unpacking libpython3-dev:amd64 (3.10.6-1~22.04) ...
Selecting previously unselected package python3.10-dev.
Preparing to unpack .../08-python3.10-dev_3.10.12-1~22.04.3_amd64.deb ...
Unpacking python3.10-dev (3.10.12-1~22.04.3) ...
Selecting previously unselected package python3-distutils.
Preparing to unpack .../09-python3-distutils_3.10.8-1~22.04_all.deb ...
Unpacking python3-distutils (3.10.8-1~22.04) ...
Selecting previously unselected package python3-dev.
Preparing to unpack .../10-python3-dev_3.10.6-1~22.04_amd64.deb ...
Unpacking python3-dev (3.10.6-1~22.04) ...
Selecting previously unselected package python3-setuptools.
Preparing to unpack .../11-python3-setuptools_59.6.0-1.2ubuntu0.22.04.1_all.deb ...
Unpacking python3-setuptools (59.6.0-1.2ubuntu0.22.04.1) ...
Selecting previously unselected package python3-wheel.
Preparing to unpack .../12-python3-wheel_0.37.1-2ubuntu0.22.04.1_all.deb ...
Unpacking python3-wheel (0.37.1-2ubuntu0.22.04.1) ...
Selecting previously unselected package python3-pip.
Preparing to unpack .../13-python3-pip_22.0.2+dfsg-1ubuntu0.4_all.deb ...
Unpacking python3-pip (22.0.2+dfsg-1ubuntu0.4) ...
Setting up python3-distutils (3.10.8-1~22.04) ...
Setting up javascript-common (11+nmu1) ...
Setting up python3-setuptools (59.6.0-1.2ubuntu0.22.04.1) ...
Setting up python3-wheel (0.37.1-2ubuntu0.22.04.1) ...
Setting up libexpat1-dev:amd64 (2.4.7-1ubuntu0.3) ...
Setting up python3-pip (22.0.2+dfsg-1ubuntu0.4) ...
Setting up zlib1g-dev:amd64 (1:1.2.11.dfsg-2ubuntu9.2) ...
Setting up libjs-jquery (3.6.0+dfsg+~3.5.13-1) ...
Setting up libjs-underscore (1.13.2~dfsg-2) ...
Setting up libpython3.10-dev:amd64 (3.10.12-1~22.04.3) ...
Setting up libjs-sphinxdoc (4.3.2-1) ...
Setting up python3.10-dev (3.10.12-1~22.04.3) ...
Setting up libpython3-dev:amd64 (3.10.6-1~22.04) ...
Setting up python3-dev (3.10.6-1~22.04) ...
Processing triggers for man-db (2.10.2-1) ...
isaac@isaac-MacBookAir:~$ pip install nodestream
Defaulting to user installation because normal site-packages is not writeable
Collecting nodestream
  Downloading nodestream-0.11.11-py3-none-any.whl (123 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 123.4/123.4 KB 1.7 MB/s eta 0:00:00
Collecting cleo<3.0.0,>=2.0.1
  Downloading cleo-2.1.0-py3-none-any.whl (78 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 78.7/78.7 KB 5.5 MB/s eta 0:00:00
Collecting jmespath<2.0.0,>=1.0.1
  Downloading jmespath-1.0.1-py3-none-any.whl (20 kB)
Collecting httpx<0.25.0,>=0.24.1
  Downloading httpx-0.24.1-py3-none-any.whl (75 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 75.4/75.4 KB 6.7 MB/s eta 0:00:00
Collecting cookiecutter<3.0.0,>=2.1.1
  Downloading cookiecutter-2.6.0-py3-none-any.whl (39 kB)
Collecting pyyaml<7.0,>=6.0
  Downloading PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (705 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 705.5/705.5 KB 7.6 MB/s eta 0:00:00
Collecting uvloop<=0.18.0,>=0.17.0
  Downloading uvloop-0.18.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.2 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.2/4.2 MB 9.5 MB/s eta 0:00:00
Collecting boto3<2.0.0,>=1.26.137
  Downloading boto3-1.34.69-py3-none-any.whl (139 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 139.3/139.3 KB 11.8 MB/s eta 0:00:00
Collecting Jinja2<4,>=3
  Downloading Jinja2-3.1.3-py3-none-any.whl (133 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 133.2/133.2 KB 7.1 MB/s eta 0:00:00
Collecting confluent-kafka<3.0.0,>=2.3.0
  Downloading confluent_kafka-2.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.0 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.0/4.0 MB 7.9 MB/s eta 0:00:00
Collecting neo4j<6.0.0,>=5.8.0
  Downloading neo4j-5.18.0.tar.gz (198 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 198.0/198.0 KB 9.2 MB/s eta 0:00:00
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Installing backend dependencies ... done
  Preparing metadata (pyproject.toml) ... done
  WARNING: Generating metadata for package neo4j produced metadata for project name unknown. Fix your #egg=neo4j fragments.
Discarding https://files.pythonhosted.org/packages/87/17/ccb010bd9ec0039a1578d9ba55830ff4270620fa5fc44a00651144e0136d/neo4j-5.18.0.tar.gz#sha256=4014406ae5b8b485a8ba46c9f00b6f5b4aaf88e7c3a50603445030c2aab701c9 (from https://pypi.org/simple/neo4j/) (requires-python:>=3.7): Requested unknown from https://files.pythonhosted.org/packages/87/17/ccb010bd9ec0039a1578d9ba55830ff4270620fa5fc44a00651144e0136d/neo4j-5.18.0.tar.gz#sha256=4014406ae5b8b485a8ba46c9f00b6f5b4aaf88e7c3a50603445030c2aab701c9 (from nodestream) has inconsistent name: filename has 'neo4j', but metadata has 'unknown'
  Downloading neo4j-5.17.0.tar.gz (197 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 197.8/197.8 KB 8.6 MB/s eta 0:00:00
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Installing backend dependencies ... done
  Preparing metadata (pyproject.toml) ... done
  WARNING: Generating metadata for package neo4j produced metadata for project name unknown. Fix your #egg=neo4j fragments.
Discarding https://files.pythonhosted.org/packages/9f/cb/cd58ece4e7bf710d66627275fdbe7e5e930884d2a4eb69108b469124c363/neo4j-5.17.0.tar.gz#sha256=dcd7150a0c3834a89a6e27505e614f340376f31c97c48ba60dc70a220ee85e3b (from https://pypi.org/simple/neo4j/) (requires-python:>=3.7): Requested unknown from https://files.pythonhosted.org/packages/9f/cb/cd58ece4e7bf710d66627275fdbe7e5e930884d2a4eb69108b469124c363/neo4j-5.17.0.tar.gz#sha256=dcd7150a0c3834a89a6e27505e614f340376f31c97c48ba60dc70a220ee85e3b (from nodestream) has inconsistent name: filename has 'neo4j', but metadata has 'unknown'
  Downloading neo4j-5.16.0.tar.gz (197 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 197.8/197.8 KB 7.6 MB/s eta 0:00:00
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Installing backend dependencies ... done
  Preparing metadata (pyproject.toml) ... done
  WARNING: Generating metadata for package neo4j produced metadata for project name unknown. Fix your #egg=neo4j fragments.
Discarding https://files.pythonhosted.org/packages/21/27/0b1c5f370ef4a1745e4c8dde3e21e8376b76f83864397081538bfc34582a/neo4j-5.16.0.tar.gz#sha256=3d04334f5f99dc06c8150e75f2d608a560789ef35670494ecdcec31c0af276a9 (from https://pypi.org/simple/neo4j/) (requires-python:>=3.7): Requested unknown from https://files.pythonhosted.org/packages/21/27/0b1c5f370ef4a1745e4c8dde3e21e8376b76f83864397081538bfc34582a/neo4j-5.16.0.tar.gz#sha256=3d04334f5f99dc06c8150e75f2d608a560789ef35670494ecdcec31c0af276a9 (from nodestream) has inconsistent name: filename has 'neo4j', but metadata has 'unknown'
  Downloading neo4j-5.15.0.tar.gz (196 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 196.5/196.5 KB 7.2 MB/s eta 0:00:00
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Installing backend dependencies ... done
  Preparing metadata (pyproject.toml) ... done
  WARNING: Generating metadata for package neo4j produced metadata for project name unknown. Fix your #egg=neo4j fragments.
Discarding https://files.pythonhosted.org/packages/3f/8a/57cf3ea81791cfc1e1af5b22728bbcd3a0613a18a16fc665835dd9d17f20/neo4j-5.15.0.tar.gz#sha256=5c53eccf5192ac21463d3fac05cf58f1547ed231b953c837aa4393e2fc713ed3 (from https://pypi.org/simple/neo4j/) (requires-python:>=3.7): Requested unknown from https://files.pythonhosted.org/packages/3f/8a/57cf3ea81791cfc1e1af5b22728bbcd3a0613a18a16fc665835dd9d17f20/neo4j-5.15.0.tar.gz#sha256=5c53eccf5192ac21463d3fac05cf58f1547ed231b953c837aa4393e2fc713ed3 (from nodestream) has inconsistent name: filename has 'neo4j', but metadata has 'unknown'
  Downloading neo4j-5.14.1.tar.gz (192 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 192.8/192.8 KB 8.9 MB/s eta 0:00:00
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Installing backend dependencies ... done
  Preparing metadata (pyproject.toml) ... done
  WARNING: Generating metadata for package neo4j produced metadata for project name unknown. Fix your #egg=neo4j fragments.
Discarding https://files.pythonhosted.org/packages/73/54/9312a287aac523357766797230fe85ec7b70affe9422f05c82b2286d2d47/neo4j-5.14.1.tar.gz#sha256=3200be8550ed16622b2fadf4f749d08b9982989c4bfce6f99ab693f104104cb4 (from https://pypi.org/simple/neo4j/) (requires-python:>=3.7): Requested unknown from https://files.pythonhosted.org/packages/73/54/9312a287aac523357766797230fe85ec7b70affe9422f05c82b2286d2d47/neo4j-5.14.1.tar.gz#sha256=3200be8550ed16622b2fadf4f749d08b9982989c4bfce6f99ab693f104104cb4 (from nodestream) has inconsistent name: filename has 'neo4j', but metadata has 'unknown'
  Downloading neo4j-5.14.0.tar.gz (192 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 192.4/192.4 KB 3.4 MB/s eta 0:00:00
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Installing backend dependencies ... done
  Preparing metadata (pyproject.toml) ... done
  WARNING: Generating metadata for package neo4j produced metadata for project name unknown. Fix your #egg=neo4j fragments.
Discarding https://files.pythonhosted.org/packages/30/2c/7429812a750f86b0942067f4be72fc24beabb3079f5d96326293f5219d9f/neo4j-5.14.0.tar.gz#sha256=6040efca47126c01385f09e550fb7d7671b1853a1e1c34908aa3713cebd285da (from https://pypi.org/simple/neo4j/) (requires-python:>=3.7): Requested unknown from https://files.pythonhosted.org/packages/30/2c/7429812a750f86b0942067f4be72fc24beabb3079f5d96326293f5219d9f/neo4j-5.14.0.tar.gz#sha256=6040efca47126c01385f09e550fb7d7671b1853a1e1c34908aa3713cebd285da (from nodestream) has inconsistent name: filename has 'neo4j', but metadata has 'unknown'
  Downloading neo4j-5.13.0.tar.gz (192 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 192.3/192.3 KB 4.1 MB/s eta 0:00:00
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Installing backend dependencies ... done
  Preparing metadata (pyproject.toml) ... done
  WARNING: Generating metadata for package neo4j produced metadata for project name unknown. Fix your #egg=neo4j fragments.
Discarding https://files.pythonhosted.org/packages/27/20/b2ada75a6181869fcef6da078681eb12e3c7f1c93e413eb726d961962608/neo4j-5.13.0.tar.gz#sha256=44e60e2b4946340a60b5ba13710d599615f7432612af2bdefc29f44169004de5 (from https://pypi.org/simple/neo4j/) (requires-python:>=3.7): Requested unknown from https://files.pythonhosted.org/packages/27/20/b2ada75a6181869fcef6da078681eb12e3c7f1c93e413eb726d961962608/neo4j-5.13.0.tar.gz#sha256=44e60e2b4946340a60b5ba13710d599615f7432612af2bdefc29f44169004de5 (from nodestream) has inconsistent name: filename has 'neo4j', but metadata has 'unknown'
  Downloading neo4j-5.12.0.tar.gz (190 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 190.9/190.9 KB 3.7 MB/s eta 0:00:00
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Installing backend dependencies ... done
  Preparing metadata (pyproject.toml) ... done
  WARNING: Generating metadata for package neo4j produced metadata for project name unknown. Fix your #egg=neo4j fragments.
Discarding https://files.pythonhosted.org/packages/19/11/9af80c8621ba433039bf47acd7b037998138516eb86fdb9ba492c49ee844/neo4j-5.12.0.tar.gz#sha256=00a776a687267150f9e1950017316b751cf63db7b734a699b1405ac20fd4a731 (from https://pypi.org/simple/neo4j/) (requires-python:>=3.7): Requested unknown from https://files.pythonhosted.org/packages/19/11/9af80c8621ba433039bf47acd7b037998138516eb86fdb9ba492c49ee844/neo4j-5.12.0.tar.gz#sha256=00a776a687267150f9e1950017316b751cf63db7b734a699b1405ac20fd4a731 (from nodestream) has inconsistent name: filename has 'neo4j', but metadata has 'unknown'
  Downloading neo4j-5.11.0.tar.gz (188 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 188.4/188.4 KB 3.8 MB/s eta 0:00:00
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Installing backend dependencies ... done
  Preparing metadata (pyproject.toml) ... done
  WARNING: Generating metadata for package neo4j produced metadata for project name unknown. Fix your #egg=neo4j fragments.
Discarding https://files.pythonhosted.org/packages/d0/68/f9ce3c2e8c4e4fa5e175dffbda7a920acb59e3db97d9efa85d0e3c671758/neo4j-5.11.0.tar.gz#sha256=81d425ef9a53279c6909ec8d33e7dc913acc840292f0f3a047f3c3c5b74bccb5 (from https://pypi.org/simple/neo4j/) (requires-python:>=3.7): Requested unknown from https://files.pythonhosted.org/packages/d0/68/f9ce3c2e8c4e4fa5e175dffbda7a920acb59e3db97d9efa85d0e3c671758/neo4j-5.11.0.tar.gz#sha256=81d425ef9a53279c6909ec8d33e7dc913acc840292f0f3a047f3c3c5b74bccb5 (from nodestream) has inconsistent name: filename has 'neo4j', but metadata has 'unknown'
  Downloading neo4j-5.10.0.tar.gz (187 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 187.7/187.7 KB 4.7 MB/s eta 0:00:00
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Installing backend dependencies ... done
  Preparing metadata (pyproject.toml) ... done
  WARNING: Generating metadata for package neo4j produced metadata for project name unknown. Fix your #egg=neo4j fragments.
Discarding https://files.pythonhosted.org/packages/21/53/24d8ba3afffd91c59f356fffbf5d0e2afdc9085ee40927b16d9ee65f05a6/neo4j-5.10.0.tar.gz#sha256=90616b2de1dc5a5e0ab17b72f0762f3496ac9f21c58bc0067f44d40c41db6a4e (from https://pypi.org/simple/neo4j/) (requires-python:>=3.7): Requested unknown from https://files.pythonhosted.org/packages/21/53/24d8ba3afffd91c59f356fffbf5d0e2afdc9085ee40927b16d9ee65f05a6/neo4j-5.10.0.tar.gz#sha256=90616b2de1dc5a5e0ab17b72f0762f3496ac9f21c58bc0067f44d40c41db6a4e (from nodestream) has inconsistent name: filename has 'neo4j', but metadata has 'unknown'
  Downloading neo4j-5.9.0.tar.gz (188 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 188.5/188.5 KB 4.7 MB/s eta 0:00:00
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Installing backend dependencies ... done
  Preparing metadata (pyproject.toml) ... done
  WARNING: Generating metadata for package neo4j produced metadata for project name unknown. Fix your #egg=neo4j fragments.
Discarding https://files.pythonhosted.org/packages/e9/b7/faa4628ea379f9e43772ca4448356a35e58ce44306a91117f2892487e187/neo4j-5.9.0.tar.gz#sha256=b0abc0065f616bfd8230a48b1f6c91f9aacd7e2aea76d72d09a745ae169cf4da (from https://pypi.org/simple/neo4j/) (requires-python:>=3.7): Requested unknown from https://files.pythonhosted.org/packages/e9/b7/faa4628ea379f9e43772ca4448356a35e58ce44306a91117f2892487e187/neo4j-5.9.0.tar.gz#sha256=b0abc0065f616bfd8230a48b1f6c91f9aacd7e2aea76d72d09a745ae169cf4da (from nodestream) has inconsistent name: filename has 'neo4j', but metadata has 'unknown'
  Downloading neo4j-5.8.1.tar.gz (187 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 187.7/187.7 KB 4.0 MB/s eta 0:00:00
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Installing backend dependencies ... done
  Preparing metadata (pyproject.toml) ... done
  WARNING: Generating metadata for package neo4j produced metadata for project name unknown. Fix your #egg=neo4j fragments.
Discarding https://files.pythonhosted.org/packages/97/9f/8f04fe1e04c832d87283ede166290cc29c1c3aa0d274946f88361d42a9d3/neo4j-5.8.1.tar.gz#sha256=79c947f402e9f8624587add7b8af742b38cbcdf364d48021c5bff9220457965b (from https://pypi.org/simple/neo4j/) (requires-python:>=3.7): Requested unknown from https://files.pythonhosted.org/packages/97/9f/8f04fe1e04c832d87283ede166290cc29c1c3aa0d274946f88361d42a9d3/neo4j-5.8.1.tar.gz#sha256=79c947f402e9f8624587add7b8af742b38cbcdf364d48021c5bff9220457965b (from nodestream) has inconsistent name: filename has 'neo4j', but metadata has 'unknown'
  Downloading neo4j-5.8.0.tar.gz (187 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 187.5/187.5 KB 4.0 MB/s eta 0:00:00
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Installing backend dependencies ... done
  Preparing metadata (pyproject.toml) ... done
  WARNING: Generating metadata for package neo4j produced metadata for project name unknown. Fix your #egg=neo4j fragments.
Discarding https://files.pythonhosted.org/packages/6a/86/8045ef105ecbc1069d36856e0fe52b0f9b7838a55277908034b4bef0f9dc/neo4j-5.8.0.tar.gz#sha256=af5e70801f63eaaff8fa90bfdc943c144fb6857438590782b30d0ed745229b9e (from https://pypi.org/simple/neo4j/) (requires-python:>=3.7): Requested unknown from https://files.pythonhosted.org/packages/6a/86/8045ef105ecbc1069d36856e0fe52b0f9b7838a55277908034b4bef0f9dc/neo4j-5.8.0.tar.gz#sha256=af5e70801f63eaaff8fa90bfdc943c144fb6857438590782b30d0ed745229b9e (from nodestream) has inconsistent name: filename has 'neo4j', but metadata has 'unknown'
Collecting nodestream
  Downloading nodestream-0.11.10-py3-none-any.whl (123 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 123.2/123.2 KB 5.4 MB/s eta 0:00:00
  Downloading nodestream-0.11.9-py3-none-any.whl (123 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 123.2/123.2 KB 3.9 MB/s eta 0:00:00
  Downloading nodestream-0.11.8-py3-none-any.whl (122 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 122.9/122.9 KB 4.4 MB/s eta 0:00:00
  Downloading nodestream-0.11.7-py3-none-any.whl (122 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 122.2/122.2 KB 4.2 MB/s eta 0:00:00
  Downloading nodestream-0.11.6-py3-none-any.whl (122 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 122.2/122.2 KB 4.6 MB/s eta 0:00:00
  Downloading nodestream-0.11.5-py3-none-any.whl (122 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 122.1/122.1 KB 4.2 MB/s eta 0:00:00
  Downloading nodestream-0.11.4-py3-none-any.whl (122 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 122.1/122.1 KB 4.6 MB/s eta 0:00:00
  Downloading nodestream-0.11.3-py3-none-any.whl (122 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 122.1/122.1 KB 4.3 MB/s eta 0:00:00
  Downloading nodestream-0.11.2-py3-none-any.whl (121 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 121.9/121.9 KB 4.7 MB/s eta 0:00:00
  Downloading nodestream-0.11.1-py3-none-any.whl (121 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 121.9/121.9 KB 4.6 MB/s eta 0:00:00
  Downloading nodestream-0.11.0-py3-none-any.whl (121 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 121.9/121.9 KB 4.7 MB/s eta 0:00:00
  Downloading nodestream-0.10.8-py3-none-any.whl (120 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 120.6/120.6 KB 4.4 MB/s eta 0:00:00
  Downloading nodestream-0.10.7-py3-none-any.whl (120 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 120.5/120.5 KB 4.4 MB/s eta 0:00:00
  Downloading nodestream-0.10.6-py3-none-any.whl (120 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 120.4/120.4 KB 4.2 MB/s eta 0:00:00
  Downloading nodestream-0.10.5-py3-none-any.whl (120 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 120.4/120.4 KB 4.4 MB/s eta 0:00:00
  Downloading nodestream-0.10.4-py3-none-any.whl (120 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 120.4/120.4 KB 4.2 MB/s eta 0:00:00
  Downloading nodestream-0.10.3-py3-none-any.whl (120 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 120.4/120.4 KB 4.5 MB/s eta 0:00:00
  Downloading nodestream-0.10.2-py3-none-any.whl (120 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 120.3/120.3 KB 4.3 MB/s eta 0:00:00
  Downloading nodestream-0.10.1-py3-none-any.whl (120 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 120.2/120.2 KB 4.5 MB/s eta 0:00:00
  Downloading nodestream-0.10.0-py3-none-any.whl (118 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 118.9/118.9 KB 4.3 MB/s eta 0:00:00
  Downloading nodestream-0.9.5-py3-none-any.whl (116 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 116.5/116.5 KB 3.5 MB/s eta 0:00:00
  Downloading nodestream-0.9.4-py3-none-any.whl (116 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 116.1/116.1 KB 4.2 MB/s eta 0:00:00
  Downloading nodestream-0.9.3-py3-none-any.whl (116 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 116.1/116.1 KB 4.2 MB/s eta 0:00:00
  Downloading nodestream-0.9.2-py3-none-any.whl (114 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 114.9/114.9 KB 4.3 MB/s eta 0:00:00
  Downloading nodestream-0.9.1-py3-none-any.whl (113 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 113.8/113.8 KB 4.3 MB/s eta 0:00:00
  Downloading nodestream-0.9.0-py3-none-any.whl (113 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 113.9/113.9 KB 4.4 MB/s eta 0:00:00
  Downloading nodestream-0.8.20-py3-none-any.whl (108 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 108.5/108.5 KB 4.3 MB/s eta 0:00:00
  Downloading nodestream-0.8.19-py3-none-any.whl (108 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 108.5/108.5 KB 4.5 MB/s eta 0:00:00
  Downloading nodestream-0.8.18-py3-none-any.whl (107 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 107.8/107.8 KB 4.3 MB/s eta 0:00:00
  Downloading nodestream-0.8.17-py3-none-any.whl (107 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 107.7/107.7 KB 4.4 MB/s eta 0:00:00
  Downloading nodestream-0.8.16-py3-none-any.whl (107 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 107.7/107.7 KB 4.2 MB/s eta 0:00:00
  Downloading nodestream-0.8.15-py3-none-any.whl (107 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 107.6/107.6 KB 4.9 MB/s eta 0:00:00
Collecting aiokafka<0.9.0,>=0.8.0
  Downloading aiokafka-0.8.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.1/1.1 MB 4.4 MB/s eta 0:00:00
Collecting nodestream
  Downloading nodestream-0.8.14-py3-none-any.whl (107 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 107.4/107.4 KB 4.6 MB/s eta 0:00:00
  Downloading nodestream-0.8.13-py3-none-any.whl (106 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 106.7/106.7 KB 4.2 MB/s eta 0:00:00
  Downloading nodestream-0.8.12-py3-none-any.whl (106 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 106.6/106.6 KB 3.8 MB/s eta 0:00:00
  Downloading nodestream-0.8.11-py3-none-any.whl (106 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 106.6/106.6 KB 3.7 MB/s eta 0:00:00
  Downloading nodestream-0.8.10-py3-none-any.whl (106 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 106.5/106.5 KB 4.3 MB/s eta 0:00:00
  Downloading nodestream-0.8.9-py3-none-any.whl (106 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 106.6/106.6 KB 4.5 MB/s eta 0:00:00
  Downloading nodestream-0.8.8-py3-none-any.whl (106 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 106.5/106.5 KB 4.3 MB/s eta 0:00:00
  Downloading nodestream-0.8.7-py3-none-any.whl (106 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 106.4/106.4 KB 4.1 MB/s eta 0:00:00
  Downloading nodestream-0.8.6-py3-none-any.whl (107 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 107.1/107.1 KB 4.8 MB/s eta 0:00:00
Collecting uvloop<0.18.0,>=0.17.0
  Downloading uvloop-0.17.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.1 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.1/4.1 MB 5.0 MB/s eta 0:00:00
Collecting nodestream
  Downloading nodestream-0.8.5-py3-none-any.whl (107 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 107.1/107.1 KB 5.2 MB/s eta 0:00:00
  Downloading nodestream-0.8.4-py3-none-any.whl (106 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 106.8/106.8 KB 4.9 MB/s eta 0:00:00
  Downloading nodestream-0.8.3-py3-none-any.whl (106 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 106.8/106.8 KB 4.7 MB/s eta 0:00:00
  Downloading nodestream-0.8.2-py3-none-any.whl (113 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 113.5/113.5 KB 5.0 MB/s eta 0:00:00
  Downloading nodestream-0.8.1-py3-none-any.whl (113 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 113.1/113.1 KB 4.5 MB/s eta 0:00:00
  Downloading nodestream-0.7.2-py3-none-any.whl (110 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 110.3/110.3 KB 4.9 MB/s eta 0:00:00
  Downloading nodestream-0.7.1-py3-none-any.whl (110 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 110.2/110.2 KB 4.8 MB/s eta 0:00:00
  Downloading nodestream-0.7.0-py3-none-any.whl (110 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 110.2/110.2 KB 5.1 MB/s eta 0:00:00
  Downloading nodestream-0.6.1-py3-none-any.whl (109 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 109.9/109.9 KB 4.7 MB/s eta 0:00:00
  Downloading nodestream-0.6.0-py3-none-any.whl (109 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 109.9/109.9 KB 4.9 MB/s eta 0:00:00
  Downloading nodestream-0.5.0-py3-none-any.whl (106 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 106.0/106.0 KB 4.6 MB/s eta 0:00:00
  Downloading nodestream-0.4.0-py3-none-any.whl (103 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 103.2/103.2 KB 4.8 MB/s eta 0:00:00
  Downloading nodestream-0.3.3-py3-none-any.whl (101 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 101.8/101.8 KB 4.9 MB/s eta 0:00:00
  Downloading nodestream-0.3.2-py3-none-any.whl (101 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 101.8/101.8 KB 5.6 MB/s eta 0:00:00
  Downloading nodestream-0.3.1-py3-none-any.whl (101 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 101.8/101.8 KB 4.4 MB/s eta 0:00:00
  Downloading nodestream-0.3.0-py3-none-any.whl (101 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 101.8/101.8 KB 4.9 MB/s eta 0:00:00
  Downloading nodestream-0.2.0-py3-none-any.whl (98 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 98.5/98.5 KB 5.2 MB/s eta 0:00:00
ERROR: Cannot install nodestream==0.10.0, nodestream==0.10.1, nodestream==0.10.2, nodestream==0.10.3, nodestream==0.10.4, nodestream==0.10.5, nodestream==0.10.6, nodestream==0.10.7, nodestream==0.10.8, nodestream==0.11.0, nodestream==0.11.1, nodestream==0.11.10, nodestream==0.11.11, nodestream==0.11.2, nodestream==0.11.3, nodestream==0.11.4, nodestream==0.11.5, nodestream==0.11.6, nodestream==0.11.7, nodestream==0.11.8, nodestream==0.11.9, nodestream==0.2.0, nodestream==0.3.0, nodestream==0.3.1, nodestream==0.3.2, nodestream==0.3.3, nodestream==0.4.0, nodestream==0.5.0, nodestream==0.6.0, nodestream==0.6.1, nodestream==0.7.0, nodestream==0.7.1, nodestream==0.7.2, nodestream==0.8.1, nodestream==0.8.10, nodestream==0.8.11, nodestream==0.8.12, nodestream==0.8.13, nodestream==0.8.14, nodestream==0.8.15, nodestream==0.8.16, nodestream==0.8.17, nodestream==0.8.18, nodestream==0.8.19, nodestream==0.8.2, nodestream==0.8.20, nodestream==0.8.3, nodestream==0.8.4, nodestream==0.8.5, nodestream==0.8.6, nodestream==0.8.7, nodestream==0.8.8, nodestream==0.8.9, nodestream==0.9.0, nodestream==0.9.1, nodestream==0.9.2, nodestream==0.9.3, nodestream==0.9.4 and nodestream==0.9.5 because these package versions have conflicting dependencies.

The conflict is caused by:
    nodestream 0.11.11 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.11.10 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.11.9 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.11.8 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.11.7 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.11.6 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.11.5 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.11.4 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.11.3 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.11.2 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.11.1 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.11.0 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.10.8 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.10.7 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.10.6 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.10.5 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.10.4 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.10.3 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.10.2 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.10.1 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.10.0 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.9.5 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.9.4 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.9.3 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.9.2 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.9.1 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.9.0 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.8.20 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.8.19 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.8.18 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.8.17 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.8.16 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.8.15 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.8.14 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.8.13 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.8.12 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.8.11 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.8.10 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.8.9 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.8.8 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.8.7 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.8.6 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.8.5 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.8.4 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.8.3 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.8.2 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.8.1 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.7.2 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.7.1 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.7.0 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.6.1 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.6.0 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.5.0 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.4.0 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.3.3 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.3.2 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.3.1 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.3.0 depends on neo4j<6.0.0 and >=5.8.0
    nodestream 0.2.0 depends on neo4j<6.0.0 and >=5.8.0

To fix this you could try to:
1. loosen the range of package versions you've specified
2. remove package versions to allow pip attempt to solve the dependency conflict

ERROR: ResolutionImpossible: for help visit https://pip.pypa.io/en/latest/topics/dependency-resolution/#dealing-with-dependency-conflicts

Let’s force install Neo4j within the requested limits to see if that helps

isaac@isaac-MacBookAir:~$ pip install "neo4j>=5.8.0,<6.0.0"
Defaulting to user installation because normal site-packages is not writeable
Collecting neo4j<6.0.0,>=5.8.0
  Using cached neo4j-5.18.0.tar.gz (198 kB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Installing backend dependencies ... done
  Preparing metadata (pyproject.toml) ... done
  WARNING: Generating metadata for package neo4j produced metadata for project name unknown. Fix your #egg=neo4j fragments.
Discarding https://files.pythonhosted.org/packages/87/17/ccb010bd9ec0039a1578d9ba55830ff4270620fa5fc44a00651144e0136d/neo4j-5.18.0.tar.gz#sha256=4014406ae5b8b485a8ba46c9f00b6f5b4aaf88e7c3a50603445030c2aab701c9 (from https://pypi.org/simple/neo4j/) (requires-python:>=3.7): Requested unknown from https://files.pythonhosted.org/packages/87/17/ccb010bd9ec0039a1578d9ba55830ff4270620fa5fc44a00651144e0136d/neo4j-5.18.0.tar.gz#sha256=4014406ae5b8b485a8ba46c9f00b6f5b4aaf88e7c3a50603445030c2aab701c9 has inconsistent name: filename has 'neo4j', but metadata has 'unknown'
  Using cached neo4j-5.17.0.tar.gz (197 kB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Installing backend dependencies ... done
  Preparing metadata (pyproject.toml) ... done
... snip ....

 https://files.pythonhosted.org/packages/6a/86/8045ef105ecbc1069d36856e0fe52b0f9b7838a55277908034b4bef0f9dc/neo4j-5.8.0.tar.gz#sha256=af5e70801f63eaaff8fa90bfdc943c144fb6857438590782b30d0ed745229b9e has inconsistent name: filename has 'neo4j', but metadata has 'unknown'
ERROR: Could not find a version that satisfies the requirement neo4j<6.0.0,>=5.8.0 (from versions: 1.7.0b1, 1.7.0b2, 1.7.0b3, 1.7.0b4, 1.7.0rc1, 1.7.0rc2, 1.7.0, 1.7.1, 1.7.2, 1.7.3, 1.7.4, 1.7.5, 1.7.6, 4.0.0a1, 4.0.0a2, 4.0.0a3, 4.0.0a4, 4.0.0b1, 4.0.0b2, 4.0.0rc1, 4.0.0, 4.0.1, 4.0.2, 4.0.3, 4.1.0rc1, 4.1.0rc2, 4.1.0, 4.1.1, 4.1.2, 4.1.3, 4.2.0a1, 4.2.0, 4.2.1, 4.3.0a1, 4.3.0b1, 4.3.0rc1, 4.3.0, 4.3.1, 4.3.2, 4.3.3, 4.3.4, 4.3.5, 4.3.6, 4.3.7, 4.3.8, 4.3.9, 4.4.0a1, 4.4.0b1, 4.4.0, 4.4.1, 4.4.2, 4.4.3, 4.4.4, 4.4.5, 4.4.6, 4.4.7, 4.4.8, 4.4.9, 4.4.10, 4.4.11, 5.0.0a1, 5.0.0a2, 5.0.0, 5.0.1, 5.1.0, 5.2.0, 5.2.1, 5.3.0, 5.4.0, 5.5.0, 5.6.0, 5.7.0, 5.8.0, 5.8.1, 5.9.0, 5.10.0, 5.11.0, 5.12.0, 5.13.0, 5.14.0, 5.14.1, 5.15.0, 5.16.0, 5.17.0, 5.18.0)
ERROR: No matching distribution found for neo4j<6.0.0,>=5.8.0en

I did an apt install and the version comes back as 4.1.13

isaac@isaac-MacBookAir:~$ curl -fsSL https://debian.neo4j.com/neotechnology.gpg.key |sudo gpg --dearmor -o /usr/share/keyrings/neo4j.gpg
File '/usr/share/keyrings/neo4j.gpg' exists. Overwrite? (y/N) y
isaac@isaac-MacBookAir:~$ echo "deb [signed-by=/usr/share/keyrings/neo4j.gpg] https://debian.neo4j.com stable 4.1" | sudo tee -a /etc/apt/sources.list.d/neo4j.list
deb [signed-by=/usr/share/keyrings/neo4j.gpg] https://debian.neo4j.com stable 4.1
isaac@isaac-MacBookAir:~$ sudo apt install neo4j
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
E: Unable to locate package neo4j
isaac@isaac-MacBookAir:~$ sudo apt update
Hit:1 http://us.archive.ubuntu.com/ubuntu jammy InRelease
Get:2 http://us.archive.ubuntu.com/ubuntu jammy-updates InRelease [119 kB]
Get:3 https://debian.neo4j.com stable InRelease [44.2 kB]
Hit:4 http://us.archive.ubuntu.com/ubuntu jammy-backports InRelease
Get:5 http://security.ubuntu.com/ubuntu jammy-security InRelease [110 kB]
Get:6 https://debian.neo4j.com stable/4.1 amd64 Packages [4,995 B]
Get:7 http://us.archive.ubuntu.com/ubuntu jammy-updates/main i386 Packages [595 kB]
Get:8 https://debian.neo4j.com stable/4.1 i386 Packages [4,995 B]
Get:9 http://us.archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages [1,505 kB]
Get:10 http://us.archive.ubuntu.com/ubuntu jammy-updates/main Translation-en [289 kB]
Get:11 http://us.archive.ubuntu.com/ubuntu jammy-updates/restricted amd64 Packages [1,628 kB]
Get:12 http://us.archive.ubuntu.com/ubuntu jammy-updates/restricted Translation-en [273 kB]
Fetched 4,573 kB in 2s (3,010 kB/s)
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
8 packages can be upgraded. Run 'apt list --upgradable' to see them.
isaac@isaac-MacBookAir:~$ sudo apt install neo4j
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages were automatically installed and are no longer required:
  app-install-data-partner bsdmainutils g++-9 gcc-10-base gir1.2-clutter-1.0 gir1.2-clutter-gst-3.0 gir1.2-cogl-1.0 gir1.2-coglpango-1.0
  gir1.2-gnomebluetooth-1.0 gir1.2-gtkclutter-1.0 gnome-getting-started-docs gnome-screenshot ippusbxd libamtk-5-0 libamtk-5-common libaom0
  libasn1-8-heimdal libboost-date-time1.71.0 libboost-filesystem1.71.0 libboost-iostreams1.71.0 libboost-locale1.71.0 libboost-thread1.71.0
  libbrlapi0.7 libcamel-1.2-62 libcbor0.6 libcdio18 libcmis-0.5-5v5 libcodec2-0.9 libdns-export1109 libdvdnav4 libdvdread7 libedataserver-1.2-24
  libedataserverui-1.2-2 libextutils-pkgconfig-perl libfftw3-double3 libfprint-2-tod1 libfuse2 libfwupdplugin1 libgdk-pixbuf-xlib-2.0-0
  libgdk-pixbuf2.0-0 libgssapi3-heimdal libgupnp-1.2-0 libhandy-0.0-0 libhcrypto4-heimdal libheimbase1-heimdal libheimntlm0-heimdal libhogweed5
  libhx509-5-heimdal libicu66 libidn11 libigdgmm11 libisl22 libjson-c4 libjuh-java libjurt-java libkrb5-26-heimdal libldap-2.4-2
  liblibreoffice-java libllvm10 libllvm12 libmozjs-68-0 libmpdec2 libmysqlclient21 libneon27-gnutls libnettle7 libntfs-3g883 liborcus-0.15-0
  libperl5.30 libpgm-5.2-0 libphonenumber7 libpoppler97 libprotobuf17 libpython3.8 libpython3.8-minimal libpython3.8-stdlib libqpdf26 libraw19
  libreoffice-style-tango libridl-java libroken18-heimdal libsane libsnmp35 libssl1.1 libstdc++-9-dev libtepl-4-0 libtracker-control-2.0-0
  libtracker-miner-2.0-0 libtracker-sparql-2.0-0 libunoloader-java libvpx6 libwebp6 libwind0-heimdal libwmf0.2-7 libx264-155 libx265-179 libxmlb1
  linux-hwe-5.15-headers-5.15.0-100 ltrace lz4 mysql-common ncal perl-modules-5.30 pkg-config popularity-contest python3-entrypoints
  python3-requests-unixsocket python3-simplejson python3.8 python3.8-minimal syslinux syslinux-common syslinux-legacy ure-java vino
  xul-ext-ubufox
Use 'sudo apt autoremove' to remove them.
The following additional packages will be installed:
  cypher-shell daemon
The following NEW packages will be installed:
  cypher-shell daemon neo4j
0 upgraded, 3 newly installed, 0 to remove and 8 not upgraded.
Need to get 117 MB of archives.
After this operation, 133 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y
Get:1 http://us.archive.ubuntu.com/ubuntu jammy/universe amd64 daemon amd64 0.8-1 [60.9 kB]
Get:2 https://debian.neo4j.com stable/4.1 amd64 cypher-shell all 1:4.1.13 [19.0 MB]
Get:3 https://debian.neo4j.com stable/4.1 amd64 neo4j all 1:4.1.13 [98.3 MB]
Fetched 117 MB in 11s (10.3 MB/s)
Preconfiguring packages ...
Selecting previously unselected package daemon.
(Reading database ... 271412 files and directories currently installed.)
Preparing to unpack .../daemon_0.8-1_amd64.deb ...
Unpacking daemon (0.8-1) ...
Selecting previously unselected package cypher-shell.
Preparing to unpack .../cypher-shell_1%3a4.1.13_all.deb ...
Unpacking cypher-shell (1:4.1.13) ...
Selecting previously unselected package neo4j.
Preparing to unpack .../neo4j_1%3a4.1.13_all.deb ...
Unpacking neo4j (1:4.1.13) ...
Setting up cypher-shell (1:4.1.13) ...
Setting up daemon (0.8-1) ...
Setting up neo4j (1:4.1.13) ...
Processing triggers for man-db (2.10.2-1) ...

isaac@isaac-MacBookAir:~$ neo4j --version
neo4j 4.1.13

If I just use pip install neo4j it will work, albeit an older version

$ pip install neo4j
Defaulting to user installation because normal site-packages is not writeable
Collecting neo4j
  Using cached neo4j-5.18.0.tar.gz (198 kB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Installing backend dependencies ... done
  Preparing metadata (pyproject.toml) ... done
  WARNING: Generating metadata for package neo4j produced metadata for project name unknown. Fix your #egg=neo4j fragments.
Discarding https://files.pythonhosted.org/packages/87/17/ccb010bd9ec0039a1578d9ba55830ff4270620fa5fc44a00651144e0136d/neo4j-5.18.0.tar.gz#sha256=4014406ae5b8b485a8ba46c9f00b6f5b4aaf88e7c3a50603445030c2aab701c9 (from https://pypi.org/simple/neo4j/) (requires-python:>=3.7): Requested unknown from https://files.pythonhosted.org/packages/87/17/ccb010bd9ec0039a1578d9ba55830ff4270620fa5fc44a00651144e0136d/neo4j-5.18.0.tar.gz#sha256=4014406ae5b8b485a8ba46c9f00b6f5b4aaf88e7c3a50603445030c2aab701c9 has inconsistent name: filename has 'neo4j', but metadata has 'unknown'
  Using cached neo4j-5.17.0.tar.gz (197 kB)
  Installing build dependencies ... done

... snip ...

Building wheels for collected packages: neo4j
  Building wheel for neo4j (setup.py) ... done
  Created wheel for neo4j: filename=neo4j-5.2.1-py3-none-any.whl size=249499 sha256=3bf52d3ff5058aadd21685f45c9c01192a65e9ad7c0a981743389f3a2a175024
  Stored in directory: /home/isaac/.cache/pip/wheels/6d/73/20/c1e13e7db37d63447e9d3af3a8d9fb8cf8c605c0462f447809
Successfully built neo4j
Installing collected packages: neo4j
Successfully installed neo4j-5.2.1

I tried

$ python3 -m pip install --pre "neo4j>=5.8.0"


...snip ...
Discarding https://files.pythonhosted.org/packages/e9/b7/faa4628ea379f9e43772ca4448356a35e58ce44306a91117f2892487e187/neo4j-5.9.0.tar.gz#sha256=b0abc0065f616bfd8230a48b1f6c91f9aacd7e2aea76d72d09a745ae169cf4da (from https://pypi.org/simple/neo4j/) (requires-python:>=3.7): Requested unknown from https://files.pythonhosted.org/packages/e9/b7/faa4628ea379f9e43772ca4448356a35e58ce44306a91117f2892487e187/neo4j-5.9.0.tar.gz#sha256=b0abc0065f616bfd8230a48b1f6c91f9aacd7e2aea76d72d09a745ae169cf4da has inconsistent name: filename has 'neo4j', but metadata has 'unknown'
  Using cached neo4j-5.8.1.tar.gz (187 kB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Installing backend dependencies ... done
  Preparing metadata (pyproject.toml) ... done
  WARNING: Generating metadata for package neo4j produced metadata for project name unknown. Fix your #egg=neo4j fragments.
Discarding https://files.pythonhosted.org/packages/97/9f/8f04fe1e04c832d87283ede166290cc29c1c3aa0d274946f88361d42a9d3/neo4j-5.8.1.tar.gz#sha256=79c947f402e9f8624587add7b8af742b38cbcdf364d48021c5bff9220457965b (from https://pypi.org/simple/neo4j/) (requires-python:>=3.7): Requested unknown from https://files.pythonhosted.org/packages/97/9f/8f04fe1e04c832d87283ede166290cc29c1c3aa0d274946f88361d42a9d3/neo4j-5.8.1.tar.gz#sha256=79c947f402e9f8624587add7b8af742b38cbcdf364d48021c5bff9220457965b has inconsistent name: filename has 'neo4j', but metadata has 'unknown'
  Using cached neo4j-5.8.0.tar.gz (187 kB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Installing backend dependencies ... done
  Preparing metadata (pyproject.toml) ... done
  WARNING: Generating metadata for package neo4j produced metadata for project name unknown. Fix your #egg=neo4j fragments.
Discarding https://files.pythonhosted.org/packages/6a/86/8045ef105ecbc1069d36856e0fe52b0f9b7838a55277908034b4bef0f9dc/neo4j-5.8.0.tar.gz#sha256=af5e70801f63eaaff8fa90bfdc943c144fb6857438590782b30d0ed745229b9e (from https://pypi.org/simple/neo4j/) (requires-python:>=3.7): Requested unknown from https://files.pythonhosted.org/packages/6a/86/8045ef105ecbc1069d36856e0fe52b0f9b7838a55277908034b4bef0f9dc/neo4j-5.8.0.tar.gz#sha256=af5e70801f63eaaff8fa90bfdc943c144fb6857438590782b30d0ed745229b9e has inconsistent name: filename has 'neo4j', but metadata has 'unknown'
ERROR: Could not find a version that satisfies the requirement neo4j>=5.8.0 (from versions: 1.7.0b1, 1.7.0b2, 1.7.0b3, 1.7.0b4, 1.7.0rc1, 1.7.0rc2, 1.7.0, 1.7.1, 1.7.2, 1.7.3, 1.7.4, 1.7.5, 1.7.6, 4.0.0a1, 4.0.0a2, 4.0.0a3, 4.0.0a4, 4.0.0b1, 4.0.0b2, 4.0.0rc1, 4.0.0, 4.0.1, 4.0.2, 4.0.3, 4.1.0rc1, 4.1.0rc2, 4.1.0, 4.1.1, 4.1.2, 4.1.3, 4.2.0a1, 4.2.0, 4.2.1, 4.3.0a1, 4.3.0b1, 4.3.0rc1, 4.3.0, 4.3.1, 4.3.2, 4.3.3, 4.3.4, 4.3.5, 4.3.6, 4.3.7, 4.3.8, 4.3.9, 4.4.0a1, 4.4.0b1, 4.4.0, 4.4.1, 4.4.2, 4.4.3, 4.4.4, 4.4.5, 4.4.6, 4.4.7, 4.4.8, 4.4.9, 4.4.10, 4.4.11, 5.0.0a1, 5.0.0a2, 5.0.0, 5.0.1, 5.1.0, 5.2.0, 5.2.1, 5.3.0, 5.4.0, 5.5.0, 5.6.0, 5.7.0, 5.8.0, 5.8.1, 5.9.0, 5.10.0, 5.11.0, 5.12.0, 5.13.0, 5.14.0, 5.14.1, 5.15.0, 5.16.0, 5.17.0, 5.18.0)
ERROR: No matching distribution found for neo4j>=5.8.0

And

isaac@isaac-MacBookAir:~$ pip3 install -v --no-cache-dir --force --pre "neo4j>=5.8.0"
Using pip 22.0.2 from /usr/lib/python3/dist-packages/pip (python 3.10)
Defaulting to user installation because normal site-packages is not writeable
Collecting neo4j>=5.8.0
  Downloading neo4j-5.18.0.tar.gz (198 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 198.0/198.0 KB 2.5 MB/s eta 0:00:00
  Running command pip subprocess to install build dependencies
  Collecting setuptools>=66.1.0
    Using cached setuptools-69.2.0-py3-none-any.whl (821 kB)
  Collecting tomlkit~=0.11.6
    Using cached tomlkit-0.11.8-py3-none-any.whl (35 kB)
  Installing collected packages: tomlkit, setuptools
  Successfully installed setuptools-69.2.0 tomlkit-0.11.8
  Installing build dependencies ... done
  Running command Getting requirements to build wheel
  running egg_info
  creating UNKNOWN.egg-info
  writing manifest file 'UNKNOWN.egg-info/SOURCES.txt'
  warning: no previously-included files matching '*.class' found anywhere in distribution
  warning: no previously-included files matching '*.py[cod]' found anywhere in distribution
  warning: no previously-included files matching '*.so' found anywhere in distribution
  warning: no previously-included files matching '*.dll' found anywhere in distribution
  warning: no previously-included files matching '__pycache__' found anywhere in distribution
  no previously-included directories found matching 'test*'
  writing manifest file 'UNKNOWN.egg-info/SOURCES.txt'
  Getting requirements to build wheel ... done
  Running command pip subprocess to install backend dependencies
  Collecting wheel
    Using cached wheel-0.43.0-py3-none-any.whl (65 kB)
  Installing collected packages: wheel
  Successfully installed wheel-0.43.0
  Installing backend dependencies ... done
  Running command Preparing metadata (pyproject.toml)
  running dist_info
  creating /tmp/pip-modern-metadata-stx4gmh5/UNKNOWN.egg-info
  writing manifest file '/tmp/pip-modern-metadata-stx4gmh5/UNKNOWN.egg-info/SOURCES.txt'
  warning: no previously-included files matching '*.class' found anywhere in distribution
  warning: no previously-included files matching '*.py[cod]' found anywhere in distribution
  warning: no previously-included files matching '*.so' found anywhere in distribution
  warning: no previously-included files matching '*.dll' found anywhere in distribution
  warning: no previously-included files matching '__pycache__' found anywhere in distribution
  no previously-included directories found matching 'test*'
  writing manifest file '/tmp/pip-modern-metadata-stx4gmh5/UNKNOWN.egg-info/SOURCES.txt'
  Preparing metadata (pyproject.toml) ... done
  WARNING: Generating metadata for package neo4j produced metadata for project name unknown. Fix your #egg=neo4j fragments.
Discarding https://files.pythonhosted.org/packages/87/17/ccb010bd9ec0039a1578d9ba55830ff4270620fa5fc44a00651144e0136d/neo4j-5.18.0.tar.gz#sha256=4014406ae5b8b485a8ba46c9f00b6f5b4aaf88e7c3a50603445030c2aab701c9 (from https://pypi.org/simple/neo4j/) (requires-python:>=3.7): Requested unknown from https://files.pythonhosted.org/packages/87/17/ccb010bd9ec0039a1578d9ba55830ff4270620fa5fc44a00651144e0136d/neo4j-5.18.0.tar.gz#sha256=4014406ae5b8b485a8ba46c9f00b6f5b4aaf88e7c3a50603445030c2aab701c9 has inconsistent name: filename has 'neo4j', but metadata has 'unknown'
  Downloading neo4j-5.17.0.tar.gz (197 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 197.8/197.8 KB 40.7 MB/s eta 0:00:00
  Running command pip subprocess to install build dependencies
  Collecting setuptools>=66.1.0
    Using cached setuptools-69.2.0-py3-none-any.whl (821 kB)
  Collecting tomlkit~=0.11.6
    Using cached tomlkit-0.11.8-py3-none-any.whl (35 kB)
  Installing collected packages: tomlkit, setuptools
  Successfully installed setuptools-69.2.0 tomlkit-0.11.8
  Installing build dependencies ... done
  Running command Getting requirements to build wheel
  running egg_info
  creating UNKNOWN.egg-info
  writing manifest file 'UNKNOWN.egg-info/SOURCES.txt'
  warning: no previously-included files matching '*.class' found anywhere in distribution
  warning: no previously-included files matching '*.py[cod]' found anywhere in distribution
  warning: no previously-included files matching '*.so' found anywhere in distribution
  warning: no previously-included files matching '*.dll' found anywhere in distribution
  warning: no previously-included files matching '__pycache__' found anywhere in distribution
  no previously-included directories found matching 'test*'
  writing manifest file 'UNKNOWN.egg-info/SOURCES.txt'
  Getting requirements to build wheel ... done
  Running command pip subprocess to install backend dependencies
  Collecting wheel
    Using cached wheel-0.43.0-py3-none-any.whl (65 kB)
  Installing collected packages: wheel
  Successfully installed wheel-0.43.0
  Installing backend dependencies ... done
  Running command Preparing metadata (pyproject.toml)
  running dist_info
  creating /tmp/pip-modern-metadata-o1wtc3pd/UNKNOWN.egg-info
  writing manifest file '/tmp/pip-modern-metadata-o1wtc3pd/UNKNOWN.egg-info/SOURCES.txt'
  warning: no previously-included files matching '*.class' found anywhere in distribution
  warning: no previously-included files matching '*.py[cod]' found anywhere in distribution
  warning: no previously-included files matching '*.so' found anywhere in distribution
  warning: no previously-included files matching '*.dll' found anywhere in distribution
  warning: no previously-included files matching '__pycache__' found anywhere in distribution
  no previously-included directories found matching 'test*'
  writing manifest file '/tmp/pip-modern-metadata-o1wtc3pd/UNKNOWN.egg-info/SOURCES.txt'
  Preparing metadata (pyproject.toml) ... done
... snip ...

  creating /tmp/pip-modern-metadata-oktzpsjz/UNKNOWN.egg-info
  writing manifest file '/tmp/pip-modern-metadata-oktzpsjz/UNKNOWN.egg-info/SOURCES.txt'
  warning: no previously-included files matching '*.class' found anywhere in distribution
  warning: no previously-included files matching '*.py[cod]' found anywhere in distribution
  warning: no previously-included files matching '*.so' found anywhere in distribution
  warning: no previously-included files matching '*.dll' found anywhere in distribution
  warning: no previously-included files matching '__pycache__' found anywhere in distribution
  no previously-included directories found matching 'test*'
  writing manifest file '/tmp/pip-modern-metadata-oktzpsjz/UNKNOWN.egg-info/SOURCES.txt'
  Preparing metadata (pyproject.toml) ... done
  WARNING: Generating metadata for package neo4j produced metadata for project name unknown. Fix your #egg=neo4j fragments.
Discarding https://files.pythonhosted.org/packages/6a/86/8045ef105ecbc1069d36856e0fe52b0f9b7838a55277908034b4bef0f9dc/neo4j-5.8.0.tar.gz#sha256=af5e70801f63eaaff8fa90bfdc943c144fb6857438590782b30d0ed745229b9e (from https://pypi.org/simple/neo4j/) (requires-python:>=3.7): Requested unknown from https://files.pythonhosted.org/packages/6a/86/8045ef105ecbc1069d36856e0fe52b0f9b7838a55277908034b4bef0f9dc/neo4j-5.8.0.tar.gz#sha256=af5e70801f63eaaff8fa90bfdc943c144fb6857438590782b30d0ed745229b9e has inconsistent name: filename has 'neo4j', but metadata has 'unknown'
ERROR: Could not find a version that satisfies the requirement neo4j>=5.8.0 (from versions: 1.7.0b1, 1.7.0b2, 1.7.0b3, 1.7.0b4, 1.7.0rc1, 1.7.0rc2, 1.7.0, 1.7.1, 1.7.2, 1.7.3, 1.7.4, 1.7.5, 1.7.6, 4.0.0a1, 4.0.0a2, 4.0.0a3, 4.0.0a4, 4.0.0b1, 4.0.0b2, 4.0.0rc1, 4.0.0, 4.0.1, 4.0.2, 4.0.3, 4.1.0rc1, 4.1.0rc2, 4.1.0, 4.1.1, 4.1.2, 4.1.3, 4.2.0a1, 4.2.0, 4.2.1, 4.3.0a1, 4.3.0b1, 4.3.0rc1, 4.3.0, 4.3.1, 4.3.2, 4.3.3, 4.3.4, 4.3.5, 4.3.6, 4.3.7, 4.3.8, 4.3.9, 4.4.0a1, 4.4.0b1, 4.4.0, 4.4.1, 4.4.2, 4.4.3, 4.4.4, 4.4.5, 4.4.6, 4.4.7, 4.4.8, 4.4.9, 4.4.10, 4.4.11, 5.0.0a1, 5.0.0a2, 5.0.0, 5.0.1, 5.1.0, 5.2.0, 5.2.1, 5.3.0, 5.4.0, 5.5.0, 5.6.0, 5.7.0, 5.8.0, 5.8.1, 5.9.0, 5.10.0, 5.11.0, 5.12.0, 5.13.0, 5.14.0, 5.14.1, 5.15.0, 5.16.0, 5.17.0, 5.18.0)
ERROR: No matching distribution found for neo4j>=5.8.0

Let’s try forcing Python to use the old resolver. I think that metadata issue with Neo4j is the underlying problem (“has inconsistent name: filename has ‘neo4j’, but metadata has ‘unknown’”)

isaac@isaac-MacBookAir:~$ python3 -m pip install --upgrade --no-cache-dir --use-deprecated=legacy-resolver "neo4j>=5.8.0,<6.0.0"
Defaulting to user installation because normal site-packages is not writeable
Collecting neo4j<6.0.0,>=5.8.0
  Downloading neo4j-5.18.0.tar.gz (198 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 198.0/198.0 KB 2.3 MB/s eta 0:00:00
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Installing backend dependencies ... done
  Preparing metadata (pyproject.toml) ... done
  WARNING: Generating metadata for package neo4j produced metadata for project name unknown. Fix your #egg=neo4j fragments.
Building wheels for collected packages: unknown, unknown
  Building wheel for unknown (pyproject.toml) ... done
  Created wheel for unknown: filename=UNKNOWN-0.0.0-py3-none-any.whl size=8939 sha256=118832f60e103ee774e53bebadc6f8728558f906273e9feab6faa91f6d662c91
  Stored in directory: /tmp/pip-ephem-wheel-cache-ber5pasm/wheels/e7/e1/a0/dd7c19192f5383ff57d02a6c126cbfe4b7b2ae82f70c6994ce
  Building wheel for unknown (pyproject.toml) ... done
  Created wheel for unknown: filename=UNKNOWN-0.0.0-py3-none-any.whl size=8939 sha256=118832f60e103ee774e53bebadc6f8728558f906273e9feab6faa91f6d662c91
  Stored in directory: /tmp/pip-ephem-wheel-cache-ber5pasm/wheels/53/b8/fe/80bbe7f227406396016bf4ec2552ba521875cd149b66a2bfb1
Successfully built unknown unknown
Installing collected packages: unknown
  Attempting uninstall: unknown
    Found existing installation: UNKNOWN 0.0.0
    Uninstalling UNKNOWN-0.0.0:
      Successfully uninstalled UNKNOWN-0.0.0
Successfully installed unknown-0.0.0
isaac@isaac-MacBookAir:~$

I had hoped to follow the Documentation, but the Docusaurus site seems broken

/content/images/2024/03/raven-08.png

and the Tutorial was missing

/content/images/2024/03/raven-09.png

A few days later…

In talking with the Nodestream team, I found that it needs a newer Python than what is shipped OOTB with Ubuntu.

I updated to Python3.10 (from 3.8)

isaac@isaac-MacBookAir:~$ sudo apt install software-properties-common -y
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
software-properties-common is already the newest version (0.99.22.9).
software-properties-common set to manually installed.
The following packages were automatically installed and are no longer required:
  app-install-data-partner bsdmainutils g++-9 gcc-10-base gir1.2-clutter-1.0 gir1.2-clutter-gst-3.0 gir1.2-cogl-1.0 gir1.2-coglpango-1.0
  gir1.2-gnomebluetooth-1.0 gir1.2-gtkclutter-1.0 gnome-getting-started-docs gnome-screenshot ippusbxd libamtk-5-0 libamtk-5-common libaom0
  libasn1-8-heimdal libboost-date-time1.71.0 libboost-filesystem1.71.0 libboost-iostreams1.71.0 libboost-locale1.71.0 libboost-thread1.71.0
  libbrlapi0.7 libcamel-1.2-62 libcbor0.6 libcdio18 libcmis-0.5-5v5 libcodec2-0.9 libdns-export1109 libdvdnav4 libdvdread7 libedataserver-1.2-24
  libedataserverui-1.2-2 libextutils-pkgconfig-perl libfftw3-double3 libfprint-2-tod1 libfuse2 libfwupdplugin1 libgdk-pixbuf-xlib-2.0-0
  libgdk-pixbuf2.0-0 libgssapi3-heimdal libgupnp-1.2-0 libhandy-0.0-0 libhcrypto4-heimdal libheimbase1-heimdal libheimntlm0-heimdal libhogweed5
  libhx509-5-heimdal libicu66 libidn11 libigdgmm11 libisl22 libjson-c4 libjuh-java libjurt-java libkrb5-26-heimdal libldap-2.4-2
  liblibreoffice-java libllvm10 libllvm12 libmozjs-68-0 libmpdec2 libmysqlclient21 libneon27-gnutls libnettle7 libntfs-3g883 liborcus-0.15-0
  libperl5.30 libpgm-5.2-0 libphonenumber7 libpoppler97 libprotobuf17 libpython3.8 libpython3.8-minimal libpython3.8-stdlib libqpdf26 libraw19
  libreoffice-style-tango libridl-java libroken18-heimdal libsane libsnmp35 libssl1.1 libstdc++-9-dev libtepl-4-0 libtracker-control-2.0-0
  libtracker-miner-2.0-0 libtracker-sparql-2.0-0 libunoloader-java libvpx6 libwebp6 libwind0-heimdal libwmf0.2-7 libx264-155 libx265-179 libxmlb1
  linux-hwe-5.15-headers-5.15.0-100 ltrace lz4 mysql-common ncal perl-modules-5.30 pkg-config popularity-contest python3-entrypoints
  python3-requests-unixsocket python3-simplejson python3.8 python3.8-minimal syslinux syslinux-common syslinux-legacy ure-java vino
  xul-ext-ubufox
Use 'sudo apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 8 not upgraded.
isaac@isaac-MacBookAir:~$ sudo apt install python3.10 python3.10-venv python3.10-dev
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
python3.10 is already the newest version (3.10.12-1~22.04.3).
python3.10 set to manually installed.
python3.10-dev is already the newest version (3.10.12-1~22.04.3).
python3.10-dev set to manually installed.
The following packages were automatically installed and are no longer required:
  app-install-data-partner bsdmainutils g++-9 gcc-10-base gir1.2-clutter-1.0 gir1.2-clutter-gst-3.0 gir1.2-cogl-1.0 gir1.2-coglpango-1.0
  gir1.2-gnomebluetooth-1.0 gir1.2-gtkclutter-1.0 gnome-getting-started-docs gnome-screenshot ippusbxd libamtk-5-0 libamtk-5-common libaom0
  libasn1-8-heimdal libboost-date-time1.71.0 libboost-filesystem1.71.0 libboost-iostreams1.71.0 libboost-locale1.71.0 libboost-thread1.71.0
  libbrlapi0.7 libcamel-1.2-62 libcbor0.6 libcdio18 libcmis-0.5-5v5 libcodec2-0.9 libdns-export1109 libdvdnav4 libdvdread7 libedataserver-1.2-24
  libedataserverui-1.2-2 libextutils-pkgconfig-perl libfftw3-double3 libfprint-2-tod1 libfuse2 libfwupdplugin1 libgdk-pixbuf-xlib-2.0-0
  libgdk-pixbuf2.0-0 libgssapi3-heimdal libgupnp-1.2-0 libhandy-0.0-0 libhcrypto4-heimdal libheimbase1-heimdal libheimntlm0-heimdal libhogweed5
  libhx509-5-heimdal libicu66 libidn11 libigdgmm11 libisl22 libjson-c4 libjuh-java libjurt-java libkrb5-26-heimdal libldap-2.4-2
  liblibreoffice-java libllvm10 libllvm12 libmozjs-68-0 libmpdec2 libmysqlclient21 libneon27-gnutls libnettle7 libntfs-3g883 liborcus-0.15-0
  libperl5.30 libpgm-5.2-0 libphonenumber7 libpoppler97 libprotobuf17 libpython3.8 libpython3.8-minimal libpython3.8-stdlib libqpdf26 libraw19
  libreoffice-style-tango libridl-java libroken18-heimdal libsane libsnmp35 libssl1.1 libstdc++-9-dev libtepl-4-0 libtracker-control-2.0-0
  libtracker-miner-2.0-0 libtracker-sparql-2.0-0 libunoloader-java libvpx6 libwebp6 libwind0-heimdal libwmf0.2-7 libx264-155 libx265-179 libxmlb1
  linux-hwe-5.15-headers-5.15.0-100 ltrace lz4 mysql-common ncal perl-modules-5.30 pkg-config popularity-contest python3-entrypoints
  python3-requests-unixsocket python3-simplejson python3.8 python3.8-minimal syslinux syslinux-common syslinux-legacy ure-java vino
  xul-ext-ubufox
Use 'sudo apt autoremove' to remove them.
The following NEW packages will be installed:
  python3-pip-whl python3-setuptools-whl python3.10-venv
0 upgraded, 3 newly installed, 0 to remove and 8 not upgraded.
Need to get 2,473 kB of archives.
After this operation, 2,884 kB of additional disk space will be used.
Get:1 http://us.archive.ubuntu.com/ubuntu jammy-updates/universe amd64 python3-pip-whl all 22.0.2+dfsg-1ubuntu0.4 [1,680 kB]
Get:2 http://us.archive.ubuntu.com/ubuntu jammy-updates/universe amd64 python3-setuptools-whl all 59.6.0-1.2ubuntu0.22.04.1 [788 kB]
Get:3 http://us.archive.ubuntu.com/ubuntu jammy-updates/universe amd64 python3.10-venv amd64 3.10.12-1~22.04.3 [5,716 B]
Fetched 2,473 kB in 1s (3,258 kB/s)
Selecting previously unselected package python3-pip-whl.
(Reading database ... 271633 files and directories currently installed.)
Preparing to unpack .../python3-pip-whl_22.0.2+dfsg-1ubuntu0.4_all.deb ...
Unpacking python3-pip-whl (22.0.2+dfsg-1ubuntu0.4) ...
Selecting previously unselected package python3-setuptools-whl.
Preparing to unpack .../python3-setuptools-whl_59.6.0-1.2ubuntu0.22.04.1_all.deb ...
Unpacking python3-setuptools-whl (59.6.0-1.2ubuntu0.22.04.1) ...
Selecting previously unselected package python3.10-venv.
Preparing to unpack .../python3.10-venv_3.10.12-1~22.04.3_amd64.deb ...
Unpacking python3.10-venv (3.10.12-1~22.04.3) ...
Setting up python3-setuptools-whl (59.6.0-1.2ubuntu0.22.04.1) ...
Setting up python3-pip-whl (22.0.2+dfsg-1ubuntu0.4) ...
Setting up python3.10-venv (3.10.12-1~22.04.3) ...
isaac@isaac-MacBookAir:~$ ls -la /usr/bin/python3
lrwxrwxrwx 1 root root 10 Aug 18  2022 /usr/bin/python3 -> python3.10
isaac@isaac-MacBookAir:~$ curl -sS https://bootstrap.pypa.io/get-pip.py | python3.10
Defaulting to user installation because normal site-packages is not writeable
Collecting pip
  Downloading pip-24.0-py3-none-any.whl.metadata (3.6 kB)
Downloading pip-24.0-py3-none-any.whl (2.1 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.1/2.1 MB 7.4 MB/s eta 0:00:00
Installing collected packages: pip
  WARNING: The scripts pip, pip3 and pip3.10 are installed in '/home/isaac/.local/bin' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
Successfully installed pip-24.0

Then verified the symlink (I would have reset it if it still pointed to 3.8)

isaac@isaac-MacBookAir:~$ ls -la /usr/bin/python3
lrwxrwxrwx 1 root root 10 Aug 18  2022 /usr/bin/python3 -> python3.10

Updated Pip

isaac@isaac-MacBookAir:~$ curl -sS https://bootstrap.pypa.io/get-pip.py | python3.10
Defaulting to user installation because normal site-packages is not writeable
Collecting pip
  Downloading pip-24.0-py3-none-any.whl.metadata (3.6 kB)
Downloading pip-24.0-py3-none-any.whl (2.1 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.1/2.1 MB 7.4 MB/s eta 0:00:00
Installing collected packages: pip
  WARNING: The scripts pip, pip3 and pip3.10 are installed in '/home/isaac/.local/bin' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
Successfully installed pip-24.0

Then I could install Nodestream

isaac@isaac-MacBookAir:~$ pip install nodestream
Defaulting to user installation because normal site-packages is not writeable
Collecting nodestream
  Downloading nodestream-0.11.11-py3-none-any.whl.metadata (3.6 kB)
Collecting Jinja2<4,>=3 (from nodestream)
  Downloading Jinja2-3.1.3-py3-none-any.whl.metadata (3.3 kB)
Collecting boto3<2.0.0,>=1.26.137 (from nodestream)
  Downloading boto3-1.34.69-py3-none-any.whl.metadata (6.6 kB)
Collecting cleo<3.0.0,>=2.0.1 (from nodestream)
  Downloading cleo-2.1.0-py3-none-any.whl.metadata (12 kB)
Collecting confluent-kafka<3.0.0,>=2.3.0 (from nodestream)
  Downloading confluent_kafka-2.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (2.3 kB)
Collecting cookiecutter<3.0.0,>=2.1.1 (from nodestream)
  Downloading cookiecutter-2.6.0-py3-none-any.whl.metadata (7.3 kB)
Collecting cymple==0.8.1 (from nodestream)
  Downloading cymple-0.8.1-py2.py3-none-any.whl.metadata (7.5 kB)
Collecting httpx<0.25.0,>=0.24.1 (from nodestream)
  Downloading httpx-0.24.1-py3-none-any.whl.metadata (7.4 kB)
Collecting jmespath<2.0.0,>=1.0.1 (from nodestream)
  Downloading jmespath-1.0.1-py3-none-any.whl.metadata (7.6 kB)
Collecting neo4j<6.0.0,>=5.8.0 (from nodestream)
  Downloading neo4j-5.18.0.tar.gz (198 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 198.0/198.0 kB 2.0 MB/s eta 0:00:00
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Installing backend dependencies ... done
  Preparing metadata (pyproject.toml) ... done
Collecting pandas<3,>=2 (from nodestream)
  Downloading pandas-2.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (19 kB)
Collecting psutil<6.0.0,>=5.9.6 (from nodestream)
  Downloading psutil-5.9.8-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (21 kB)
Collecting python-json-logger<3.0.0,>=2.0.4 (from nodestream)
  Downloading python_json_logger-2.0.7-py3-none-any.whl.metadata (6.5 kB)
Collecting pyyaml<7.0,>=6.0 (from nodestream)
  Downloading PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (2.1 kB)
Collecting schema<0.8.0,>=0.7.5 (from nodestream)
  Downloading schema-0.7.5-py2.py3-none-any.whl.metadata (34 kB)
Collecting testcontainers<4.0.0,>=3.7.1 (from testcontainers[neo4j]<4.0.0,>=3.7.1->nodestream)
  Downloading testcontainers-3.7.1-py2.py3-none-any.whl.metadata (7.0 kB)
Collecting uvloop<=0.18.0,>=0.17.0 (from nodestream)
  Downloading uvloop-0.18.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (4.9 kB)
Collecting botocore<1.35.0,>=1.34.69 (from boto3<2.0.0,>=1.26.137->nodestream)
  Downloading botocore-1.34.69-py3-none-any.whl.metadata (5.7 kB)
Collecting s3transfer<0.11.0,>=0.10.0 (from boto3<2.0.0,>=1.26.137->nodestream)
  Downloading s3transfer-0.10.1-py3-none-any.whl.metadata (1.7 kB)
Collecting crashtest<0.5.0,>=0.4.1 (from cleo<3.0.0,>=2.0.1->nodestream)
  Downloading crashtest-0.4.1-py3-none-any.whl.metadata (1.1 kB)
Collecting rapidfuzz<4.0.0,>=3.0.0 (from cleo<3.0.0,>=2.0.1->nodestream)
  Downloading rapidfuzz-3.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (11 kB)
Collecting binaryornot>=0.4.4 (from cookiecutter<3.0.0,>=2.1.1->nodestream)
  Downloading binaryornot-0.4.4-py2.py3-none-any.whl.metadata (6.0 kB)
Requirement already satisfied: click<9.0.0,>=7.0 in /usr/lib/python3/dist-packages (from cookiecutter<3.0.0,>=2.1.1->nodestream) (8.0.3)
Collecting python-slugify>=4.0.0 (from cookiecutter<3.0.0,>=2.1.1->nodestream)
  Downloading python_slugify-8.0.4-py2.py3-none-any.whl.metadata (8.5 kB)
Requirement already satisfied: requests>=2.23.0 in /usr/lib/python3/dist-packages (from cookiecutter<3.0.0,>=2.1.1->nodestream) (2.25.1)
Collecting arrow (from cookiecutter<3.0.0,>=2.1.1->nodestream)
  Downloading arrow-1.3.0-py3-none-any.whl.metadata (7.5 kB)
Collecting rich (from cookiecutter<3.0.0,>=2.1.1->nodestream)
  Downloading rich-13.7.1-py3-none-any.whl.metadata (18 kB)
Requirement already satisfied: certifi in /usr/lib/python3/dist-packages (from httpx<0.25.0,>=0.24.1->nodestream) (2020.6.20)
Collecting httpcore<0.18.0,>=0.15.0 (from httpx<0.25.0,>=0.24.1->nodestream)
  Downloading httpcore-0.17.3-py3-none-any.whl.metadata (18 kB)
Requirement already satisfied: idna in /usr/lib/python3/dist-packages (from httpx<0.25.0,>=0.24.1->nodestream) (3.3)
Collecting sniffio (from httpx<0.25.0,>=0.24.1->nodestream)
  Downloading sniffio-1.3.1-py3-none-any.whl.metadata (3.9 kB)
Requirement already satisfied: MarkupSafe>=2.0 in /usr/lib/python3/dist-packages (from Jinja2<4,>=3->nodestream) (2.0.1)
Requirement already satisfied: pytz in /usr/lib/python3/dist-packages (from neo4j<6.0.0,>=5.8.0->nodestream) (2022.1)
Collecting numpy<2,>=1.22.4 (from pandas<3,>=2->nodestream)
  Downloading numpy-1.26.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (61 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 61.0/61.0 kB 3.8 MB/s eta 0:00:00
Collecting python-dateutil>=2.8.2 (from pandas<3,>=2->nodestream)
  Downloading python_dateutil-2.9.0.post0-py2.py3-none-any.whl.metadata (8.4 kB)
Collecting tzdata>=2022.7 (from pandas<3,>=2->nodestream)
  Downloading tzdata-2024.1-py2.py3-none-any.whl.metadata (1.4 kB)
Collecting contextlib2>=0.5.5 (from schema<0.8.0,>=0.7.5->nodestream)
  Downloading contextlib2-21.6.0-py2.py3-none-any.whl.metadata (4.1 kB)
Collecting docker>=4.0.0 (from testcontainers<4.0.0,>=3.7.1->testcontainers[neo4j]<4.0.0,>=3.7.1->nodestream)
  Downloading docker-7.0.0-py3-none-any.whl.metadata (3.5 kB)
Collecting wrapt (from testcontainers<4.0.0,>=3.7.1->testcontainers[neo4j]<4.0.0,>=3.7.1->nodestream)
  Downloading wrapt-1.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (6.6 kB)
Collecting deprecation (from testcontainers<4.0.0,>=3.7.1->testcontainers[neo4j]<4.0.0,>=3.7.1->nodestream)
  Downloading deprecation-2.1.0-py2.py3-none-any.whl.metadata (4.6 kB)
Requirement already satisfied: chardet>=3.0.2 in /usr/lib/python3/dist-packages (from binaryornot>=0.4.4->cookiecutter<3.0.0,>=2.1.1->nodestream) (4.0.0)
Requirement already satisfied: urllib3!=2.2.0,<3,>=1.25.4 in /usr/lib/python3/dist-packages (from botocore<1.35.0,>=1.34.69->boto3<2.0.0,>=1.26.137->nodestream) (1.26.5)
Collecting packaging>=14.0 (from docker>=4.0.0->testcontainers<4.0.0,>=3.7.1->testcontainers[neo4j]<4.0.0,>=3.7.1->nodestream)
  Downloading packaging-24.0-py3-none-any.whl.metadata (3.2 kB)
Collecting requests>=2.23.0 (from cookiecutter<3.0.0,>=2.1.1->nodestream)
  Downloading requests-2.31.0-py3-none-any.whl.metadata (4.6 kB)
Collecting h11<0.15,>=0.13 (from httpcore<0.18.0,>=0.15.0->httpx<0.25.0,>=0.24.1->nodestream)
  Downloading h11-0.14.0-py3-none-any.whl.metadata (8.2 kB)
Collecting anyio<5.0,>=3.0 (from httpcore<0.18.0,>=0.15.0->httpx<0.25.0,>=0.24.1->nodestream)
  Downloading anyio-4.3.0-py3-none-any.whl.metadata (4.6 kB)
Requirement already satisfied: six>=1.5 in /usr/lib/python3/dist-packages (from python-dateutil>=2.8.2->pandas<3,>=2->nodestream) (1.16.0)
Collecting text-unidecode>=1.3 (from python-slugify>=4.0.0->cookiecutter<3.0.0,>=2.1.1->nodestream)
  Downloading text_unidecode-1.3-py2.py3-none-any.whl.metadata (2.4 kB)
Collecting charset-normalizer<4,>=2 (from requests>=2.23.0->cookiecutter<3.0.0,>=2.1.1->nodestream)
  Downloading charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (33 kB)
Collecting types-python-dateutil>=2.8.10 (from arrow->cookiecutter<3.0.0,>=2.1.1->nodestream)
  Downloading types_python_dateutil-2.9.0.20240316-py3-none-any.whl.metadata (1.8 kB)
Collecting markdown-it-py>=2.2.0 (from rich->cookiecutter<3.0.0,>=2.1.1->nodestream)
  Downloading markdown_it_py-3.0.0-py3-none-any.whl.metadata (6.9 kB)
Collecting pygments<3.0.0,>=2.13.0 (from rich->cookiecutter<3.0.0,>=2.1.1->nodestream)
  Downloading pygments-2.17.2-py3-none-any.whl.metadata (2.6 kB)
Collecting exceptiongroup>=1.0.2 (from anyio<5.0,>=3.0->httpcore<0.18.0,>=0.15.0->httpx<0.25.0,>=0.24.1->nodestream)
  Downloading exceptiongroup-1.2.0-py3-none-any.whl.metadata (6.6 kB)
Collecting typing-extensions>=4.1 (from anyio<5.0,>=3.0->httpcore<0.18.0,>=0.15.0->httpx<0.25.0,>=0.24.1->nodestream)
  Downloading typing_extensions-4.10.0-py3-none-any.whl.metadata (3.0 kB)
Collecting mdurl~=0.1 (from markdown-it-py>=2.2.0->rich->cookiecutter<3.0.0,>=2.1.1->nodestream)
  Downloading mdurl-0.1.2-py3-none-any.whl.metadata (1.6 kB)
Downloading nodestream-0.11.11-py3-none-any.whl (123 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 123.4/123.4 kB 5.1 MB/s eta 0:00:00
Downloading cymple-0.8.1-py2.py3-none-any.whl (11 kB)
Downloading boto3-1.34.69-py3-none-any.whl (139 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 139.3/139.3 kB 5.3 MB/s eta 0:00:00
Downloading cleo-2.1.0-py3-none-any.whl (78 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 78.7/78.7 kB 3.5 MB/s eta 0:00:00
Downloading confluent_kafka-2.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.0 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.0/4.0 MB 7.9 MB/s eta 0:00:00
Downloading cookiecutter-2.6.0-py3-none-any.whl (39 kB)
Downloading httpx-0.24.1-py3-none-any.whl (75 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 75.4/75.4 kB 3.7 MB/s eta 0:00:00
Downloading Jinja2-3.1.3-py3-none-any.whl (133 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 133.2/133.2 kB 6.1 MB/s eta 0:00:00
Downloading jmespath-1.0.1-py3-none-any.whl (20 kB)
Downloading pandas-2.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (13.0 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 13.0/13.0 MB 10.9 MB/s eta 0:00:00
Downloading psutil-5.9.8-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (288 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 288.2/288.2 kB 7.7 MB/s eta 0:00:00
Downloading python_json_logger-2.0.7-py3-none-any.whl (8.1 kB)
Downloading PyYAML-6.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (705 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 705.5/705.5 kB 9.2 MB/s eta 0:00:00
Downloading schema-0.7.5-py2.py3-none-any.whl (17 kB)
Downloading testcontainers-3.7.1-py2.py3-none-any.whl (45 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 45.3/45.3 kB 2.1 MB/s eta 0:00:00
Downloading uvloop-0.18.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.2 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.2/4.2 MB 10.6 MB/s eta 0:00:00
Downloading binaryornot-0.4.4-py2.py3-none-any.whl (9.0 kB)
Downloading botocore-1.34.69-py3-none-any.whl (12.0 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 12.0/12.0 MB 10.5 MB/s eta 0:00:00
Downloading contextlib2-21.6.0-py2.py3-none-any.whl (13 kB)
Downloading crashtest-0.4.1-py3-none-any.whl (7.6 kB)
Downloading docker-7.0.0-py3-none-any.whl (147 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 147.6/147.6 kB 6.6 MB/s eta 0:00:00
Downloading httpcore-0.17.3-py3-none-any.whl (74 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 74.5/74.5 kB 3.4 MB/s eta 0:00:00
Downloading sniffio-1.3.1-py3-none-any.whl (10 kB)
Downloading numpy-1.26.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (18.2 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 18.2/18.2 MB 9.4 MB/s eta 0:00:00
Downloading python_dateutil-2.9.0.post0-py2.py3-none-any.whl (229 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 229.9/229.9 kB 7.7 MB/s eta 0:00:00
Downloading python_slugify-8.0.4-py2.py3-none-any.whl (10 kB)
Downloading rapidfuzz-3.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.4 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.4/3.4 MB 10.2 MB/s eta 0:00:00
Downloading requests-2.31.0-py3-none-any.whl (62 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 62.6/62.6 kB 3.0 MB/s eta 0:00:00
Downloading s3transfer-0.10.1-py3-none-any.whl (82 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 82.2/82.2 kB 4.0 MB/s eta 0:00:00
Downloading tzdata-2024.1-py2.py3-none-any.whl (345 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 345.4/345.4 kB 9.4 MB/s eta 0:00:00
Downloading arrow-1.3.0-py3-none-any.whl (66 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 66.4/66.4 kB 3.0 MB/s eta 0:00:00
Downloading deprecation-2.1.0-py2.py3-none-any.whl (11 kB)
Downloading rich-13.7.1-py3-none-any.whl (240 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 240.7/240.7 kB 8.8 MB/s eta 0:00:00
Downloading wrapt-1.16.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (80 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 80.3/80.3 kB 3.6 MB/s eta 0:00:00
Downloading anyio-4.3.0-py3-none-any.whl (85 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 85.6/85.6 kB 3.8 MB/s eta 0:00:00
Downloading charset_normalizer-3.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (142 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 142.1/142.1 kB 6.2 MB/s eta 0:00:00
Downloading h11-0.14.0-py3-none-any.whl (58 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 58.3/58.3 kB 2.5 MB/s eta 0:00:00
Downloading markdown_it_py-3.0.0-py3-none-any.whl (87 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 87.5/87.5 kB 3.9 MB/s eta 0:00:00
Downloading packaging-24.0-py3-none-any.whl (53 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 53.5/53.5 kB 2.3 MB/s eta 0:00:00
Downloading pygments-2.17.2-py3-none-any.whl (1.2 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.2/1.2 MB 10.4 MB/s eta 0:00:00
Downloading text_unidecode-1.3-py2.py3-none-any.whl (78 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 78.2/78.2 kB 3.8 MB/s eta 0:00:00
Downloading types_python_dateutil-2.9.0.20240316-py3-none-any.whl (9.7 kB)
Downloading exceptiongroup-1.2.0-py3-none-any.whl (16 kB)
Downloading mdurl-0.1.2-py3-none-any.whl (10.0 kB)
Downloading typing_extensions-4.10.0-py3-none-any.whl (33 kB)
Building wheels for collected packages: neo4j
  Building wheel for neo4j (pyproject.toml) ... done
  Created wheel for neo4j: filename=neo4j-5.18.0-py3-none-any.whl size=273863 sha256=6d419247a3ef506511182d1a3cb36061a72e09d8d21acb01fa72708e3f5d7003
  Stored in directory: /home/isaac/.cache/pip/wheels/e7/e1/a0/dd7c19192f5383ff57d02a6c126cbfe4b7b2ae82f70c6994ce
Successfully built neo4j
Installing collected packages: text-unidecode, confluent-kafka, wrapt, uvloop, tzdata, typing-extensions, types-python-dateutil, sniffio, rapidfuzz, pyyaml, python-slugify, python-json-logger, python-dateutil, pygments, psutil, packaging, numpy, neo4j, mdurl, jmespath, Jinja2, h11, exceptiongroup, cymple, crashtest, contextlib2, charset-normalizer, binaryornot, schema, requests, pandas, markdown-it-py, deprecation, cleo, botocore, arrow, anyio, s3transfer, rich, httpcore, docker, testcontainers, httpx, cookiecutter, boto3, nodestream
  WARNING: The script slugify is installed in '/home/isaac/.local/bin' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
  WARNING: The script pygmentize is installed in '/home/isaac/.local/bin' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
  WARNING: The script f2py is installed in '/home/isaac/.local/bin' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
  Attempting uninstall: neo4j
    Found existing installation: neo4j 5.2.1
    Uninstalling neo4j-5.2.1:
      Successfully uninstalled neo4j-5.2.1
  WARNING: The script normalizer is installed in '/home/isaac/.local/bin' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
  WARNING: The script markdown-it is installed in '/home/isaac/.local/bin' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
  WARNING: The script httpx is installed in '/home/isaac/.local/bin' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
  WARNING: The script cookiecutter is installed in '/home/isaac/.local/bin' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
  WARNING: The script nodestream is installed in '/home/isaac/.local/bin' which is not on PATH.
  Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
Successfully installed Jinja2-3.1.3 anyio-4.3.0 arrow-1.3.0 binaryornot-0.4.4 boto3-1.34.69 botocore-1.34.69 charset-normalizer-3.3.2 cleo-2.1.0 confluent-kafka-2.3.0 contextlib2-21.6.0 cookiecutter-2.6.0 crashtest-0.4.1 cymple-0.8.1 deprecation-2.1.0 docker-7.0.0 exceptiongroup-1.2.0 h11-0.14.0 httpcore-0.17.3 httpx-0.24.1 jmespath-1.0.1 markdown-it-py-3.0.0 mdurl-0.1.2 neo4j-5.18.0 nodestream-0.11.11 numpy-1.26.4 packaging-24.0 pandas-2.2.1 psutil-5.9.8 pygments-2.17.2 python-dateutil-2.9.0.post0 python-json-logger-2.0.7 python-slugify-8.0.4 pyyaml-6.0.1 rapidfuzz-3.7.0 requests-2.31.0 rich-13.7.1 s3transfer-0.10.1 schema-0.7.5 sniffio-1.3.1 testcontainers-3.7.1 text-unidecode-1.3 types-python-dateutil-2.9.0.20240316 typing-extensions-4.10.0 tzdata-2024.1 uvloop-0.18.0 wrapt-1.16.0

And see that it works

isaac@isaac-MacBookAir:~$ .local/bin/nodestream  --help

Description:
  Lists commands.

Usage:
  list [options] [--] [<namespace>]

Arguments:
  namespace             The namespace name

Options:
  -h, --help            Display help for the given command. When no command is given display help for the list command.
  -q, --quiet           Do not output any message.
  -V, --version         Display this application version.
      --ansi            Force ANSI output.
      --no-ansi         Disable ANSI output.
  -n, --no-interaction  Do not ask any interactive question.
  -v|vv|vvv, --verbose  Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug.

Help:
  The list command lists all commands:

    nodestream list

  You can also display the commands for a specific namespace:

    nodestream list test

Our next step will be to look at the playground project for inspiration

Namely, we would need to:

  1. create a new Nodestream project with a Neo4j to be our destination
  2. set the ‘db-one’ to match our Raven-populated Neo4j
  3. create a globs JSON that defines the structure and a pipeline that can ETL into the new Neo4j

The Nodestream.yaml would be something akin to

scopes:
  test:
    pipelines:
      - raven.yaml

targets:
  db-one:
    database: neo4j
    database_name: neo4j
    username: neo4j
    password: 123456789
    uri: bolt://192.168.1.100:7687
  db-two:
    database: neo4j
    database_name: neo4j
    username: neo4j
    password: neo4j123
    uri: bolt://localhost:7688

Summary

I showed running Raven with Docker. We attempted to use Kubernetes, but my local ingress setup blocked it from connecting. We looked at some usage by loading in some Github repos and seeing the flagged results with the Raven CLI. We then used the Neo4j browser (on :7474) to explore the collected data directly.

I started a pivot to using Nodestream to ETL our data. I plan to circle back on this later, but suffice to say, we can use Nodestream to take the graph DB data and transform it in new and unique ways. The limitation here is more human than anything - I couldn’t really imagine what I wanted to transform it into that would be at all interesting at this time. But I’ll circle back on this later.

Docker Github Raven OpenSource

Have something to add? Feedback? You can use the feedback form

Isaac Johnson

Isaac Johnson

Cloud Solutions Architect

Isaac is a CSA and DevOps engineer who focuses on cloud migrations and devops processes. He also is a dad to three wonderful daughters (hence the references to Princess King sprinkled throughout the blog).

Theme built by C.S. Rhymes