kivy / python-for-android

Turn your Python application into an Android APK
https://python-for-android.readthedocs.io
MIT License
8.38k stars 1.86k forks source link

Why the --no-deps in build.py? #2529

Open pdallair opened 2 years ago

pdallair commented 2 years ago

Checklist

Versions

Description

App works on my Ubuntu VM but not on my Android device. 3rd party python package (telenium in this case), encounters an error on import in main.py. Package is added to requirements list in buildozer.spec. In fact, judging from the build output it is being addressed by buildozer to some degree. Judging from the python stacktrace however, the 3rd party package isn't able to import one of its own dependencies (werkzeug in this case). This dependency is listed in the install_requireslist argument in the 3rd party package's setup.py. Therefore, shouldn't this dependency also automatically be installed by buildozer during the build process? Am I doing anything wrong here?

After talking to someone on the Kivy support Google group, I was nudged to conclude that I needed to abide by the workaround of listing all the requirements of telenium and so on (recursively)... I did it and it works BUT why do I have to go through all this trouble? So, I looked a little deeper and I found this line. Why is the --no-deps argument being used here? I manually removed this argument from my local python-for-android installation (under the .buildozer directory) and it seems to solve my problem without having to do this recursive and semi-manual gathering of indirect app requirements.

I am not very experienced in desktop or mobile application/package building, so please pardon my ignorance. Is there a concrete reason why this argument is being used? Would removing it break any use cases or other parts of this package? Judging from some of the amount of answers I found which proposed the tedious "solution" (the listing countless requirements) to me, I'm pretty confident that there would be less user frustration if the --no-deps argument given to pip can be removed safely.

Basically, I'm suggesting that it should be a python-for-android design requirement to make the --requirements argument usage, practically, 1:1 with normal pip install usage. If there are indirect dependencies properly specified in our direct one's (like telenium in this case) setup.py, I don't think a python-for-android user should have to specify them again. Many python packages don't have a requirements.txt and so python-for-android shouldn't depend on it.

Pardon me if I sound arrogant. This is a small problem with a functional workaround, as I've mentioned. However, as The Pragmatic Programmer book says early on "Don't live with broken windows" and I think this use case fits the metaphor.

main.py

import platform

import kivy
import telenium

from kivy.app import App
from kivy.uix.anchorlayout import AnchorLayout
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.label import Label

class MyApp(App):
    def build(self):
        root_layout = AnchorLayout(anchor_x="center", anchor_y="center")
        widget_layout = BoxLayout(orientation="vertical", size_hint=(None, None))
        widget_layout.add_widget(Label(text='My App'))
        widget_layout.add_widget(Label(text=f'Python {platform.python_version()}'))
        widget_layout.add_widget(Label(text=f'Kivy {kivy.__version__}'))
        root_layout.add_widget(widget_layout)
        return root_layout

if __name__ == "__main__":
    telenium.install()
    MyApp().run()

buildozer.spec

Command:

$ buildozer android clean debug deploy
$ ~/.buildozer/android/platform/android-sdk/platform-tools/adb logcat -c
$ buildozer android run logcat | grep python

Spec file:

[app]

# (str) Title of your application
title = My App

# (str) Package name
package.name = myapp

# (str) Package domain (needed for android/ios packaging)
package.domain = org.pdallair

# (str) Source code where the main.py live
source.dir = .

# (list) Source files to include (let empty to include all the files)
source.include_exts = py,png,jpg,kv,atlas

# (list) List of inclusions using pattern matching
#source.include_patterns = assets/*,images/*.png

# (list) Source files to exclude (let empty to not exclude anything)
#source.exclude_exts = spec

# (list) List of directory to exclude (let empty to not exclude anything)
#source.exclude_dirs = tests, bin

# (list) List of exclusions using pattern matching
#source.exclude_patterns = license,images/*/*.jpg

# (str) Application versioning (method 1)
version = 0.1.0

# (str) Application versioning (method 2)
# version.regex = __version__ = ['"](.*)['"]
# version.filename = %(source.dir)s/main.py

# (list) Application requirements
# comma separated e.g. requirements = sqlite3,kivy
requirements = python3,kivy,telenium

# (str) Custom source folders for requirements
# Sets custom source for any requirements with recipes
# requirements.source.kivy = ../../kivy

# (list) Garden requirements
#garden_requirements =

# (str) Presplash of the application
#presplash.filename = %(source.dir)s/data/presplash.png

# (str) Icon of the application
#icon.filename = %(source.dir)s/data/icon.png

# (str) Supported orientation (one of landscape, sensorLandscape, portrait or all)
orientation = portrait

# (list) List of service to declare
#services = NAME:ENTRYPOINT_TO_PY,NAME2:ENTRYPOINT2_TO_PY

#
# OSX Specific
#

#
# author = © Copyright Info

# change the major version of python used by the app
#osx.python_version = 3

# Kivy version to use
#osx.kivy_version = 2.0.0

#
# Android specific
#

# (bool) Indicate if the application should be fullscreen or not
fullscreen = 0

# (string) Presplash background color (for new android toolchain)
# Supported formats are: #RRGGBB #AARRGGBB or one of the following names:
# red, blue, green, black, white, gray, cyan, magenta, yellow, lightgray,
# darkgray, grey, lightgrey, darkgrey, aqua, fuchsia, lime, maroon, navy,
# olive, purple, silver, teal.
#android.presplash_color = #FFFFFF

# (list) Permissions
#android.permissions = INTERNET

# (int) Target Android API, should be as high as possible.
#android.api = 27

# (int) Minimum API your APK will support.
#android.minapi = 21

# (int) Android SDK version to use
#android.sdk = 20

# (str) Android NDK version to use
#android.ndk = 19b

# (int) Android NDK API to use. This is the minimum API your app will support, it should usually match android.minapi.
#android.ndk_api = 21

# (bool) Use --private data storage (True) or --dir public storage (False)
#android.private_storage = True

# (str) Android NDK directory (if empty, it will be automatically downloaded.)
#android.ndk_path =

# (str) Android SDK directory (if empty, it will be automatically downloaded.)
#android.sdk_path =

# (str) ANT directory (if empty, it will be automatically downloaded.)
#android.ant_path =

# (bool) If True, then skip trying to update the Android sdk
# This can be useful to avoid excess Internet downloads or save time
# when an update is due and you just want to test/build your package
# android.skip_update = False

# (bool) If True, then automatically accept SDK license
# agreements. This is intended for automation only. If set to False,
# the default, you will be shown the license when first running
# buildozer.
# android.accept_sdk_license = False

# (str) Android entry point, default is ok for Kivy-based app
#android.entrypoint = org.renpy.android.PythonActivity

# (str) Android app theme, default is ok for Kivy-based app
# android.apptheme = "@android:style/Theme.NoTitleBar"

# (list) Pattern to whitelist for the whole project
#android.whitelist =

# (str) Path to a custom whitelist file
#android.whitelist_src =

# (str) Path to a custom blacklist file
#android.blacklist_src =

# (list) List of Java .jar files to add to the libs so that pyjnius can access
# their classes. Don't add jars that you do not need, since extra jars can slow
# down the build process. Allows wildcards matching, for example:
# OUYA-ODK/libs/*.jar
#android.add_jars = foo.jar,bar.jar,path/to/more/*.jar

# (list) List of Java files to add to the android project (can be java or a
# directory containing the files)
#android.add_src =

# (list) Android AAR archives to add (currently works only with sdl2_gradle
# bootstrap)
#android.add_aars =

# (list) Gradle dependencies to add (currently works only with sdl2_gradle
# bootstrap)
#android.gradle_dependencies =

# (list) add java compile options
# this can for example be necessary when importing certain java libraries using the 'android.gradle_dependencies' option
# see https://developer.android.com/studio/write/java8-support for further information
# android.add_compile_options = "sourceCompatibility = 1.8", "targetCompatibility = 1.8"

# (list) Gradle repositories to add {can be necessary for some android.gradle_dependencies}
# please enclose in double quotes 
# e.g. android.gradle_repositories = "maven { url 'https://kotlin.bintray.com/ktor' }"
#android.add_gradle_repositories =

# (list) packaging options to add 
# see https://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.PackagingOptions.html
# can be necessary to solve conflicts in gradle_dependencies
# please enclose in double quotes 
# e.g. android.add_packaging_options = "exclude 'META-INF/common.kotlin_module'", "exclude 'META-INF/*.kotlin_module'"
#android.add_gradle_repositories =

# (list) Java classes to add as activities to the manifest.
#android.add_activities = com.example.ExampleActivity

# (str) OUYA Console category. Should be one of GAME or APP
# If you leave this blank, OUYA support will not be enabled
#android.ouya.category = GAME

# (str) Filename of OUYA Console icon. It must be a 732x412 png image.
#android.ouya.icon.filename = %(source.dir)s/data/ouya_icon.png

# (str) XML file to include as an intent filters in <activity> tag
#android.manifest.intent_filters =

# (str) launchMode to set for the main activity
#android.manifest.launch_mode = standard

# (list) Android additional libraries to copy into libs/armeabi
#android.add_libs_armeabi = libs/android/*.so
#android.add_libs_armeabi_v7a = libs/android-v7/*.so
#android.add_libs_arm64_v8a = libs/android-v8/*.so
#android.add_libs_x86 = libs/android-x86/*.so
#android.add_libs_mips = libs/android-mips/*.so

# (bool) Indicate whether the screen should stay on
# Don't forget to add the WAKE_LOCK permission if you set this to True
#android.wakelock = False

# (list) Android application meta-data to set (key=value format)
#android.meta_data =

# (list) Android library project to add (will be added in the
# project.properties automatically.)
#android.library_references =

# (list) Android shared libraries which will be added to AndroidManifest.xml using <uses-library> tag
#android.uses_library =

# (str) Android logcat filters to use
#android.logcat_filters = *:S python:D

# (bool) Copy library instead of making a libpymodules.so
#android.copy_libs = 1

# (str) The Android arch to build for, choices: armeabi-v7a, arm64-v8a, x86, x86_64
android.arch = armeabi-v7a

# (int) overrides automatic versionCode computation (used in build.gradle)
# this is not the same as app version and should only be edited if you know what you're doing
# android.numeric_version = 1

#
# Python for android (p4a) specific
#

# (str) python-for-android fork to use, defaults to upstream (kivy)
#p4a.fork = kivy

# (str) python-for-android branch to use, defaults to master
#p4a.branch = master

# (str) python-for-android git clone directory (if empty, it will be automatically cloned from github)
#p4a.source_dir =

# (str) The directory in which python-for-android should look for your own build recipes (if any)
#p4a.local_recipes =

# (str) Filename to the hook for p4a
#p4a.hook =

# (str) Bootstrap to use for android builds
# p4a.bootstrap = sdl2

# (int) port number to specify an explicit --port= p4a argument (eg for bootstrap flask)
#p4a.port =

#
# iOS specific
#

# (str) Path to a custom kivy-ios folder
#ios.kivy_ios_dir = ../kivy-ios
# Alternately, specify the URL and branch of a git checkout:
#ios.kivy_ios_url = https://github.com/kivy/kivy-ios
#ios.kivy_ios_branch = master

# Another platform dependency: ios-deploy
# Uncomment to use a custom checkout
#ios.ios_deploy_dir = ../ios_deploy
# Or specify URL and branch
#ios.ios_deploy_url = https://github.com/phonegap/ios-deploy
#ios.ios_deploy_branch = 1.7.0

# (str) Name of the certificate to use for signing the debug version
# Get a list of available identities: buildozer ios list_identities
#ios.codesign.debug = "iPhone Developer: <lastname> <firstname> (<hexstring>)"

# (str) Name of the certificate to use for signing the release version
#ios.codesign.release = %(ios.codesign.debug)s

[buildozer]

# (int) Log level (0 = error only, 1 = info, 2 = debug (with command output))
log_level = 2

# (int) Display warning if buildozer is run as root (0 = False, 1 = True)
warn_on_root = 1

# (str) Path to build artifact storage, absolute or relative to spec file
# build_dir = ./.buildozer

# (str) Path to build output (i.e. .apk, .ipa) storage
# bin_dir = ./bin

#    -----------------------------------------------------------------------------
#    List as sections
#
#    You can define all the "list" as [section:key].
#    Each line will be considered as a option to the list.
#    Let's take [app] / source.exclude_patterns.
#    Instead of doing:
#
#[app]
#source.exclude_patterns = license,data/audio/*.wav,data/images/original/*
#
#    This can be translated into:
#
#[app:source.exclude_patterns]
#license
#data/audio/*.wav
#data/images/original/*
#

#    -----------------------------------------------------------------------------
#    Profiles
#
#    You can extend section / key with a profile
#    For example, you want to deploy a demo version of your application without
#    HD content. You could first change the title to add "(demo)" in the name
#    and extend the excluded directories to remove the HD content.
#
#[app@demo]
#title = My Application (demo)
#
#[app:source.exclude_patterns@demo]
#images/hd/*
#
#    Then, invoke the command line with the "demo" profile:
#
#buildozer --profile demo android debug

Logs

Clean, Build and Deploy

https://drive.google.com/file/d/1o4lmjPBsVChc0LNxhS006GZ7aJxEgtfo/view?usp=sharing

Run

https://drive.google.com/file/d/1Kn4xAbKFld1vbE3yL54wT4l_Z29mRp5_/view?usp=sharing

RobertFlatt commented 2 years ago

I think most would agree with you that the process is not push button. Improvement would be excellent.

PRs welcome.

Conceptually simple, the devil is in the details. As shown by this https://github.com/Android-for-Python/Android-for-Python-Users#requirements which is a list of examples and not a set of rules. That list is definitely not exhaustive. Recipes create some special cases, and false positives result in apk bloat. In addition abstraction requires that any fails are reported meaningfully.

So a PR that addresses these would be, I think, great.

inclement commented 2 years ago

Is there a concrete reason why this argument is being used? Would removing it break any use cases or other parts of this package?

The historical reason for this is that pip used to pull in dependencies without being aware of what would actually build correctly for android, and python-for-android wasn't always able to catch and prevent those builds leading to apks being broken with difficult-to-understand architecture-related errors. This was quite common as it affected a few common packages that were often pulled in as dependencies (I think especially e.g. numpy), and --no-deps improved things as it forced dependency builds to use their recipes as expected.

This was always a workaround rather than an ideal architecture though, it isn't fundamentally necessary and it was always expected that python-for-android could be improved to handle this all better and automatically resolve dependencies. Indeed, maybe it already does a better job, this hasn't really been revisited for years.

pdallair commented 2 years ago

In other words, what you are saying @inclement, it's that some of the indirect dependencies pulled in might require a recipe. Correct?

I am glad to see you folks are open to my suggestion. I will voluntarily investigate to see if there's a way to automate the use of recipes with these indirect dependencies when possible. It would be an honor for me to find a solution and create a PR that could lead to my first ever contribution to an open-source project.

Let me know if you have any suggestions or practical advice along the way.

misl6 commented 2 years ago

The --no-deps flag was introduced here: https://github.com/kivy/python-for-android/pull/557 and the aim was to avoid the substitution of an already built (via recipe) package.

Considering that an eventual dependency of a pip installed package that is not plain Python will just fail to build, is definitely a good idea to get rid of the --no-deps flag.

I have seen a lot of new users on support channels complaining about it. The most extensive example are users with requests into their requirements that have a lot of plain Python dependencies that are not automatically resolved.

Something similar happened, and has been fixed here:

https://github.com/kivy/kivy-ios/pull/521

inclement commented 2 years ago

Considering that an eventual dependency of a pip installed package that is not plain Python will just fail to build, is definitely a good idea to get rid of the --no-deps flag.

The problem at the time was that it would fail to build in a way that p4a didn't notice/detect, then the apk would crash with an obscure (for a python user) error. This was also a common problem that people complained about a lot. I don't know what's the best option, and things may have improved, but it did make sense at the time imo.

The requests issue was originally further worked around by having a recipe for it, but of course that wasn't a good resolution of the real issue.

pdallair commented 2 years ago

Update

Alright, so... I've managed to create a "testapp" that would require numpy (a dependency that needs to be installed using the recipe) indirectly through the astropy. As predicted, after removing the --no-deps argument usage in build.py, some recipes are skipped and weird error messages show up when trying to run the app on my android device. In this case the error message is as follows:

12-09 21:12:20.631   545 25974 I python  :  Traceback (most recent call last):
12-09 21:12:20.631   545 25974 I python  :    File "/home/pdallair/dev/PycharmProjects/TestApp/.buildozer/android/app/main.py", line 10, in <module>
12-09 21:12:20.631   545 25974 I python  :    File "/home/pdallair/dev/PycharmProjects/TestApp/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/p4anodepstest/astropy/__init__.py", line 42, in <module>
12-09 21:12:20.631   545 25974 I python  :    File "/home/pdallair/dev/PycharmProjects/TestApp/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/p4anodepstest/astropy/config/__init__.py", line 10, in <module>
12-09 21:12:20.632   545 25974 I python  :    File "/home/pdallair/dev/PycharmProjects/TestApp/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/p4anodepstest/astropy/config/configuration.py", line 24, in <module>
12-09 21:12:20.632   545 25974 I python  :    File "/home/pdallair/dev/PycharmProjects/TestApp/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/p4anodepstest/astropy/utils/__init__.py", line 17, in <module>
12-09 21:12:20.632   545 25974 I python  :    File "/home/pdallair/dev/PycharmProjects/TestApp/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/p4anodepstest/astropy/utils/codegen.py", line 13, in <module>
12-09 21:12:20.632   545 25974 I python  :    File "/home/pdallair/dev/PycharmProjects/TestApp/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/p4anodepstest/astropy/utils/introspection.py", line 14, in <module>
12-09 21:12:20.632   545 25974 I python  :    File "/home/pdallair/dev/PycharmProjects/TestApp/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/p4anodepstest/astropy/utils/decorators.py", line 15, in <module>
12-09 21:12:20.633   545 25974 I python  :    File "/home/pdallair/dev/PycharmProjects/TestApp/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/p4anodepstest/astropy/utils/exceptions.py", line 11, in <module>
12-09 21:12:20.633   545 25974 I python  :    File "/home/pdallair/dev/PycharmProjects/TestApp/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/p4anodepstest/erfa/__init__.py", line 5, in <module>
12-09 21:12:20.633   545 25974 I python  :    File "/home/pdallair/dev/PycharmProjects/TestApp/.buildozer/android/platform/build-armeabi-v7a/build/python-installs/p4anodepstest/erfa/version.py", line 25, in <module>
12-09 21:12:20.633   545 25974 I python  :  ImportError: dlopen failed: "/data/data/org.kivy.p4anodepstest/files/app/_python_bundle/site-packages/erfa/ufunc.so" is 64-bit instead of 32-bit

This may be one of those "obscure (for a python user) error" messages that @inclement mentioned. Although I doubt the accuracy of the error message (my mobile device is 64-bit... I think...), I believe it's safe to say that some files were compiled by pip to run on my Ubuntu VM and not an android device, in line with your prediction.

Solution Idea

1) Compile a list of what would be installed by pip (a "dry-run"*) 2) Identify and extract the elements from the list that: a) Have already been "built". b) Have a recipe. 3) Install/Build the extracted that require using their recipe. 4) Install all remaining using pip install with the --no-deps argument (to avoid reinstalling what was handled in step 3, similar to it's original purpose).

* Sadly pip doesn't have a --dry-run options (which is apparently something people have been asking for but never obtained). The workaround for this seems to be creating a temporary virtual environment, installing what we need, checking what got installed alongside it and then delete this temporary venv. Pretty gross but that's how I originally compiled my list of requirements for my buildozer.spec before removing --no-deps, just didn't automate it.

What do you guys think? To keep the installation via recipe and via pip separate maybe this "dry-run" approach ought to be done very early on in the build process. So far I haven't looked beyond the one method that took care of "all non-recipe things" (as was beautifully commented in the code :smile: ) so feedback before or as I'm digging would be appreciated.

Let me know what you think.

OrangeDog commented 2 years ago

@pdallair If you expand the original requirements list with a "dry-run" and then pass that back into the requirements, then steps 2-4 should be unnecessary. The only complication would be recipes that aren't also pip packages (e.g. python3).

pdallair commented 2 years ago

Hey folks. I'm almost done with this fix. I've pushed commits to my forked repository if you want to check them out. However there is one thing I've noticed that I'd like to get your input on before submitting the PR.

A bit of context first: To compile the expanded list of requirements I use the pip-compile command from jazzband/pip-tools. Here's an example of it's usage:

pdallair@ubuntu-vbox$ echo -e "mle-monitor\ntelenium" > requirements.in && pip-compile -v --dry-run --annotation-style=line && rm requirements.in
Using indexes:
  https://pypi.org/simple

                          ROUND 1                           
Current constraints:
  mle-monitor (from -r requirements.in (line 1))
  telenium (from -r requirements.in (line 2))

Finding the best candidates:
  found candidate mle-monitor==0.0.1 (constraint was <any>)
  found candidate telenium==0.5.0 (constraint was <any>)

Finding secondary dependencies:
  telenium==0.5.0 not in cache, need to check index
  Collecting telenium==0.5.0
    Using cached telenium-0.5.0-py2.py3-none-any.whl (332 kB)
  telenium==0.5.0           requires CherryPy>=10.2.1, json-rpc>=1.10.3, Mako>=1.0.6, Werkzeug>=0.12.2, ws4py>=0.4.2
  mle-monitor==0.0.1        requires commentjson, dotmap, GitPython, google-cloud-storage, gputil, numpy, pandas, pickledb, Pillow, plotext, psutil, pyyaml, rich

New dependencies found in this round:
  adding ('cherrypy', '>=10.2.1', [])
  adding ('commentjson', '', [])
  adding ('dotmap', '', [])
  adding ('gitpython', '', [])
  adding ('google-cloud-storage', '', [])
  adding ('gputil', '', [])
  adding ('json-rpc', '>=1.10.3', [])
  adding ('mako', '>=1.0.6', [])
  adding ('numpy', '', [])
  adding ('pandas', '', [])
  adding ('pickledb', '', [])
  adding ('pillow', '', [])
  adding ('plotext', '', [])
  adding ('psutil', '', [])
  adding ('pyyaml', '', [])
  adding ('rich', '', [])
  adding ('werkzeug', '>=0.12.2', [])
  adding ('ws4py', '>=0.4.2', [])
Removed dependencies in this round:
------------------------------------------------------------
Result of round 1: not stable

                          ROUND 2                           
Current constraints:
  CherryPy>=10.2.1 (from telenium==0.5.0->-r requirements.in (line 2))
  commentjson (from mle-monitor==0.0.1->-r requirements.in (line 1))
  dotmap (from mle-monitor==0.0.1->-r requirements.in (line 1))
  GitPython (from mle-monitor==0.0.1->-r requirements.in (line 1))
  google-cloud-storage (from mle-monitor==0.0.1->-r requirements.in (line 1))
  gputil (from mle-monitor==0.0.1->-r requirements.in (line 1))
  json-rpc>=1.10.3 (from telenium==0.5.0->-r requirements.in (line 2))
  Mako>=1.0.6 (from telenium==0.5.0->-r requirements.in (line 2))
  mle-monitor (from -r requirements.in (line 1))
  numpy (from mle-monitor==0.0.1->-r requirements.in (line 1))
  pandas (from mle-monitor==0.0.1->-r requirements.in (line 1))
  pickledb (from mle-monitor==0.0.1->-r requirements.in (line 1))
  Pillow (from mle-monitor==0.0.1->-r requirements.in (line 1))
  plotext (from mle-monitor==0.0.1->-r requirements.in (line 1))
  psutil (from mle-monitor==0.0.1->-r requirements.in (line 1))
  pyyaml (from mle-monitor==0.0.1->-r requirements.in (line 1))
  rich (from mle-monitor==0.0.1->-r requirements.in (line 1))
  telenium (from -r requirements.in (line 2))
  Werkzeug>=0.12.2 (from telenium==0.5.0->-r requirements.in (line 2))
  ws4py>=0.4.2 (from telenium==0.5.0->-r requirements.in (line 2))

Finding the best candidates:
  found candidate cherrypy==18.6.1 (constraint was >=10.2.1)
  found candidate commentjson==0.9.0 (constraint was <any>)
  found candidate dotmap==1.3.26 (constraint was <any>)
  found candidate gitpython==3.1.24 (constraint was <any>)
  found candidate google-cloud-storage==1.43.0 (constraint was <any>)
  found candidate gputil==1.4.0 (constraint was <any>)
  found candidate json-rpc==1.13.0 (constraint was >=1.10.3)
  found candidate mako==1.1.6 (constraint was >=1.0.6)
  found candidate mle-monitor==0.0.1 (constraint was <any>)
  found candidate numpy==1.21.5 (constraint was <any>)
  found candidate pandas==1.3.5 (constraint was <any>)
  found candidate pickledb==0.9.2 (constraint was <any>)
  found candidate pillow==8.4.0 (constraint was <any>)
  found candidate plotext==4.1.3 (constraint was <any>)
  found candidate psutil==5.8.0 (constraint was <any>)
  found candidate pyyaml==6.0 (constraint was <any>)
  found candidate rich==10.16.1 (constraint was <any>)
  found candidate telenium==0.5.0 (constraint was <any>)
  found candidate werkzeug==2.0.2 (constraint was >=0.12.2)
  found candidate ws4py==0.5.1 (constraint was >=0.4.2)

Finding secondary dependencies:
  dotmap==1.3.26            requires -
  rich==10.16.1             requires colorama<0.5.0,>=0.4.0, commonmark<0.10.0,>=0.9.0, pygments<3.0.0,>=2.6.0
  pillow==8.4.0             requires -
  numpy==1.21.5             requires -
  pickledb==0.9.2           requires -
  cherrypy==18.6.1 not in cache, need to check index
  Collecting CherryPy==18.6.1
    Using cached CherryPy-18.6.1-py2.py3-none-any.whl (419 kB)
  cherrypy==18.6.1          requires cheroot>=8.2.1, jaraco.collections, more-itertools, portend>=2.1.1, zc.lockfile
  mako==1.1.6 not in cache, need to check index
  Collecting Mako==1.1.6
    Using cached Mako-1.1.6-py2.py3-none-any.whl (75 kB)
  mako==1.1.6               requires MarkupSafe>=0.9.2
  json-rpc==1.13.0 not in cache, need to check index
  Collecting json-rpc==1.13.0
    Using cached json_rpc-1.13.0-py2.py3-none-any.whl (41 kB)
  json-rpc==1.13.0          requires -
  pyyaml==6.0               requires -
  google-cloud-storage==1.43.0 requires google-api-core<3.0dev,>=1.29.0; python_version >= "3.6", google-auth<3.0dev,>=1.25.0; python_version >= "3.6", google-cloud-core<3.0dev,>=1.6.0; python_version >= "3.6", google-resumable-media<3.0dev,>=1.3.0; python_version >= "3.6", protobuf; python_version >= "3.6", requests<3.0.0dev,>=2.18.0, six
  telenium==0.5.0           requires CherryPy>=10.2.1, json-rpc>=1.10.3, Mako>=1.0.6, Werkzeug>=0.12.2, ws4py>=0.4.2
  gputil==1.4.0             requires -
  ws4py==0.5.1 not in cache, need to check index
  Collecting ws4py==0.5.1
    Using cached ws4py-0.5.1.tar.gz (51 kB)
  ws4py==0.5.1              requires -
  werkzeug==2.0.2 not in cache, need to check index
  Collecting Werkzeug==2.0.2
    Using cached Werkzeug-2.0.2-py3-none-any.whl (288 kB)
  werkzeug==2.0.2           requires -
  psutil==5.8.0             requires -
  gitpython==3.1.24         requires gitdb<5,>=4.0.1, typing-extensions>=3.7.4.3; python_version < "3.10"
  commentjson==0.9.0        requires lark-parser<0.8.0,>=0.7.1
  pandas==1.3.5             requires numpy>=1.17.3; platform_machine != "aarch64" and platform_machine != "arm64" and python_version < "3.10", python-dateutil>=2.7.3, pytz>=2017.3
  mle-monitor==0.0.1        requires commentjson, dotmap, GitPython, google-cloud-storage, gputil, numpy, pandas, pickledb, Pillow, plotext, psutil, pyyaml, rich
  plotext==4.1.3            requires -

New dependencies found in this round:
  adding ('cheroot', '>=8.2.1', [])
  adding ('colorama', '<0.5.0,>=0.4.0', [])
  adding ('commonmark', '<0.10.0,>=0.9.0', [])
  adding ('gitdb', '<5,>=4.0.1', [])
  adding ('google-api-core', '<3.0dev,>=1.29.0', [])
  adding ('google-auth', '<3.0dev,>=1.25.0', [])
  adding ('google-cloud-core', '<3.0dev,>=1.6.0', [])
  adding ('google-resumable-media', '<3.0dev,>=1.3.0', [])
  adding ('jaraco.collections', '', [])
  adding ('lark-parser', '<0.8.0,>=0.7.1', [])
  adding ('markupsafe', '>=0.9.2', [])
  adding ('more-itertools', '', [])
  adding ('numpy', '>=1.17.3', [])
  adding ('portend', '>=2.1.1', [])
  adding ('protobuf', '', [])
  adding ('pygments', '<3.0.0,>=2.6.0', [])
  adding ('python-dateutil', '>=2.7.3', [])
  adding ('pytz', '>=2017.3', [])
  adding ('requests', '<3.0.0dev,>=2.18.0', [])
  adding ('six', '', [])
  adding ('typing-extensions', '>=3.7.4.3', [])
  adding ('zc.lockfile', '', [])
Removed dependencies in this round:
  removing ('numpy', '', [])
------------------------------------------------------------
Result of round 2: not stable

                          ROUND 3                           
Current constraints:
  cheroot>=8.2.1 (from CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2))
  CherryPy>=10.2.1 (from telenium==0.5.0->-r requirements.in (line 2))
  colorama<0.5.0,>=0.4.0 (from rich==10.16.1->mle-monitor==0.0.1->-r requirements.in (line 1))
  commentjson (from mle-monitor==0.0.1->-r requirements.in (line 1))
  commonmark<0.10.0,>=0.9.0 (from rich==10.16.1->mle-monitor==0.0.1->-r requirements.in (line 1))
  dotmap (from mle-monitor==0.0.1->-r requirements.in (line 1))
  gitdb<5,>=4.0.1 (from GitPython==3.1.24->mle-monitor==0.0.1->-r requirements.in (line 1))
  GitPython (from mle-monitor==0.0.1->-r requirements.in (line 1))
  google-api-core<3.0dev,>=1.29.0 (from google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  google-auth<3.0dev,>=1.25.0 (from google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  google-cloud-core<3.0dev,>=1.6.0 (from google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  google-cloud-storage (from mle-monitor==0.0.1->-r requirements.in (line 1))
  google-resumable-media<3.0dev,>=1.3.0 (from google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  gputil (from mle-monitor==0.0.1->-r requirements.in (line 1))
  jaraco.collections (from CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2))
  json-rpc>=1.10.3 (from telenium==0.5.0->-r requirements.in (line 2))
  lark-parser<0.8.0,>=0.7.1 (from commentjson==0.9.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  Mako>=1.0.6 (from telenium==0.5.0->-r requirements.in (line 2))
  MarkupSafe>=0.9.2 (from Mako==1.1.6->telenium==0.5.0->-r requirements.in (line 2))
  mle-monitor (from -r requirements.in (line 1))
  more-itertools (from CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2))
  numpy>=1.17.3 (from mle-monitor==0.0.1->-r requirements.in (line 1))
  pandas (from mle-monitor==0.0.1->-r requirements.in (line 1))
  pickledb (from mle-monitor==0.0.1->-r requirements.in (line 1))
  Pillow (from mle-monitor==0.0.1->-r requirements.in (line 1))
  plotext (from mle-monitor==0.0.1->-r requirements.in (line 1))
  portend>=2.1.1 (from CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2))
  protobuf (from google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  psutil (from mle-monitor==0.0.1->-r requirements.in (line 1))
  pygments<3.0.0,>=2.6.0 (from rich==10.16.1->mle-monitor==0.0.1->-r requirements.in (line 1))
  python-dateutil>=2.7.3 (from pandas==1.3.5->mle-monitor==0.0.1->-r requirements.in (line 1))
  pytz>=2017.3 (from pandas==1.3.5->mle-monitor==0.0.1->-r requirements.in (line 1))
  pyyaml (from mle-monitor==0.0.1->-r requirements.in (line 1))
  requests<3.0.0dev,>=2.18.0 (from google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  rich (from mle-monitor==0.0.1->-r requirements.in (line 1))
  six (from google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  telenium (from -r requirements.in (line 2))
  typing-extensions>=3.7.4.3 (from GitPython==3.1.24->mle-monitor==0.0.1->-r requirements.in (line 1))
  Werkzeug>=0.12.2 (from telenium==0.5.0->-r requirements.in (line 2))
  ws4py>=0.4.2 (from telenium==0.5.0->-r requirements.in (line 2))
  zc.lockfile (from CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2))

Finding the best candidates:
  found candidate cheroot==8.5.2 (constraint was >=8.2.1)
  found candidate cherrypy==18.6.1 (constraint was >=10.2.1)
  found candidate colorama==0.4.4 (constraint was >=0.4.0,<0.5.0)
  found candidate commentjson==0.9.0 (constraint was <any>)
  found candidate commonmark==0.9.1 (constraint was <0.10.0,>=0.9.0)
  found candidate dotmap==1.3.26 (constraint was <any>)
  found candidate gitdb==4.0.9 (constraint was >=4.0.1,<5)
  found candidate gitpython==3.1.24 (constraint was <any>)
  found candidate google-api-core==2.3.2 (constraint was >=1.29.0,<3.0dev)
  found candidate google-auth==2.3.3 (constraint was >=1.25.0,<3.0dev)
  found candidate google-cloud-core==2.2.1 (constraint was >=1.6.0,<3.0dev)
  found candidate google-cloud-storage==1.43.0 (constraint was <any>)
  found candidate google-resumable-media==2.1.0 (constraint was >=1.3.0,<3.0dev)
  found candidate gputil==1.4.0 (constraint was <any>)
  found candidate jaraco.collections==3.4.0 (constraint was <any>)
  found candidate json-rpc==1.13.0 (constraint was >=1.10.3)
  found candidate lark-parser==0.7.8 (constraint was >=0.7.1,<0.8.0)
  found candidate mako==1.1.6 (constraint was >=1.0.6)
  found candidate markupsafe==2.0.1 (constraint was >=0.9.2)
  found candidate mle-monitor==0.0.1 (constraint was <any>)
  found candidate more-itertools==8.12.0 (constraint was <any>)
  found candidate numpy==1.21.5 (constraint was >=1.17.3)
  found candidate pandas==1.3.5 (constraint was <any>)
  found candidate pickledb==0.9.2 (constraint was <any>)
  found candidate pillow==8.4.0 (constraint was <any>)
  found candidate plotext==4.1.3 (constraint was <any>)
  found candidate portend==3.1.0 (constraint was >=2.1.1)
  found candidate protobuf==3.19.1 (constraint was <any>)
  found candidate psutil==5.8.0 (constraint was <any>)
  found candidate pygments==2.10.0 (constraint was >=2.6.0,<3.0.0)
  found candidate python-dateutil==2.8.2 (constraint was >=2.7.3)
  found candidate pytz==2021.3 (constraint was >=2017.3)
  found candidate pyyaml==6.0 (constraint was <any>)
  found candidate requests==2.26.0 (constraint was >=2.18.0,<3.0.0dev)
  found candidate rich==10.16.1 (constraint was <any>)
  found candidate six==1.16.0 (constraint was <any>)
  found candidate telenium==0.5.0 (constraint was <any>)
  found candidate typing-extensions==4.0.1 (constraint was >=3.7.4.3)
  found candidate werkzeug==2.0.2 (constraint was >=0.12.2)
  found candidate ws4py==0.5.1 (constraint was >=0.4.2)
  found candidate zc.lockfile==2.0 (constraint was <any>)

Finding secondary dependencies:
  google-resumable-media==2.1.0 requires google-crc32c<2.0dev,>=1.0
  rich==10.16.1             requires colorama<0.5.0,>=0.4.0, commonmark<0.10.0,>=0.9.0, pygments<3.0.0,>=2.6.0
  gitdb==4.0.9              requires smmap<6,>=3.0.1
  pandas==1.3.5             requires numpy>=1.17.3; platform_machine != "aarch64" and platform_machine != "arm64" and python_version < "3.10", python-dateutil>=2.7.3, pytz>=2017.3
  psutil==5.8.0             requires -
  pyyaml==6.0               requires -
  zc.lockfile==2.0 not in cache, need to check index
  Collecting zc.lockfile==2.0
    Using cached zc.lockfile-2.0-py2.py3-none-any.whl (9.7 kB)
  zc.lockfile==2.0          requires setuptools
  dotmap==1.3.26            requires -
  ws4py==0.5.1              requires -
  google-api-core==2.3.2    requires google-auth<3.0dev,>=1.25.0, googleapis-common-protos<2.0dev,>=1.52.0, protobuf>=3.12.0, requests<3.0.0dev,>=2.18.0, setuptools>=40.3.0
  gitpython==3.1.24         requires gitdb<5,>=4.0.1, typing-extensions>=3.7.4.3; python_version < "3.10"
  lark-parser==0.7.8        requires -
  telenium==0.5.0           requires CherryPy>=10.2.1, json-rpc>=1.10.3, Mako>=1.0.6, Werkzeug>=0.12.2, ws4py>=0.4.2
  pickledb==0.9.2           requires -
  cherrypy==18.6.1          requires cheroot>=8.2.1, jaraco.collections, more-itertools, portend>=2.1.1, zc.lockfile
  protobuf==3.19.1          requires -
  mako==1.1.6               requires MarkupSafe>=0.9.2
  typing-extensions==4.0.1  requires -
  google-cloud-storage==1.43.0 requires google-api-core<3.0dev,>=1.29.0; python_version >= "3.6", google-auth<3.0dev,>=1.25.0; python_version >= "3.6", google-cloud-core<3.0dev,>=1.6.0; python_version >= "3.6", google-resumable-media<3.0dev,>=1.3.0; python_version >= "3.6", protobuf; python_version >= "3.6", requests<3.0.0dev,>=2.18.0, six
  json-rpc==1.13.0          requires -
  jaraco.collections==3.4.0 not in cache, need to check index
  Collecting jaraco.collections==3.4.0
    Using cached jaraco.collections-3.4.0-py3-none-any.whl (10 kB)
  jaraco.collections==3.4.0 requires jaraco.classes, jaraco.text
  pillow==8.4.0             requires -
  pygments==2.10.0          requires -
  colorama==0.4.4           requires -
  numpy==1.21.5             requires -
  plotext==4.1.3            requires -
  pytz==2021.3              requires -
  werkzeug==2.0.2           requires -
  python-dateutil==2.8.2    requires six>=1.5
  commonmark==0.9.1         requires -
  markupsafe==2.0.1 not in cache, need to check index
  Collecting MarkupSafe==2.0.1
    Using cached MarkupSafe-2.0.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (30 kB)
  markupsafe==2.0.1         requires -
  commentjson==0.9.0        requires lark-parser<0.8.0,>=0.7.1
  requests==2.26.0          requires certifi>=2017.4.17, charset-normalizer~=2.0.0; python_version >= "3", idna<4,>=2.5; python_version >= "3", urllib3<1.27,>=1.21.1
  mle-monitor==0.0.1        requires commentjson, dotmap, GitPython, google-cloud-storage, gputil, numpy, pandas, pickledb, Pillow, plotext, psutil, pyyaml, rich
  six==1.16.0               requires -
  cheroot==8.5.2 not in cache, need to check index
  Collecting cheroot==8.5.2
    Using cached cheroot-8.5.2-py2.py3-none-any.whl (97 kB)
  cheroot==8.5.2            requires jaraco.functools, more-itertools>=2.6, six>=1.11.0
  google-cloud-core==2.2.1  requires google-api-core<3.0.0dev,>=1.21.0, google-auth<3.0dev,>=1.24.0
  portend==3.1.0 not in cache, need to check index
  Collecting portend==3.1.0
    Using cached portend-3.1.0-py3-none-any.whl (5.3 kB)
  portend==3.1.0            requires tempora>=1.8
  more-itertools==8.12.0 not in cache, need to check index
  Collecting more-itertools==8.12.0
    Using cached more_itertools-8.12.0-py3-none-any.whl (54 kB)
  more-itertools==8.12.0    requires -
  gputil==1.4.0             requires -
  google-auth==2.3.3        requires cachetools<5.0,>=2.0.0, pyasn1-modules>=0.2.1, rsa<5,>=3.1.4; python_version >= "3.6", setuptools>=40.3.0, six>=1.9.0

New dependencies found in this round:
  adding ('cachetools', '<5.0,>=2.0.0', [])
  adding ('certifi', '>=2017.4.17', [])
  adding ('charset-normalizer', '~=2.0.0', [])
  adding ('google-api-core', '<3.0dev,>=1.21.0,>=1.29.0', [])
  adding ('google-auth', '<3.0dev,>=1.24.0,>=1.25.0', [])
  adding ('google-crc32c', '<2.0dev,>=1.0', [])
  adding ('googleapis-common-protos', '<2.0dev,>=1.52.0', [])
  adding ('idna', '<4,>=2.5', [])
  adding ('jaraco.classes', '', [])
  adding ('jaraco.functools', '', [])
  adding ('jaraco.text', '', [])
  adding ('more-itertools', '>=2.6', [])
  adding ('protobuf', '>=3.12.0', [])
  adding ('pyasn1-modules', '>=0.2.1', [])
  adding ('rsa', '<5,>=3.1.4', [])
  adding ('setuptools', '>=40.3.0', [])
  adding ('six', '>=1.11.0,>=1.5,>=1.9.0', [])
  adding ('smmap', '<6,>=3.0.1', [])
  adding ('tempora', '>=1.8', [])
  adding ('urllib3', '<1.27,>=1.21.1', [])
Removed dependencies in this round:
  removing ('google-api-core', '<3.0dev,>=1.29.0', [])
  removing ('google-auth', '<3.0dev,>=1.25.0', [])
  removing ('more-itertools', '', [])
  removing ('protobuf', '', [])
  removing ('six', '', [])
------------------------------------------------------------
Result of round 3: not stable

                          ROUND 4                           
Current constraints:
  cachetools<5.0,>=2.0.0 (from google-auth==2.3.3->google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  certifi>=2017.4.17 (from requests==2.26.0->google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  charset-normalizer~=2.0.0 (from requests==2.26.0->google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  cheroot>=8.2.1 (from CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2))
  CherryPy>=10.2.1 (from telenium==0.5.0->-r requirements.in (line 2))
  colorama<0.5.0,>=0.4.0 (from rich==10.16.1->mle-monitor==0.0.1->-r requirements.in (line 1))
  commentjson (from mle-monitor==0.0.1->-r requirements.in (line 1))
  commonmark<0.10.0,>=0.9.0 (from rich==10.16.1->mle-monitor==0.0.1->-r requirements.in (line 1))
  dotmap (from mle-monitor==0.0.1->-r requirements.in (line 1))
  gitdb<5,>=4.0.1 (from GitPython==3.1.24->mle-monitor==0.0.1->-r requirements.in (line 1))
  GitPython (from mle-monitor==0.0.1->-r requirements.in (line 1))
  google-api-core<3.0dev,>=1.21.0,>=1.29.0 (from google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  google-auth<3.0dev,>=1.24.0,>=1.25.0 (from google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  google-cloud-core<3.0dev,>=1.6.0 (from google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  google-cloud-storage (from mle-monitor==0.0.1->-r requirements.in (line 1))
  google-crc32c<2.0dev,>=1.0 (from google-resumable-media==2.1.0->google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  google-resumable-media<3.0dev,>=1.3.0 (from google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  googleapis-common-protos<2.0dev,>=1.52.0 (from google-api-core==2.3.2->google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  gputil (from mle-monitor==0.0.1->-r requirements.in (line 1))
  idna<4,>=2.5 (from requests==2.26.0->google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  jaraco.classes (from jaraco.collections==3.4.0->CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2))
  jaraco.collections (from CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2))
  jaraco.functools (from cheroot==8.5.2->CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2))
  jaraco.text (from jaraco.collections==3.4.0->CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2))
  json-rpc>=1.10.3 (from telenium==0.5.0->-r requirements.in (line 2))
  lark-parser<0.8.0,>=0.7.1 (from commentjson==0.9.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  Mako>=1.0.6 (from telenium==0.5.0->-r requirements.in (line 2))
  MarkupSafe>=0.9.2 (from Mako==1.1.6->telenium==0.5.0->-r requirements.in (line 2))
  mle-monitor (from -r requirements.in (line 1))
  more-itertools>=2.6 (from CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2))
  numpy>=1.17.3 (from mle-monitor==0.0.1->-r requirements.in (line 1))
  pandas (from mle-monitor==0.0.1->-r requirements.in (line 1))
  pickledb (from mle-monitor==0.0.1->-r requirements.in (line 1))
  Pillow (from mle-monitor==0.0.1->-r requirements.in (line 1))
  plotext (from mle-monitor==0.0.1->-r requirements.in (line 1))
  portend>=2.1.1 (from CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2))
  protobuf>=3.12.0 (from google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  psutil (from mle-monitor==0.0.1->-r requirements.in (line 1))
  pyasn1-modules>=0.2.1 (from google-auth==2.3.3->google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  pygments<3.0.0,>=2.6.0 (from rich==10.16.1->mle-monitor==0.0.1->-r requirements.in (line 1))
  python-dateutil>=2.7.3 (from pandas==1.3.5->mle-monitor==0.0.1->-r requirements.in (line 1))
  pytz>=2017.3 (from pandas==1.3.5->mle-monitor==0.0.1->-r requirements.in (line 1))
  pyyaml (from mle-monitor==0.0.1->-r requirements.in (line 1))
  requests<3.0.0dev,>=2.18.0 (from google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  rich (from mle-monitor==0.0.1->-r requirements.in (line 1))
  rsa<5,>=3.1.4 (from google-auth==2.3.3->google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  setuptools>=40.3.0 (from google-auth==2.3.3->google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  six>=1.11.0,>=1.5,>=1.9.0 (from google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  smmap<6,>=3.0.1 (from gitdb==4.0.9->GitPython==3.1.24->mle-monitor==0.0.1->-r requirements.in (line 1))
  telenium (from -r requirements.in (line 2))
  tempora>=1.8 (from portend==3.1.0->CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2))
  typing-extensions>=3.7.4.3 (from GitPython==3.1.24->mle-monitor==0.0.1->-r requirements.in (line 1))
  urllib3<1.27,>=1.21.1 (from requests==2.26.0->google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  Werkzeug>=0.12.2 (from telenium==0.5.0->-r requirements.in (line 2))
  ws4py>=0.4.2 (from telenium==0.5.0->-r requirements.in (line 2))
  zc.lockfile (from CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2))

Finding the best candidates:
  found candidate cachetools==4.2.4 (constraint was >=2.0.0,<5.0)
  found candidate certifi==2021.10.8 (constraint was >=2017.4.17)
  found candidate charset-normalizer==2.0.9 (constraint was ~=2.0.0)
  found candidate cheroot==8.5.2 (constraint was >=8.2.1)
  found candidate cherrypy==18.6.1 (constraint was >=10.2.1)
  found candidate colorama==0.4.4 (constraint was >=0.4.0,<0.5.0)
  found candidate commentjson==0.9.0 (constraint was <any>)
  found candidate commonmark==0.9.1 (constraint was <0.10.0,>=0.9.0)
  found candidate dotmap==1.3.26 (constraint was <any>)
  found candidate gitdb==4.0.9 (constraint was >=4.0.1,<5)
  found candidate gitpython==3.1.24 (constraint was <any>)
  found candidate google-api-core==2.3.2 (constraint was >=1.21.0,>=1.29.0,<3.0dev)
  found candidate google-auth==2.3.3 (constraint was >=1.24.0,>=1.25.0,<3.0dev)
  found candidate google-cloud-core==2.2.1 (constraint was >=1.6.0,<3.0dev)
  found candidate google-cloud-storage==1.43.0 (constraint was <any>)
  found candidate google-crc32c==1.3.0 (constraint was >=1.0,<2.0dev)
  found candidate google-resumable-media==2.1.0 (constraint was >=1.3.0,<3.0dev)
  found candidate googleapis-common-protos==1.54.0 (constraint was >=1.52.0,<2.0dev)
  found candidate gputil==1.4.0 (constraint was <any>)
  found candidate idna==3.3 (constraint was >=2.5,<4)
  found candidate jaraco.classes==3.2.1 (constraint was <any>)
  found candidate jaraco.collections==3.4.0 (constraint was <any>)
  found candidate jaraco.functools==3.5.0 (constraint was <any>)
  found candidate jaraco.text==3.6.0 (constraint was <any>)
  found candidate json-rpc==1.13.0 (constraint was >=1.10.3)
  found candidate lark-parser==0.7.8 (constraint was >=0.7.1,<0.8.0)
  found candidate mako==1.1.6 (constraint was >=1.0.6)
  found candidate markupsafe==2.0.1 (constraint was >=0.9.2)
  found candidate mle-monitor==0.0.1 (constraint was <any>)
  found candidate more-itertools==8.12.0 (constraint was >=2.6)
  found candidate numpy==1.21.5 (constraint was >=1.17.3)
  found candidate pandas==1.3.5 (constraint was <any>)
  found candidate pickledb==0.9.2 (constraint was <any>)
  found candidate pillow==8.4.0 (constraint was <any>)
  found candidate plotext==4.1.3 (constraint was <any>)
  found candidate portend==3.1.0 (constraint was >=2.1.1)
  found candidate protobuf==3.19.1 (constraint was >=3.12.0)
  found candidate psutil==5.8.0 (constraint was <any>)
  found candidate pyasn1-modules==0.2.8 (constraint was >=0.2.1)
  found candidate pygments==2.10.0 (constraint was >=2.6.0,<3.0.0)
  found candidate python-dateutil==2.8.2 (constraint was >=2.7.3)
  found candidate pytz==2021.3 (constraint was >=2017.3)
  found candidate pyyaml==6.0 (constraint was <any>)
  found candidate requests==2.26.0 (constraint was >=2.18.0,<3.0.0dev)
  found candidate rich==10.16.1 (constraint was <any>)
  found candidate rsa==4.8 (constraint was >=3.1.4,<5)
  found candidate setuptools==60.1.0 (constraint was >=40.3.0)
  found candidate six==1.16.0 (constraint was >=1.11.0,>=1.5,>=1.9.0)
  found candidate smmap==5.0.0 (constraint was >=3.0.1,<6)
  found candidate telenium==0.5.0 (constraint was <any>)
  found candidate tempora==4.1.2 (constraint was >=1.8)
  found candidate typing-extensions==4.0.1 (constraint was >=3.7.4.3)
  found candidate urllib3==1.26.7 (constraint was >=1.21.1,<1.27)
  found candidate werkzeug==2.0.2 (constraint was >=0.12.2)
  found candidate ws4py==0.5.1 (constraint was >=0.4.2)
  found candidate zc.lockfile==2.0 (constraint was <any>)

Finding secondary dependencies:
  urllib3==1.26.7           requires -
  dotmap==1.3.26            requires -
  jaraco.classes==3.2.1 not in cache, need to check index
  Collecting jaraco.classes==3.2.1
    Using cached jaraco.classes-3.2.1-py3-none-any.whl (5.6 kB)
  jaraco.classes==3.2.1     requires more-itertools
  protobuf==3.19.1          requires -
  jaraco.text==3.6.0 not in cache, need to check index
  Collecting jaraco.text==3.6.0
    Using cached jaraco.text-3.6.0-py3-none-any.whl (8.1 kB)
  jaraco.text==3.6.0        requires importlib-resources; python_version < "3.9", jaraco.functools
  pickledb==0.9.2           requires -
  pyyaml==6.0               requires -
  more-itertools==8.12.0    requires -
  google-resumable-media==2.1.0 requires google-crc32c<2.0dev,>=1.0
  pyasn1-modules==0.2.8     requires pyasn1<0.5.0,>=0.4.6
  colorama==0.4.4           requires -
  certifi==2021.10.8        requires -
  mako==1.1.6               requires MarkupSafe>=0.9.2
  werkzeug==2.0.2           requires -
  googleapis-common-protos==1.54.0 requires protobuf>=3.12.0
  portend==3.1.0            requires tempora>=1.8
  json-rpc==1.13.0          requires -
  pygments==2.10.0          requires -
  six==1.16.0               requires -
  google-auth==2.3.3        requires cachetools<5.0,>=2.0.0, pyasn1-modules>=0.2.1, rsa<5,>=3.1.4; python_version >= "3.6", setuptools>=40.3.0, six>=1.9.0
  telenium==0.5.0           requires CherryPy>=10.2.1, json-rpc>=1.10.3, Mako>=1.0.6, Werkzeug>=0.12.2, ws4py>=0.4.2
  lark-parser==0.7.8        requires -
  psutil==5.8.0             requires -
  typing-extensions==4.0.1  requires -
  rsa==4.8                  requires pyasn1>=0.1.3
  ws4py==0.5.1              requires -
  cherrypy==18.6.1          requires cheroot>=8.2.1, jaraco.collections, more-itertools, portend>=2.1.1, zc.lockfile
  plotext==4.1.3            requires -
  zc.lockfile==2.0          requires setuptools
  pandas==1.3.5             requires numpy>=1.17.3; platform_machine != "aarch64" and platform_machine != "arm64" and python_version < "3.10", python-dateutil>=2.7.3, pytz>=2017.3
  gitdb==4.0.9              requires smmap<6,>=3.0.1
  commentjson==0.9.0        requires lark-parser<0.8.0,>=0.7.1
  markupsafe==2.0.1         requires -
  google-crc32c==1.3.0      requires -
  mle-monitor==0.0.1        requires commentjson, dotmap, GitPython, google-cloud-storage, gputil, numpy, pandas, pickledb, Pillow, plotext, psutil, pyyaml, rich
  gputil==1.4.0             requires -
  gitpython==3.1.24         requires gitdb<5,>=4.0.1, typing-extensions>=3.7.4.3; python_version < "3.10"
  google-cloud-core==2.2.1  requires google-api-core<3.0.0dev,>=1.21.0, google-auth<3.0dev,>=1.24.0
  pytz==2021.3              requires -
  google-cloud-storage==1.43.0 requires google-api-core<3.0dev,>=1.29.0; python_version >= "3.6", google-auth<3.0dev,>=1.25.0; python_version >= "3.6", google-cloud-core<3.0dev,>=1.6.0; python_version >= "3.6", google-resumable-media<3.0dev,>=1.3.0; python_version >= "3.6", protobuf; python_version >= "3.6", requests<3.0.0dev,>=2.18.0, six
  jaraco.collections==3.4.0 requires jaraco.classes, jaraco.text
  commonmark==0.9.1         requires -
  pillow==8.4.0             requires -
  jaraco.functools==3.5.0 not in cache, need to check index
  Collecting jaraco.functools==3.5.0
    Downloading jaraco.functools-3.5.0-py3-none-any.whl (7.0 kB)
  jaraco.functools==3.5.0   requires more-itertools
  python-dateutil==2.8.2    requires six>=1.5
  setuptools==60.1.0        requires -
  smmap==5.0.0              requires -
  idna==3.3                 requires -
  numpy==1.21.5             requires -
  charset-normalizer==2.0.9 requires -
  requests==2.26.0          requires certifi>=2017.4.17, charset-normalizer~=2.0.0; python_version >= "3", idna<4,>=2.5; python_version >= "3", urllib3<1.27,>=1.21.1
  rich==10.16.1             requires colorama<0.5.0,>=0.4.0, commonmark<0.10.0,>=0.9.0, pygments<3.0.0,>=2.6.0
  tempora==4.1.2 not in cache, need to check index
  Collecting tempora==4.1.2
    Using cached tempora-4.1.2-py3-none-any.whl (15 kB)
  tempora==4.1.2            requires jaraco.functools>=1.20, pytz
  google-api-core==2.3.2    requires google-auth<3.0dev,>=1.25.0, googleapis-common-protos<2.0dev,>=1.52.0, protobuf>=3.12.0, requests<3.0.0dev,>=2.18.0, setuptools>=40.3.0
  cheroot==8.5.2            requires jaraco.functools, more-itertools>=2.6, six>=1.11.0
  cachetools==4.2.4         requires -

New dependencies found in this round:
  adding ('importlib-resources', '', [])
  adding ('jaraco.functools', '>=1.20', [])
  adding ('pyasn1', '<0.5.0,>=0.1.3,>=0.4.6', [])
Removed dependencies in this round:
  removing ('jaraco.functools', '', [])
------------------------------------------------------------
Result of round 4: not stable

                          ROUND 5                           
Current constraints:
  cachetools<5.0,>=2.0.0 (from google-auth==2.3.3->google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  certifi>=2017.4.17 (from requests==2.26.0->google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  charset-normalizer~=2.0.0 (from requests==2.26.0->google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  cheroot>=8.2.1 (from CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2))
  CherryPy>=10.2.1 (from telenium==0.5.0->-r requirements.in (line 2))
  colorama<0.5.0,>=0.4.0 (from rich==10.16.1->mle-monitor==0.0.1->-r requirements.in (line 1))
  commentjson (from mle-monitor==0.0.1->-r requirements.in (line 1))
  commonmark<0.10.0,>=0.9.0 (from rich==10.16.1->mle-monitor==0.0.1->-r requirements.in (line 1))
  dotmap (from mle-monitor==0.0.1->-r requirements.in (line 1))
  gitdb<5,>=4.0.1 (from GitPython==3.1.24->mle-monitor==0.0.1->-r requirements.in (line 1))
  GitPython (from mle-monitor==0.0.1->-r requirements.in (line 1))
  google-api-core<3.0.0dev,>=1.21.0,>=1.29.0 (from google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  google-auth<3.0dev,>=1.24.0,>=1.25.0 (from google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  google-cloud-core<3.0dev,>=1.6.0 (from google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  google-cloud-storage (from mle-monitor==0.0.1->-r requirements.in (line 1))
  google-crc32c<2.0dev,>=1.0 (from google-resumable-media==2.1.0->google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  google-resumable-media<3.0dev,>=1.3.0 (from google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  googleapis-common-protos<2.0dev,>=1.52.0 (from google-api-core==2.3.2->google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  gputil (from mle-monitor==0.0.1->-r requirements.in (line 1))
  idna<4,>=2.5 (from requests==2.26.0->google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  importlib-resources (from jaraco.text==3.6.0->jaraco.collections==3.4.0->CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2))
  jaraco.classes (from jaraco.collections==3.4.0->CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2))
  jaraco.collections (from CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2))
  jaraco.functools>=1.20 (from cheroot==8.5.2->CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2))
  jaraco.text (from jaraco.collections==3.4.0->CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2))
  json-rpc>=1.10.3 (from telenium==0.5.0->-r requirements.in (line 2))
  lark-parser<0.8.0,>=0.7.1 (from commentjson==0.9.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  Mako>=1.0.6 (from telenium==0.5.0->-r requirements.in (line 2))
  MarkupSafe>=0.9.2 (from Mako==1.1.6->telenium==0.5.0->-r requirements.in (line 2))
  mle-monitor (from -r requirements.in (line 1))
  more-itertools>=2.6 (from CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2))
  numpy>=1.17.3 (from mle-monitor==0.0.1->-r requirements.in (line 1))
  pandas (from mle-monitor==0.0.1->-r requirements.in (line 1))
  pickledb (from mle-monitor==0.0.1->-r requirements.in (line 1))
  Pillow (from mle-monitor==0.0.1->-r requirements.in (line 1))
  plotext (from mle-monitor==0.0.1->-r requirements.in (line 1))
  portend>=2.1.1 (from CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2))
  protobuf>=3.12.0 (from google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  psutil (from mle-monitor==0.0.1->-r requirements.in (line 1))
  pyasn1<0.5.0,>=0.1.3,>=0.4.6 (from rsa==4.8->google-auth==2.3.3->google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  pyasn1-modules>=0.2.1 (from google-auth==2.3.3->google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  pygments<3.0.0,>=2.6.0 (from rich==10.16.1->mle-monitor==0.0.1->-r requirements.in (line 1))
  python-dateutil>=2.7.3 (from pandas==1.3.5->mle-monitor==0.0.1->-r requirements.in (line 1))
  pytz>=2017.3 (from pandas==1.3.5->mle-monitor==0.0.1->-r requirements.in (line 1))
  pyyaml (from mle-monitor==0.0.1->-r requirements.in (line 1))
  requests<3.0.0dev,>=2.18.0 (from google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  rich (from mle-monitor==0.0.1->-r requirements.in (line 1))
  rsa<5,>=3.1.4 (from google-auth==2.3.3->google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  setuptools>=40.3.0 (from zc.lockfile==2.0->CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2))
  six>=1.11.0,>=1.5,>=1.9.0 (from google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  smmap<6,>=3.0.1 (from gitdb==4.0.9->GitPython==3.1.24->mle-monitor==0.0.1->-r requirements.in (line 1))
  telenium (from -r requirements.in (line 2))
  tempora>=1.8 (from portend==3.1.0->CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2))
  typing-extensions>=3.7.4.3 (from GitPython==3.1.24->mle-monitor==0.0.1->-r requirements.in (line 1))
  urllib3<1.27,>=1.21.1 (from requests==2.26.0->google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  Werkzeug>=0.12.2 (from telenium==0.5.0->-r requirements.in (line 2))
  ws4py>=0.4.2 (from telenium==0.5.0->-r requirements.in (line 2))
  zc.lockfile (from CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2))

Finding the best candidates:
  found candidate cachetools==4.2.4 (constraint was >=2.0.0,<5.0)
  found candidate certifi==2021.10.8 (constraint was >=2017.4.17)
  found candidate charset-normalizer==2.0.9 (constraint was ~=2.0.0)
  found candidate cheroot==8.5.2 (constraint was >=8.2.1)
  found candidate cherrypy==18.6.1 (constraint was >=10.2.1)
  found candidate colorama==0.4.4 (constraint was >=0.4.0,<0.5.0)
  found candidate commentjson==0.9.0 (constraint was <any>)
  found candidate commonmark==0.9.1 (constraint was <0.10.0,>=0.9.0)
  found candidate dotmap==1.3.26 (constraint was <any>)
  found candidate gitdb==4.0.9 (constraint was >=4.0.1,<5)
  found candidate gitpython==3.1.24 (constraint was <any>)
  found candidate google-api-core==2.3.2 (constraint was >=1.21.0,>=1.29.0,<3.0.0dev)
  found candidate google-auth==2.3.3 (constraint was >=1.24.0,>=1.25.0,<3.0dev)
  found candidate google-cloud-core==2.2.1 (constraint was >=1.6.0,<3.0dev)
  found candidate google-cloud-storage==1.43.0 (constraint was <any>)
  found candidate google-crc32c==1.3.0 (constraint was >=1.0,<2.0dev)
  found candidate google-resumable-media==2.1.0 (constraint was >=1.3.0,<3.0dev)
  found candidate googleapis-common-protos==1.54.0 (constraint was >=1.52.0,<2.0dev)
  found candidate gputil==1.4.0 (constraint was <any>)
  found candidate idna==3.3 (constraint was >=2.5,<4)
  found candidate importlib-resources==5.4.0 (constraint was <any>)
  found candidate jaraco.classes==3.2.1 (constraint was <any>)
  found candidate jaraco.collections==3.4.0 (constraint was <any>)
  found candidate jaraco.functools==3.5.0 (constraint was >=1.20)
  found candidate jaraco.text==3.6.0 (constraint was <any>)
  found candidate json-rpc==1.13.0 (constraint was >=1.10.3)
  found candidate lark-parser==0.7.8 (constraint was >=0.7.1,<0.8.0)
  found candidate mako==1.1.6 (constraint was >=1.0.6)
  found candidate markupsafe==2.0.1 (constraint was >=0.9.2)
  found candidate mle-monitor==0.0.1 (constraint was <any>)
  found candidate more-itertools==8.12.0 (constraint was >=2.6)
  found candidate numpy==1.21.5 (constraint was >=1.17.3)
  found candidate pandas==1.3.5 (constraint was <any>)
  found candidate pickledb==0.9.2 (constraint was <any>)
  found candidate pillow==8.4.0 (constraint was <any>)
  found candidate plotext==4.1.3 (constraint was <any>)
  found candidate portend==3.1.0 (constraint was >=2.1.1)
  found candidate protobuf==3.19.1 (constraint was >=3.12.0)
  found candidate psutil==5.8.0 (constraint was <any>)
  found candidate pyasn1==0.4.8 (constraint was >=0.1.3,>=0.4.6,<0.5.0)
  found candidate pyasn1-modules==0.2.8 (constraint was >=0.2.1)
  found candidate pygments==2.10.0 (constraint was >=2.6.0,<3.0.0)
  found candidate python-dateutil==2.8.2 (constraint was >=2.7.3)
  found candidate pytz==2021.3 (constraint was >=2017.3)
  found candidate pyyaml==6.0 (constraint was <any>)
  found candidate requests==2.26.0 (constraint was >=2.18.0,<3.0.0dev)
  found candidate rich==10.16.1 (constraint was <any>)
  found candidate rsa==4.8 (constraint was >=3.1.4,<5)
  found candidate setuptools==60.1.0 (constraint was >=40.3.0)
  found candidate six==1.16.0 (constraint was >=1.11.0,>=1.5,>=1.9.0)
  found candidate smmap==5.0.0 (constraint was >=3.0.1,<6)
  found candidate telenium==0.5.0 (constraint was <any>)
  found candidate tempora==4.1.2 (constraint was >=1.8)
  found candidate typing-extensions==4.0.1 (constraint was >=3.7.4.3)
  found candidate urllib3==1.26.7 (constraint was >=1.21.1,<1.27)
  found candidate werkzeug==2.0.2 (constraint was >=0.12.2)
  found candidate ws4py==0.5.1 (constraint was >=0.4.2)
  found candidate zc.lockfile==2.0 (constraint was <any>)

Finding secondary dependencies:
  tempora==4.1.2            requires jaraco.functools>=1.20, pytz
  google-cloud-core==2.2.1  requires google-api-core<3.0.0dev,>=1.21.0, google-auth<3.0dev,>=1.24.0
  google-api-core==2.3.2    requires google-auth<3.0dev,>=1.25.0, googleapis-common-protos<2.0dev,>=1.52.0, protobuf>=3.12.0, requests<3.0.0dev,>=2.18.0, setuptools>=40.3.0
  google-crc32c==1.3.0      requires -
  mako==1.1.6               requires MarkupSafe>=0.9.2
  numpy==1.21.5             requires -
  pyasn1-modules==0.2.8     requires pyasn1<0.5.0,>=0.4.6
  rich==10.16.1             requires colorama<0.5.0,>=0.4.0, commonmark<0.10.0,>=0.9.0, pygments<3.0.0,>=2.6.0
  smmap==5.0.0              requires -
  typing-extensions==4.0.1  requires -
  google-resumable-media==2.1.0 requires google-crc32c<2.0dev,>=1.0
  mle-monitor==0.0.1        requires commentjson, dotmap, GitPython, google-cloud-storage, gputil, numpy, pandas, pickledb, Pillow, plotext, psutil, pyyaml, rich
  jaraco.collections==3.4.0 requires jaraco.classes, jaraco.text
  gitdb==4.0.9              requires smmap<6,>=3.0.1
  gputil==1.4.0             requires -
  jaraco.functools==3.5.0   requires more-itertools
  pyyaml==6.0               requires -
  certifi==2021.10.8        requires -
  gitpython==3.1.24         requires gitdb<5,>=4.0.1, typing-extensions>=3.7.4.3; python_version < "3.10"
  setuptools==60.1.0        requires -
  dotmap==1.3.26            requires -
  commonmark==0.9.1         requires -
  commentjson==0.9.0        requires lark-parser<0.8.0,>=0.7.1
  cheroot==8.5.2            requires jaraco.functools, more-itertools>=2.6, six>=1.11.0
  python-dateutil==2.8.2    requires six>=1.5
  ws4py==0.5.1              requires -
  rsa==4.8                  requires pyasn1>=0.1.3
  googleapis-common-protos==1.54.0 requires protobuf>=3.12.0
  json-rpc==1.13.0          requires -
  psutil==5.8.0             requires -
  telenium==0.5.0           requires CherryPy>=10.2.1, json-rpc>=1.10.3, Mako>=1.0.6, Werkzeug>=0.12.2, ws4py>=0.4.2
  urllib3==1.26.7           requires -
  jaraco.classes==3.2.1     requires more-itertools
  jaraco.text==3.6.0        requires importlib-resources; python_version < "3.9", jaraco.functools
  pytz==2021.3              requires -
  importlib-resources==5.4.0 not in cache, need to check index
  Collecting importlib-resources==5.4.0
    Using cached importlib_resources-5.4.0-py3-none-any.whl (28 kB)
  importlib-resources==5.4.0 requires zipp>=3.1.0; python_version < "3.10"
  werkzeug==2.0.2           requires -
  portend==3.1.0            requires tempora>=1.8
  pygments==2.10.0          requires -
  plotext==4.1.3            requires -
  lark-parser==0.7.8        requires -
  requests==2.26.0          requires certifi>=2017.4.17, charset-normalizer~=2.0.0; python_version >= "3", idna<4,>=2.5; python_version >= "3", urllib3<1.27,>=1.21.1
  cachetools==4.2.4         requires -
  google-auth==2.3.3        requires cachetools<5.0,>=2.0.0, pyasn1-modules>=0.2.1, rsa<5,>=3.1.4; python_version >= "3.6", setuptools>=40.3.0, six>=1.9.0
  pyasn1==0.4.8             requires -
  colorama==0.4.4           requires -
  pandas==1.3.5             requires numpy>=1.17.3; platform_machine != "aarch64" and platform_machine != "arm64" and python_version < "3.10", python-dateutil>=2.7.3, pytz>=2017.3
  pickledb==0.9.2           requires -
  cherrypy==18.6.1          requires cheroot>=8.2.1, jaraco.collections, more-itertools, portend>=2.1.1, zc.lockfile
  idna==3.3                 requires -
  pillow==8.4.0             requires -
  six==1.16.0               requires -
  more-itertools==8.12.0    requires -
  zc.lockfile==2.0          requires setuptools
  protobuf==3.19.1          requires -
  google-cloud-storage==1.43.0 requires google-api-core<3.0dev,>=1.29.0; python_version >= "3.6", google-auth<3.0dev,>=1.25.0; python_version >= "3.6", google-cloud-core<3.0dev,>=1.6.0; python_version >= "3.6", google-resumable-media<3.0dev,>=1.3.0; python_version >= "3.6", protobuf; python_version >= "3.6", requests<3.0.0dev,>=2.18.0, six
  markupsafe==2.0.1         requires -
  charset-normalizer==2.0.9 requires -

New dependencies found in this round:
  adding ('zipp', '>=3.1.0', [])
Removed dependencies in this round:
------------------------------------------------------------
Result of round 5: not stable

                          ROUND 6                           
Current constraints:
  cachetools<5.0,>=2.0.0 (from google-auth==2.3.3->google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  certifi>=2017.4.17 (from requests==2.26.0->google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  charset-normalizer~=2.0.0 (from requests==2.26.0->google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  cheroot>=8.2.1 (from CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2))
  CherryPy>=10.2.1 (from telenium==0.5.0->-r requirements.in (line 2))
  colorama<0.5.0,>=0.4.0 (from rich==10.16.1->mle-monitor==0.0.1->-r requirements.in (line 1))
  commentjson (from mle-monitor==0.0.1->-r requirements.in (line 1))
  commonmark<0.10.0,>=0.9.0 (from rich==10.16.1->mle-monitor==0.0.1->-r requirements.in (line 1))
  dotmap (from mle-monitor==0.0.1->-r requirements.in (line 1))
  gitdb<5,>=4.0.1 (from GitPython==3.1.24->mle-monitor==0.0.1->-r requirements.in (line 1))
  GitPython (from mle-monitor==0.0.1->-r requirements.in (line 1))
  google-api-core<3.0.0dev,>=1.21.0,>=1.29.0 (from google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  google-auth<3.0dev,>=1.24.0,>=1.25.0 (from google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  google-cloud-core<3.0dev,>=1.6.0 (from google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  google-cloud-storage (from mle-monitor==0.0.1->-r requirements.in (line 1))
  google-crc32c<2.0dev,>=1.0 (from google-resumable-media==2.1.0->google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  google-resumable-media<3.0dev,>=1.3.0 (from google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  googleapis-common-protos<2.0dev,>=1.52.0 (from google-api-core==2.3.2->google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  gputil (from mle-monitor==0.0.1->-r requirements.in (line 1))
  idna<4,>=2.5 (from requests==2.26.0->google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  importlib-resources (from jaraco.text==3.6.0->jaraco.collections==3.4.0->CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2))
  jaraco.classes (from jaraco.collections==3.4.0->CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2))
  jaraco.collections (from CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2))
  jaraco.functools>=1.20 (from cheroot==8.5.2->CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2))
  jaraco.text (from jaraco.collections==3.4.0->CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2))
  json-rpc>=1.10.3 (from telenium==0.5.0->-r requirements.in (line 2))
  lark-parser<0.8.0,>=0.7.1 (from commentjson==0.9.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  Mako>=1.0.6 (from telenium==0.5.0->-r requirements.in (line 2))
  MarkupSafe>=0.9.2 (from Mako==1.1.6->telenium==0.5.0->-r requirements.in (line 2))
  mle-monitor (from -r requirements.in (line 1))
  more-itertools>=2.6 (from CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2))
  numpy>=1.17.3 (from mle-monitor==0.0.1->-r requirements.in (line 1))
  pandas (from mle-monitor==0.0.1->-r requirements.in (line 1))
  pickledb (from mle-monitor==0.0.1->-r requirements.in (line 1))
  Pillow (from mle-monitor==0.0.1->-r requirements.in (line 1))
  plotext (from mle-monitor==0.0.1->-r requirements.in (line 1))
  portend>=2.1.1 (from CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2))
  protobuf>=3.12.0 (from google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  psutil (from mle-monitor==0.0.1->-r requirements.in (line 1))
  pyasn1<0.5.0,>=0.1.3,>=0.4.6 (from rsa==4.8->google-auth==2.3.3->google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  pyasn1-modules>=0.2.1 (from google-auth==2.3.3->google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  pygments<3.0.0,>=2.6.0 (from rich==10.16.1->mle-monitor==0.0.1->-r requirements.in (line 1))
  python-dateutil>=2.7.3 (from pandas==1.3.5->mle-monitor==0.0.1->-r requirements.in (line 1))
  pytz>=2017.3 (from pandas==1.3.5->mle-monitor==0.0.1->-r requirements.in (line 1))
  pyyaml (from mle-monitor==0.0.1->-r requirements.in (line 1))
  requests<3.0.0dev,>=2.18.0 (from google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  rich (from mle-monitor==0.0.1->-r requirements.in (line 1))
  rsa<5,>=3.1.4 (from google-auth==2.3.3->google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  setuptools>=40.3.0 (from zc.lockfile==2.0->CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2))
  six>=1.11.0,>=1.5,>=1.9.0 (from google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  smmap<6,>=3.0.1 (from gitdb==4.0.9->GitPython==3.1.24->mle-monitor==0.0.1->-r requirements.in (line 1))
  telenium (from -r requirements.in (line 2))
  tempora>=1.8 (from portend==3.1.0->CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2))
  typing-extensions>=3.7.4.3 (from GitPython==3.1.24->mle-monitor==0.0.1->-r requirements.in (line 1))
  urllib3<1.27,>=1.21.1 (from requests==2.26.0->google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1))
  Werkzeug>=0.12.2 (from telenium==0.5.0->-r requirements.in (line 2))
  ws4py>=0.4.2 (from telenium==0.5.0->-r requirements.in (line 2))
  zc.lockfile (from CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2))
  zipp>=3.1.0 (from importlib-resources==5.4.0->jaraco.text==3.6.0->jaraco.collections==3.4.0->CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2))

Finding the best candidates:
  found candidate cachetools==4.2.4 (constraint was >=2.0.0,<5.0)
  found candidate certifi==2021.10.8 (constraint was >=2017.4.17)
  found candidate charset-normalizer==2.0.9 (constraint was ~=2.0.0)
  found candidate cheroot==8.5.2 (constraint was >=8.2.1)
  found candidate cherrypy==18.6.1 (constraint was >=10.2.1)
  found candidate colorama==0.4.4 (constraint was >=0.4.0,<0.5.0)
  found candidate commentjson==0.9.0 (constraint was <any>)
  found candidate commonmark==0.9.1 (constraint was <0.10.0,>=0.9.0)
  found candidate dotmap==1.3.26 (constraint was <any>)
  found candidate gitdb==4.0.9 (constraint was >=4.0.1,<5)
  found candidate gitpython==3.1.24 (constraint was <any>)
  found candidate google-api-core==2.3.2 (constraint was >=1.21.0,>=1.29.0,<3.0.0dev)
  found candidate google-auth==2.3.3 (constraint was >=1.24.0,>=1.25.0,<3.0dev)
  found candidate google-cloud-core==2.2.1 (constraint was >=1.6.0,<3.0dev)
  found candidate google-cloud-storage==1.43.0 (constraint was <any>)
  found candidate google-crc32c==1.3.0 (constraint was >=1.0,<2.0dev)
  found candidate google-resumable-media==2.1.0 (constraint was >=1.3.0,<3.0dev)
  found candidate googleapis-common-protos==1.54.0 (constraint was >=1.52.0,<2.0dev)
  found candidate gputil==1.4.0 (constraint was <any>)
  found candidate idna==3.3 (constraint was >=2.5,<4)
  found candidate importlib-resources==5.4.0 (constraint was <any>)
  found candidate jaraco.classes==3.2.1 (constraint was <any>)
  found candidate jaraco.collections==3.4.0 (constraint was <any>)
  found candidate jaraco.functools==3.5.0 (constraint was >=1.20)
  found candidate jaraco.text==3.6.0 (constraint was <any>)
  found candidate json-rpc==1.13.0 (constraint was >=1.10.3)
  found candidate lark-parser==0.7.8 (constraint was >=0.7.1,<0.8.0)
  found candidate mako==1.1.6 (constraint was >=1.0.6)
  found candidate markupsafe==2.0.1 (constraint was >=0.9.2)
  found candidate mle-monitor==0.0.1 (constraint was <any>)
  found candidate more-itertools==8.12.0 (constraint was >=2.6)
  found candidate numpy==1.21.5 (constraint was >=1.17.3)
  found candidate pandas==1.3.5 (constraint was <any>)
  found candidate pickledb==0.9.2 (constraint was <any>)
  found candidate pillow==8.4.0 (constraint was <any>)
  found candidate plotext==4.1.3 (constraint was <any>)
  found candidate portend==3.1.0 (constraint was >=2.1.1)
  found candidate protobuf==3.19.1 (constraint was >=3.12.0)
  found candidate psutil==5.8.0 (constraint was <any>)
  found candidate pyasn1==0.4.8 (constraint was >=0.1.3,>=0.4.6,<0.5.0)
  found candidate pyasn1-modules==0.2.8 (constraint was >=0.2.1)
  found candidate pygments==2.10.0 (constraint was >=2.6.0,<3.0.0)
  found candidate python-dateutil==2.8.2 (constraint was >=2.7.3)
  found candidate pytz==2021.3 (constraint was >=2017.3)
  found candidate pyyaml==6.0 (constraint was <any>)
  found candidate requests==2.26.0 (constraint was >=2.18.0,<3.0.0dev)
  found candidate rich==10.16.1 (constraint was <any>)
  found candidate rsa==4.8 (constraint was >=3.1.4,<5)
  found candidate setuptools==60.1.0 (constraint was >=40.3.0)
  found candidate six==1.16.0 (constraint was >=1.11.0,>=1.5,>=1.9.0)
  found candidate smmap==5.0.0 (constraint was >=3.0.1,<6)
  found candidate telenium==0.5.0 (constraint was <any>)
  found candidate tempora==4.1.2 (constraint was >=1.8)
  found candidate typing-extensions==4.0.1 (constraint was >=3.7.4.3)
  found candidate urllib3==1.26.7 (constraint was >=1.21.1,<1.27)
  found candidate werkzeug==2.0.2 (constraint was >=0.12.2)
  found candidate ws4py==0.5.1 (constraint was >=0.4.2)
  found candidate zc.lockfile==2.0 (constraint was <any>)
  found candidate zipp==3.6.0 (constraint was >=3.1.0)

Finding secondary dependencies:
  cherrypy==18.6.1          requires cheroot>=8.2.1, jaraco.collections, more-itertools, portend>=2.1.1, zc.lockfile
  plotext==4.1.3            requires -
  psutil==5.8.0             requires -
  google-auth==2.3.3        requires cachetools<5.0,>=2.0.0, pyasn1-modules>=0.2.1, rsa<5,>=3.1.4; python_version >= "3.6", setuptools>=40.3.0, six>=1.9.0
  mako==1.1.6               requires MarkupSafe>=0.9.2
  zipp==3.6.0 not in cache, need to check index
  Collecting zipp==3.6.0
    Using cached zipp-3.6.0-py3-none-any.whl (5.3 kB)
  zipp==3.6.0               requires -
  certifi==2021.10.8        requires -
  google-cloud-core==2.2.1  requires google-api-core<3.0.0dev,>=1.21.0, google-auth<3.0dev,>=1.24.0
  six==1.16.0               requires -
  requests==2.26.0          requires certifi>=2017.4.17, charset-normalizer~=2.0.0; python_version >= "3", idna<4,>=2.5; python_version >= "3", urllib3<1.27,>=1.21.1
  pytz==2021.3              requires -
  charset-normalizer==2.0.9 requires -
  lark-parser==0.7.8        requires -
  pandas==1.3.5             requires numpy>=1.17.3; platform_machine != "aarch64" and platform_machine != "arm64" and python_version < "3.10", python-dateutil>=2.7.3, pytz>=2017.3
  tempora==4.1.2            requires jaraco.functools>=1.20, pytz
  more-itertools==8.12.0    requires -
  ws4py==0.5.1              requires -
  telenium==0.5.0           requires CherryPy>=10.2.1, json-rpc>=1.10.3, Mako>=1.0.6, Werkzeug>=0.12.2, ws4py>=0.4.2
  cachetools==4.2.4         requires -
  pygments==2.10.0          requires -
  rsa==4.8                  requires pyasn1>=0.1.3
  gitpython==3.1.24         requires gitdb<5,>=4.0.1, typing-extensions>=3.7.4.3; python_version < "3.10"
  jaraco.functools==3.5.0   requires more-itertools
  pickledb==0.9.2           requires -
  pyasn1-modules==0.2.8     requires pyasn1<0.5.0,>=0.4.6
  markupsafe==2.0.1         requires -
  rich==10.16.1             requires colorama<0.5.0,>=0.4.0, commonmark<0.10.0,>=0.9.0, pygments<3.0.0,>=2.6.0
  werkzeug==2.0.2           requires -
  zc.lockfile==2.0          requires setuptools
  googleapis-common-protos==1.54.0 requires protobuf>=3.12.0
  google-crc32c==1.3.0      requires -
  numpy==1.21.5             requires -
  portend==3.1.0            requires tempora>=1.8
  cheroot==8.5.2            requires jaraco.functools, more-itertools>=2.6, six>=1.11.0
  setuptools==60.1.0        requires -
  typing-extensions==4.0.1  requires -
  pyasn1==0.4.8             requires -
  importlib-resources==5.4.0 requires zipp>=3.1.0; python_version < "3.10"
  google-api-core==2.3.2    requires google-auth<3.0dev,>=1.25.0, googleapis-common-protos<2.0dev,>=1.52.0, protobuf>=3.12.0, requests<3.0.0dev,>=2.18.0, setuptools>=40.3.0
  google-resumable-media==2.1.0 requires google-crc32c<2.0dev,>=1.0
  google-cloud-storage==1.43.0 requires google-api-core<3.0dev,>=1.29.0; python_version >= "3.6", google-auth<3.0dev,>=1.25.0; python_version >= "3.6", google-cloud-core<3.0dev,>=1.6.0; python_version >= "3.6", google-resumable-media<3.0dev,>=1.3.0; python_version >= "3.6", protobuf; python_version >= "3.6", requests<3.0.0dev,>=2.18.0, six
  gputil==1.4.0             requires -
  json-rpc==1.13.0          requires -
  commentjson==0.9.0        requires lark-parser<0.8.0,>=0.7.1
  pillow==8.4.0             requires -
  protobuf==3.19.1          requires -
  colorama==0.4.4           requires -
  mle-monitor==0.0.1        requires commentjson, dotmap, GitPython, google-cloud-storage, gputil, numpy, pandas, pickledb, Pillow, plotext, psutil, pyyaml, rich
  dotmap==1.3.26            requires -
  jaraco.collections==3.4.0 requires jaraco.classes, jaraco.text
  gitdb==4.0.9              requires smmap<6,>=3.0.1
  urllib3==1.26.7           requires -
  idna==3.3                 requires -
  commonmark==0.9.1         requires -
  jaraco.classes==3.2.1     requires more-itertools
  jaraco.text==3.6.0        requires importlib-resources; python_version < "3.9", jaraco.functools
  python-dateutil==2.8.2    requires six>=1.5
  smmap==5.0.0              requires -
  pyyaml==6.0               requires -
------------------------------------------------------------
Result of round 6: stable, done

#
# This file is autogenerated by pip-compile with python 3.8
# To update, run:
#
#    pip-compile --annotation-style=line
#
cachetools==4.2.4         # via google-auth
certifi==2021.10.8        # via requests
charset-normalizer==2.0.9  # via requests
cheroot==8.5.2            # via cherrypy
cherrypy==18.6.1          # via telenium
colorama==0.4.4           # via rich
commentjson==0.9.0        # via mle-monitor
commonmark==0.9.1         # via rich
dotmap==1.3.26            # via mle-monitor
gitdb==4.0.9              # via gitpython
gitpython==3.1.24         # via mle-monitor
google-api-core==2.3.2    # via google-cloud-core, google-cloud-storage
google-auth==2.3.3        # via google-api-core, google-cloud-core, google-cloud-storage
google-cloud-core==2.2.1  # via google-cloud-storage
google-cloud-storage==1.43.0  # via mle-monitor
google-crc32c==1.3.0      # via google-resumable-media
google-resumable-media==2.1.0  # via google-cloud-storage
googleapis-common-protos==1.54.0  # via google-api-core
gputil==1.4.0             # via mle-monitor
idna==3.3                 # via requests
importlib-resources==5.4.0  # via jaraco.text
jaraco.classes==3.2.1     # via jaraco.collections
jaraco.collections==3.4.0  # via cherrypy
jaraco.functools==3.5.0   # via cheroot, jaraco.text, tempora
jaraco.text==3.6.0        # via jaraco.collections
json-rpc==1.13.0          # via telenium
lark-parser==0.7.8        # via commentjson
mako==1.1.6               # via telenium
markupsafe==2.0.1         # via mako
mle-monitor==0.0.1        # via -r requirements.in
more-itertools==8.12.0    # via cheroot, cherrypy, jaraco.classes, jaraco.functools
numpy==1.21.5             # via mle-monitor, pandas
pandas==1.3.5             # via mle-monitor
pickledb==0.9.2           # via mle-monitor
pillow==8.4.0             # via mle-monitor
plotext==4.1.3            # via mle-monitor
portend==3.1.0            # via cherrypy
protobuf==3.19.1          # via google-api-core, google-cloud-storage, googleapis-common-protos
psutil==5.8.0             # via mle-monitor
pyasn1==0.4.8             # via pyasn1-modules, rsa
pyasn1-modules==0.2.8     # via google-auth
pygments==2.10.0          # via rich
python-dateutil==2.8.2    # via pandas
pytz==2021.3              # via pandas, tempora
pyyaml==6.0               # via mle-monitor
requests==2.26.0          # via google-api-core, google-cloud-storage
rich==10.16.1             # via mle-monitor
rsa==4.8                  # via google-auth
six==1.16.0               # via cheroot, google-auth, google-cloud-storage, python-dateutil
smmap==5.0.0              # via gitdb
telenium==0.5.0           # via -r requirements.in
tempora==4.1.2            # via portend
typing-extensions==4.0.1  # via gitpython
urllib3==1.26.7           # via requests
werkzeug==2.0.2           # via telenium
ws4py==0.5.1              # via telenium
zc.lockfile==2.0          # via cherrypy
zipp==3.6.0               # via importlib-resources

# The following packages are considered to be unsafe in a requirements file:
# setuptools
Dry-run, so nothing updated.

While pip-compile has generously provided us with the exact version of each package would get installed (e.g. pandas==1.3.5) if we used pip install, using these versions sometimes breaks recipes. For e.g., with pandas==1.3.5, I get the following error message when I try to build my application:

[INFO]:    Applying patches for pandas[armeabi-v7a]
[INFO]:    Applying patch fix_numpy_includes.patch
[INFO]:    -> running patch -t -d /home/pdallair/dev/PycharmProjects/PythonForAndroid/TestApp/.buildozer/android/platform/build-armeabi-v7a/build/other_builds/pandas/armeabi-v7a__ndk_target_21/pandas -p1 -i /home/pdallair/dev/PycharmProjects/PythonForAndroid/TestApp/.buildozer/android/p...(and 83 more)
           working: 2 out of 2 hunks FAILED -- saving rejects to file setup.py.rej                                                                                                                                                                                                                                        Exception in thread background thread for pid 1215227:
Traceback (most recent call last):
  File "/home/pdallair/anaconda3/envs/p4a-dev/lib/python3.8/threading.py", line 932, in _bootstrap_inner
    self.run()
  File "/home/pdallair/anaconda3/envs/p4a-dev/lib/python3.8/threading.py", line 870, in run
    self._target(*self._args, **self._kwargs)
  File "/home/pdallair/anaconda3/envs/p4a-dev/lib/python3.8/site-packages/sh.py", line 1683, in wrap
    fn(*rgs, **kwargs)
  File "/home/pdallair/anaconda3/envs/p4a-dev/lib/python3.8/site-packages/sh.py", line 2662, in background_thread
    handle_exit_code(exit_code)
  File "/home/pdallair/anaconda3/envs/p4a-dev/lib/python3.8/site-packages/sh.py", line 2349, in fn
    return self.command.handle_command_exit_code(exit_code)
  File "/home/pdallair/anaconda3/envs/p4a-dev/lib/python3.8/site-packages/sh.py", line 905, in handle_command_exit_code
    raise exc
sh.ErrorReturnCode_1: 

  RAN: /usr/bin/patch -t -d /home/pdallair/dev/PycharmProjects/PythonForAndroid/TestApp/.buildozer/android/platform/build-armeabi-v7a/build/other_builds/pandas/armeabi-v7a__ndk_target_21/pandas -p1 -i /home/pdallair/dev/PycharmProjects/PythonForAndroid/TestApp/.buildozer/android/platform/python-for-android/pythonforandroid/recipes/pandas/fix_numpy_includes.patch

  STDOUT:
patching file setup.py
Hunk #1 FAILED at 37.
Hunk #2 FAILED at 514.
2 out of 2 hunks FAILED -- saving rejects to file setup.py.rej

I believe I have reason to suspect that the pandas recipe, that installs version 1.0.3 by default, doesn't support the latest version. I wouldn't be surprised if this would happen with other recipes as well. Removing the version constraints deduced by pip-compile for recipes — effectively letting said recipes choose which versions to install — does work in this case. However, I'm afraid that might not always be the case. At some point we may run into a case where other requirement may need features or fixes only available in the version specified in pip-compile output.

So, how should I handle this? I'm afraid this might be another can of worms and I'm tempted to cut corners for now, letting the recipes choose which versions to install... but ideally which versions specified shouldn't be a problem for python-for-android but I don't know how to achieve this, nevermind how challenging this might get. Any opinions/suggestions?

OrangeDog commented 2 years ago

Yes, most of the recipes are currently out of date and you cannot use the latest version. A couple even fail if you specify the version that they’d use anyway.

That’s a problem that exists already if you need a newer version, so your changes wouldn’t make it worse.

I think you’d just have to special-case the ones that don’t work for the moment, and hopefully the recipes get updated at some point.

On 24 Dec 2021, at 18:55, Patrick Dallaire @.***> wrote:

 Hey folks. I'm almost done with this fix. I've pushed commits to my forked repository if you want to check them out. However there is one thing I've noticed that I'd like to get your input on before submitting the PR.

A bit of context first: To compile the expanded list of I use the pip-compile command from jazzband/pip-tools. Here's an example of it's usage:

@.***$ echo -e "mle-monitor\ntelenium" > requirements.in && pip-compile -v --dry-run --annotation-style=line && rm requirements.in Using indexes: https://pypi.org/simple

                      ROUND 1                           

Current constraints: mle-monitor (from -r requirements.in (line 1)) telenium (from -r requirements.in (line 2))

Finding the best candidates: found candidate mle-monitor==0.0.1 (constraint was ) found candidate telenium==0.5.0 (constraint was )

Finding secondary dependencies: telenium==0.5.0 not in cache, need to check index Collecting telenium==0.5.0 Using cached telenium-0.5.0-py2.py3-none-any.whl (332 kB) telenium==0.5.0 requires CherryPy>=10.2.1, json-rpc>=1.10.3, Mako>=1.0.6, Werkzeug>=0.12.2, ws4py>=0.4.2 mle-monitor==0.0.1 requires commentjson, dotmap, GitPython, google-cloud-storage, gputil, numpy, pandas, pickledb, Pillow, plotext, psutil, pyyaml, rich

New dependencies found in this round: adding ('cherrypy', '>=10.2.1', []) adding ('commentjson', '', []) adding ('dotmap', '', []) adding ('gitpython', '', []) adding ('google-cloud-storage', '', []) adding ('gputil', '', []) adding ('json-rpc', '>=1.10.3', []) adding ('mako', '>=1.0.6', []) adding ('numpy', '', []) adding ('pandas', '', []) adding ('pickledb', '', []) adding ('pillow', '', []) adding ('plotext', '', []) adding ('psutil', '', []) adding ('pyyaml', '', []) adding ('rich', '', []) adding ('werkzeug', '>=0.12.2', []) adding ('ws4py', '>=0.4.2', []) Removed dependencies in this round:

Result of round 1: not stable

                      ROUND 2                           

Current constraints: CherryPy>=10.2.1 (from telenium==0.5.0->-r requirements.in (line 2)) commentjson (from mle-monitor==0.0.1->-r requirements.in (line 1)) dotmap (from mle-monitor==0.0.1->-r requirements.in (line 1)) GitPython (from mle-monitor==0.0.1->-r requirements.in (line 1)) google-cloud-storage (from mle-monitor==0.0.1->-r requirements.in (line 1)) gputil (from mle-monitor==0.0.1->-r requirements.in (line 1)) json-rpc>=1.10.3 (from telenium==0.5.0->-r requirements.in (line 2)) Mako>=1.0.6 (from telenium==0.5.0->-r requirements.in (line 2)) mle-monitor (from -r requirements.in (line 1)) numpy (from mle-monitor==0.0.1->-r requirements.in (line 1)) pandas (from mle-monitor==0.0.1->-r requirements.in (line 1)) pickledb (from mle-monitor==0.0.1->-r requirements.in (line 1)) Pillow (from mle-monitor==0.0.1->-r requirements.in (line 1)) plotext (from mle-monitor==0.0.1->-r requirements.in (line 1)) psutil (from mle-monitor==0.0.1->-r requirements.in (line 1)) pyyaml (from mle-monitor==0.0.1->-r requirements.in (line 1)) rich (from mle-monitor==0.0.1->-r requirements.in (line 1)) telenium (from -r requirements.in (line 2)) Werkzeug>=0.12.2 (from telenium==0.5.0->-r requirements.in (line 2)) ws4py>=0.4.2 (from telenium==0.5.0->-r requirements.in (line 2))

Finding the best candidates: found candidate cherrypy==18.6.1 (constraint was >=10.2.1) found candidate commentjson==0.9.0 (constraint was ) found candidate dotmap==1.3.26 (constraint was ) found candidate gitpython==3.1.24 (constraint was ) found candidate google-cloud-storage==1.43.0 (constraint was ) found candidate gputil==1.4.0 (constraint was ) found candidate json-rpc==1.13.0 (constraint was >=1.10.3) found candidate mako==1.1.6 (constraint was >=1.0.6) found candidate mle-monitor==0.0.1 (constraint was ) found candidate numpy==1.21.5 (constraint was ) found candidate pandas==1.3.5 (constraint was ) found candidate pickledb==0.9.2 (constraint was ) found candidate pillow==8.4.0 (constraint was ) found candidate plotext==4.1.3 (constraint was ) found candidate psutil==5.8.0 (constraint was ) found candidate pyyaml==6.0 (constraint was ) found candidate rich==10.16.1 (constraint was ) found candidate telenium==0.5.0 (constraint was ) found candidate werkzeug==2.0.2 (constraint was >=0.12.2) found candidate ws4py==0.5.1 (constraint was >=0.4.2)

Finding secondary dependencies: dotmap==1.3.26 requires - rich==10.16.1 requires colorama<0.5.0,>=0.4.0, commonmark<0.10.0,>=0.9.0, pygments<3.0.0,>=2.6.0 pillow==8.4.0 requires - numpy==1.21.5 requires - pickledb==0.9.2 requires - cherrypy==18.6.1 not in cache, need to check index Collecting CherryPy==18.6.1 Using cached CherryPy-18.6.1-py2.py3-none-any.whl (419 kB) cherrypy==18.6.1 requires cheroot>=8.2.1, jaraco.collections, more-itertools, portend>=2.1.1, zc.lockfile mako==1.1.6 not in cache, need to check index Collecting Mako==1.1.6 Using cached Mako-1.1.6-py2.py3-none-any.whl (75 kB) mako==1.1.6 requires MarkupSafe>=0.9.2 json-rpc==1.13.0 not in cache, need to check index Collecting json-rpc==1.13.0 Using cached json_rpc-1.13.0-py2.py3-none-any.whl (41 kB) json-rpc==1.13.0 requires - pyyaml==6.0 requires - google-cloud-storage==1.43.0 requires google-api-core<3.0dev,>=1.29.0; python_version >= "3.6", google-auth<3.0dev,>=1.25.0; python_version >= "3.6", google-cloud-core<3.0dev,>=1.6.0; python_version >= "3.6", google-resumable-media<3.0dev,>=1.3.0; python_version >= "3.6", protobuf; python_version >= "3.6", requests<3.0.0dev,>=2.18.0, six telenium==0.5.0 requires CherryPy>=10.2.1, json-rpc>=1.10.3, Mako>=1.0.6, Werkzeug>=0.12.2, ws4py>=0.4.2 gputil==1.4.0 requires - ws4py==0.5.1 not in cache, need to check index Collecting ws4py==0.5.1 Using cached ws4py-0.5.1.tar.gz (51 kB) ws4py==0.5.1 requires - werkzeug==2.0.2 not in cache, need to check index Collecting Werkzeug==2.0.2 Using cached Werkzeug-2.0.2-py3-none-any.whl (288 kB) werkzeug==2.0.2 requires - psutil==5.8.0 requires - gitpython==3.1.24 requires gitdb<5,>=4.0.1, typing-extensions>=3.7.4.3; python_version < "3.10" commentjson==0.9.0 requires lark-parser<0.8.0,>=0.7.1 pandas==1.3.5 requires numpy>=1.17.3; platform_machine != "aarch64" and platform_machine != "arm64" and python_version < "3.10", python-dateutil>=2.7.3, pytz>=2017.3 mle-monitor==0.0.1 requires commentjson, dotmap, GitPython, google-cloud-storage, gputil, numpy, pandas, pickledb, Pillow, plotext, psutil, pyyaml, rich plotext==4.1.3 requires -

New dependencies found in this round: adding ('cheroot', '>=8.2.1', []) adding ('colorama', '<0.5.0,>=0.4.0', []) adding ('commonmark', '<0.10.0,>=0.9.0', []) adding ('gitdb', '<5,>=4.0.1', []) adding ('google-api-core', '<3.0dev,>=1.29.0', []) adding ('google-auth', '<3.0dev,>=1.25.0', []) adding ('google-cloud-core', '<3.0dev,>=1.6.0', []) adding ('google-resumable-media', '<3.0dev,>=1.3.0', []) adding ('jaraco.collections', '', []) adding ('lark-parser', '<0.8.0,>=0.7.1', []) adding ('markupsafe', '>=0.9.2', []) adding ('more-itertools', '', []) adding ('numpy', '>=1.17.3', []) adding ('portend', '>=2.1.1', []) adding ('protobuf', '', []) adding ('pygments', '<3.0.0,>=2.6.0', []) adding ('python-dateutil', '>=2.7.3', []) adding ('pytz', '>=2017.3', []) adding ('requests', '<3.0.0dev,>=2.18.0', []) adding ('six', '', []) adding ('typing-extensions', '>=3.7.4.3', []) adding ('zc.lockfile', '', []) Removed dependencies in this round: removing ('numpy', '', [])

Result of round 2: not stable

                      ROUND 3                           

Current constraints: cheroot>=8.2.1 (from CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2)) CherryPy>=10.2.1 (from telenium==0.5.0->-r requirements.in (line 2)) colorama<0.5.0,>=0.4.0 (from rich==10.16.1->mle-monitor==0.0.1->-r requirements.in (line 1)) commentjson (from mle-monitor==0.0.1->-r requirements.in (line 1)) commonmark<0.10.0,>=0.9.0 (from rich==10.16.1->mle-monitor==0.0.1->-r requirements.in (line 1)) dotmap (from mle-monitor==0.0.1->-r requirements.in (line 1)) gitdb<5,>=4.0.1 (from GitPython==3.1.24->mle-monitor==0.0.1->-r requirements.in (line 1)) GitPython (from mle-monitor==0.0.1->-r requirements.in (line 1)) google-api-core<3.0dev,>=1.29.0 (from google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1)) google-auth<3.0dev,>=1.25.0 (from google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1)) google-cloud-core<3.0dev,>=1.6.0 (from google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1)) google-cloud-storage (from mle-monitor==0.0.1->-r requirements.in (line 1)) google-resumable-media<3.0dev,>=1.3.0 (from google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1)) gputil (from mle-monitor==0.0.1->-r requirements.in (line 1)) jaraco.collections (from CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2)) json-rpc>=1.10.3 (from telenium==0.5.0->-r requirements.in (line 2)) lark-parser<0.8.0,>=0.7.1 (from commentjson==0.9.0->mle-monitor==0.0.1->-r requirements.in (line 1)) Mako>=1.0.6 (from telenium==0.5.0->-r requirements.in (line 2)) MarkupSafe>=0.9.2 (from Mako==1.1.6->telenium==0.5.0->-r requirements.in (line 2)) mle-monitor (from -r requirements.in (line 1)) more-itertools (from CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2)) numpy>=1.17.3 (from mle-monitor==0.0.1->-r requirements.in (line 1)) pandas (from mle-monitor==0.0.1->-r requirements.in (line 1)) pickledb (from mle-monitor==0.0.1->-r requirements.in (line 1)) Pillow (from mle-monitor==0.0.1->-r requirements.in (line 1)) plotext (from mle-monitor==0.0.1->-r requirements.in (line 1)) portend>=2.1.1 (from CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2)) protobuf (from google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1)) psutil (from mle-monitor==0.0.1->-r requirements.in (line 1)) pygments<3.0.0,>=2.6.0 (from rich==10.16.1->mle-monitor==0.0.1->-r requirements.in (line 1)) python-dateutil>=2.7.3 (from pandas==1.3.5->mle-monitor==0.0.1->-r requirements.in (line 1)) pytz>=2017.3 (from pandas==1.3.5->mle-monitor==0.0.1->-r requirements.in (line 1)) pyyaml (from mle-monitor==0.0.1->-r requirements.in (line 1)) requests<3.0.0dev,>=2.18.0 (from google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1)) rich (from mle-monitor==0.0.1->-r requirements.in (line 1)) six (from google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1)) telenium (from -r requirements.in (line 2)) typing-extensions>=3.7.4.3 (from GitPython==3.1.24->mle-monitor==0.0.1->-r requirements.in (line 1)) Werkzeug>=0.12.2 (from telenium==0.5.0->-r requirements.in (line 2)) ws4py>=0.4.2 (from telenium==0.5.0->-r requirements.in (line 2)) zc.lockfile (from CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2))

Finding the best candidates: found candidate cheroot==8.5.2 (constraint was >=8.2.1) found candidate cherrypy==18.6.1 (constraint was >=10.2.1) found candidate colorama==0.4.4 (constraint was >=0.4.0,<0.5.0) found candidate commentjson==0.9.0 (constraint was ) found candidate commonmark==0.9.1 (constraint was <0.10.0,>=0.9.0) found candidate dotmap==1.3.26 (constraint was ) found candidate gitdb==4.0.9 (constraint was >=4.0.1,<5) found candidate gitpython==3.1.24 (constraint was ) found candidate google-api-core==2.3.2 (constraint was >=1.29.0,<3.0dev) found candidate google-auth==2.3.3 (constraint was >=1.25.0,<3.0dev) found candidate google-cloud-core==2.2.1 (constraint was >=1.6.0,<3.0dev) found candidate google-cloud-storage==1.43.0 (constraint was ) found candidate google-resumable-media==2.1.0 (constraint was >=1.3.0,<3.0dev) found candidate gputil==1.4.0 (constraint was ) found candidate jaraco.collections==3.4.0 (constraint was ) found candidate json-rpc==1.13.0 (constraint was >=1.10.3) found candidate lark-parser==0.7.8 (constraint was >=0.7.1,<0.8.0) found candidate mako==1.1.6 (constraint was >=1.0.6) found candidate markupsafe==2.0.1 (constraint was >=0.9.2) found candidate mle-monitor==0.0.1 (constraint was ) found candidate more-itertools==8.12.0 (constraint was ) found candidate numpy==1.21.5 (constraint was >=1.17.3) found candidate pandas==1.3.5 (constraint was ) found candidate pickledb==0.9.2 (constraint was ) found candidate pillow==8.4.0 (constraint was ) found candidate plotext==4.1.3 (constraint was ) found candidate portend==3.1.0 (constraint was >=2.1.1) found candidate protobuf==3.19.1 (constraint was ) found candidate psutil==5.8.0 (constraint was ) found candidate pygments==2.10.0 (constraint was >=2.6.0,<3.0.0) found candidate python-dateutil==2.8.2 (constraint was >=2.7.3) found candidate pytz==2021.3 (constraint was >=2017.3) found candidate pyyaml==6.0 (constraint was ) found candidate requests==2.26.0 (constraint was >=2.18.0,<3.0.0dev) found candidate rich==10.16.1 (constraint was ) found candidate six==1.16.0 (constraint was ) found candidate telenium==0.5.0 (constraint was ) found candidate typing-extensions==4.0.1 (constraint was >=3.7.4.3) found candidate werkzeug==2.0.2 (constraint was >=0.12.2) found candidate ws4py==0.5.1 (constraint was >=0.4.2) found candidate zc.lockfile==2.0 (constraint was )

Finding secondary dependencies: google-resumable-media==2.1.0 requires google-crc32c<2.0dev,>=1.0 rich==10.16.1 requires colorama<0.5.0,>=0.4.0, commonmark<0.10.0,>=0.9.0, pygments<3.0.0,>=2.6.0 gitdb==4.0.9 requires smmap<6,>=3.0.1 pandas==1.3.5 requires numpy>=1.17.3; platform_machine != "aarch64" and platform_machine != "arm64" and python_version < "3.10", python-dateutil>=2.7.3, pytz>=2017.3 psutil==5.8.0 requires - pyyaml==6.0 requires - zc.lockfile==2.0 not in cache, need to check index Collecting zc.lockfile==2.0 Using cached zc.lockfile-2.0-py2.py3-none-any.whl (9.7 kB) zc.lockfile==2.0 requires setuptools dotmap==1.3.26 requires - ws4py==0.5.1 requires - google-api-core==2.3.2 requires google-auth<3.0dev,>=1.25.0, googleapis-common-protos<2.0dev,>=1.52.0, protobuf>=3.12.0, requests<3.0.0dev,>=2.18.0, setuptools>=40.3.0 gitpython==3.1.24 requires gitdb<5,>=4.0.1, typing-extensions>=3.7.4.3; python_version < "3.10" lark-parser==0.7.8 requires - telenium==0.5.0 requires CherryPy>=10.2.1, json-rpc>=1.10.3, Mako>=1.0.6, Werkzeug>=0.12.2, ws4py>=0.4.2 pickledb==0.9.2 requires - cherrypy==18.6.1 requires cheroot>=8.2.1, jaraco.collections, more-itertools, portend>=2.1.1, zc.lockfile protobuf==3.19.1 requires - mako==1.1.6 requires MarkupSafe>=0.9.2 typing-extensions==4.0.1 requires - google-cloud-storage==1.43.0 requires google-api-core<3.0dev,>=1.29.0; python_version >= "3.6", google-auth<3.0dev,>=1.25.0; python_version >= "3.6", google-cloud-core<3.0dev,>=1.6.0; python_version >= "3.6", google-resumable-media<3.0dev,>=1.3.0; python_version >= "3.6", protobuf; python_version >= "3.6", requests<3.0.0dev,>=2.18.0, six json-rpc==1.13.0 requires - jaraco.collections==3.4.0 not in cache, need to check index Collecting jaraco.collections==3.4.0 Using cached jaraco.collections-3.4.0-py3-none-any.whl (10 kB) jaraco.collections==3.4.0 requires jaraco.classes, jaraco.text pillow==8.4.0 requires - pygments==2.10.0 requires - colorama==0.4.4 requires - numpy==1.21.5 requires - plotext==4.1.3 requires - pytz==2021.3 requires - werkzeug==2.0.2 requires - python-dateutil==2.8.2 requires six>=1.5 commonmark==0.9.1 requires - markupsafe==2.0.1 not in cache, need to check index Collecting MarkupSafe==2.0.1 Using cached MarkupSafe-2.0.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (30 kB) markupsafe==2.0.1 requires - commentjson==0.9.0 requires lark-parser<0.8.0,>=0.7.1 requests==2.26.0 requires certifi>=2017.4.17, charset-normalizer~=2.0.0; python_version >= "3", idna<4,>=2.5; python_version >= "3", urllib3<1.27,>=1.21.1 mle-monitor==0.0.1 requires commentjson, dotmap, GitPython, google-cloud-storage, gputil, numpy, pandas, pickledb, Pillow, plotext, psutil, pyyaml, rich six==1.16.0 requires - cheroot==8.5.2 not in cache, need to check index Collecting cheroot==8.5.2 Using cached cheroot-8.5.2-py2.py3-none-any.whl (97 kB) cheroot==8.5.2 requires jaraco.functools, more-itertools>=2.6, six>=1.11.0 google-cloud-core==2.2.1 requires google-api-core<3.0.0dev,>=1.21.0, google-auth<3.0dev,>=1.24.0 portend==3.1.0 not in cache, need to check index Collecting portend==3.1.0 Using cached portend-3.1.0-py3-none-any.whl (5.3 kB) portend==3.1.0 requires tempora>=1.8 more-itertools==8.12.0 not in cache, need to check index Collecting more-itertools==8.12.0 Using cached more_itertools-8.12.0-py3-none-any.whl (54 kB) more-itertools==8.12.0 requires - gputil==1.4.0 requires - google-auth==2.3.3 requires cachetools<5.0,>=2.0.0, pyasn1-modules>=0.2.1, rsa<5,>=3.1.4; python_version >= "3.6", setuptools>=40.3.0, six>=1.9.0

New dependencies found in this round: adding ('cachetools', '<5.0,>=2.0.0', []) adding ('certifi', '>=2017.4.17', []) adding ('charset-normalizer', '~=2.0.0', []) adding ('google-api-core', '<3.0dev,>=1.21.0,>=1.29.0', []) adding ('google-auth', '<3.0dev,>=1.24.0,>=1.25.0', []) adding ('google-crc32c', '<2.0dev,>=1.0', []) adding ('googleapis-common-protos', '<2.0dev,>=1.52.0', []) adding ('idna', '<4,>=2.5', []) adding ('jaraco.classes', '', []) adding ('jaraco.functools', '', []) adding ('jaraco.text', '', []) adding ('more-itertools', '>=2.6', []) adding ('protobuf', '>=3.12.0', []) adding ('pyasn1-modules', '>=0.2.1', []) adding ('rsa', '<5,>=3.1.4', []) adding ('setuptools', '>=40.3.0', []) adding ('six', '>=1.11.0,>=1.5,>=1.9.0', []) adding ('smmap', '<6,>=3.0.1', []) adding ('tempora', '>=1.8', []) adding ('urllib3', '<1.27,>=1.21.1', []) Removed dependencies in this round: removing ('google-api-core', '<3.0dev,>=1.29.0', []) removing ('google-auth', '<3.0dev,>=1.25.0', []) removing ('more-itertools', '', []) removing ('protobuf', '', []) removing ('six', '', [])

Result of round 3: not stable

                      ROUND 4                           

Current constraints: cachetools<5.0,>=2.0.0 (from google-auth==2.3.3->google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1)) certifi>=2017.4.17 (from requests==2.26.0->google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1)) charset-normalizer~=2.0.0 (from requests==2.26.0->google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1)) cheroot>=8.2.1 (from CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2)) CherryPy>=10.2.1 (from telenium==0.5.0->-r requirements.in (line 2)) colorama<0.5.0,>=0.4.0 (from rich==10.16.1->mle-monitor==0.0.1->-r requirements.in (line 1)) commentjson (from mle-monitor==0.0.1->-r requirements.in (line 1)) commonmark<0.10.0,>=0.9.0 (from rich==10.16.1->mle-monitor==0.0.1->-r requirements.in (line 1)) dotmap (from mle-monitor==0.0.1->-r requirements.in (line 1)) gitdb<5,>=4.0.1 (from GitPython==3.1.24->mle-monitor==0.0.1->-r requirements.in (line 1)) GitPython (from mle-monitor==0.0.1->-r requirements.in (line 1)) google-api-core<3.0dev,>=1.21.0,>=1.29.0 (from google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1)) google-auth<3.0dev,>=1.24.0,>=1.25.0 (from google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1)) google-cloud-core<3.0dev,>=1.6.0 (from google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1)) google-cloud-storage (from mle-monitor==0.0.1->-r requirements.in (line 1)) google-crc32c<2.0dev,>=1.0 (from google-resumable-media==2.1.0->google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1)) google-resumable-media<3.0dev,>=1.3.0 (from google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1)) googleapis-common-protos<2.0dev,>=1.52.0 (from google-api-core==2.3.2->google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1)) gputil (from mle-monitor==0.0.1->-r requirements.in (line 1)) idna<4,>=2.5 (from requests==2.26.0->google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1)) jaraco.classes (from jaraco.collections==3.4.0->CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2)) jaraco.collections (from CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2)) jaraco.functools (from cheroot==8.5.2->CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2)) jaraco.text (from jaraco.collections==3.4.0->CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2)) json-rpc>=1.10.3 (from telenium==0.5.0->-r requirements.in (line 2)) lark-parser<0.8.0,>=0.7.1 (from commentjson==0.9.0->mle-monitor==0.0.1->-r requirements.in (line 1)) Mako>=1.0.6 (from telenium==0.5.0->-r requirements.in (line 2)) MarkupSafe>=0.9.2 (from Mako==1.1.6->telenium==0.5.0->-r requirements.in (line 2)) mle-monitor (from -r requirements.in (line 1)) more-itertools>=2.6 (from CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2)) numpy>=1.17.3 (from mle-monitor==0.0.1->-r requirements.in (line 1)) pandas (from mle-monitor==0.0.1->-r requirements.in (line 1)) pickledb (from mle-monitor==0.0.1->-r requirements.in (line 1)) Pillow (from mle-monitor==0.0.1->-r requirements.in (line 1)) plotext (from mle-monitor==0.0.1->-r requirements.in (line 1)) portend>=2.1.1 (from CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2)) protobuf>=3.12.0 (from google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1)) psutil (from mle-monitor==0.0.1->-r requirements.in (line 1)) pyasn1-modules>=0.2.1 (from google-auth==2.3.3->google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1)) pygments<3.0.0,>=2.6.0 (from rich==10.16.1->mle-monitor==0.0.1->-r requirements.in (line 1)) python-dateutil>=2.7.3 (from pandas==1.3.5->mle-monitor==0.0.1->-r requirements.in (line 1)) pytz>=2017.3 (from pandas==1.3.5->mle-monitor==0.0.1->-r requirements.in (line 1)) pyyaml (from mle-monitor==0.0.1->-r requirements.in (line 1)) requests<3.0.0dev,>=2.18.0 (from google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1)) rich (from mle-monitor==0.0.1->-r requirements.in (line 1)) rsa<5,>=3.1.4 (from google-auth==2.3.3->google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1)) setuptools>=40.3.0 (from google-auth==2.3.3->google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1)) six>=1.11.0,>=1.5,>=1.9.0 (from google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1)) smmap<6,>=3.0.1 (from gitdb==4.0.9->GitPython==3.1.24->mle-monitor==0.0.1->-r requirements.in (line 1)) telenium (from -r requirements.in (line 2)) tempora>=1.8 (from portend==3.1.0->CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2)) typing-extensions>=3.7.4.3 (from GitPython==3.1.24->mle-monitor==0.0.1->-r requirements.in (line 1)) urllib3<1.27,>=1.21.1 (from requests==2.26.0->google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1)) Werkzeug>=0.12.2 (from telenium==0.5.0->-r requirements.in (line 2)) ws4py>=0.4.2 (from telenium==0.5.0->-r requirements.in (line 2)) zc.lockfile (from CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2))

Finding the best candidates: found candidate cachetools==4.2.4 (constraint was >=2.0.0,<5.0) found candidate certifi==2021.10.8 (constraint was >=2017.4.17) found candidate charset-normalizer==2.0.9 (constraint was ~=2.0.0) found candidate cheroot==8.5.2 (constraint was >=8.2.1) found candidate cherrypy==18.6.1 (constraint was >=10.2.1) found candidate colorama==0.4.4 (constraint was >=0.4.0,<0.5.0) found candidate commentjson==0.9.0 (constraint was ) found candidate commonmark==0.9.1 (constraint was <0.10.0,>=0.9.0) found candidate dotmap==1.3.26 (constraint was ) found candidate gitdb==4.0.9 (constraint was >=4.0.1,<5) found candidate gitpython==3.1.24 (constraint was ) found candidate google-api-core==2.3.2 (constraint was >=1.21.0,>=1.29.0,<3.0dev) found candidate google-auth==2.3.3 (constraint was >=1.24.0,>=1.25.0,<3.0dev) found candidate google-cloud-core==2.2.1 (constraint was >=1.6.0,<3.0dev) found candidate google-cloud-storage==1.43.0 (constraint was ) found candidate google-crc32c==1.3.0 (constraint was >=1.0,<2.0dev) found candidate google-resumable-media==2.1.0 (constraint was >=1.3.0,<3.0dev) found candidate googleapis-common-protos==1.54.0 (constraint was >=1.52.0,<2.0dev) found candidate gputil==1.4.0 (constraint was ) found candidate idna==3.3 (constraint was >=2.5,<4) found candidate jaraco.classes==3.2.1 (constraint was ) found candidate jaraco.collections==3.4.0 (constraint was ) found candidate jaraco.functools==3.5.0 (constraint was ) found candidate jaraco.text==3.6.0 (constraint was ) found candidate json-rpc==1.13.0 (constraint was >=1.10.3) found candidate lark-parser==0.7.8 (constraint was >=0.7.1,<0.8.0) found candidate mako==1.1.6 (constraint was >=1.0.6) found candidate markupsafe==2.0.1 (constraint was >=0.9.2) found candidate mle-monitor==0.0.1 (constraint was ) found candidate more-itertools==8.12.0 (constraint was >=2.6) found candidate numpy==1.21.5 (constraint was >=1.17.3) found candidate pandas==1.3.5 (constraint was ) found candidate pickledb==0.9.2 (constraint was ) found candidate pillow==8.4.0 (constraint was ) found candidate plotext==4.1.3 (constraint was ) found candidate portend==3.1.0 (constraint was >=2.1.1) found candidate protobuf==3.19.1 (constraint was >=3.12.0) found candidate psutil==5.8.0 (constraint was ) found candidate pyasn1-modules==0.2.8 (constraint was >=0.2.1) found candidate pygments==2.10.0 (constraint was >=2.6.0,<3.0.0) found candidate python-dateutil==2.8.2 (constraint was >=2.7.3) found candidate pytz==2021.3 (constraint was >=2017.3) found candidate pyyaml==6.0 (constraint was ) found candidate requests==2.26.0 (constraint was >=2.18.0,<3.0.0dev) found candidate rich==10.16.1 (constraint was ) found candidate rsa==4.8 (constraint was >=3.1.4,<5) found candidate setuptools==60.1.0 (constraint was >=40.3.0) found candidate six==1.16.0 (constraint was >=1.11.0,>=1.5,>=1.9.0) found candidate smmap==5.0.0 (constraint was >=3.0.1,<6) found candidate telenium==0.5.0 (constraint was ) found candidate tempora==4.1.2 (constraint was >=1.8) found candidate typing-extensions==4.0.1 (constraint was >=3.7.4.3) found candidate urllib3==1.26.7 (constraint was >=1.21.1,<1.27) found candidate werkzeug==2.0.2 (constraint was >=0.12.2) found candidate ws4py==0.5.1 (constraint was >=0.4.2) found candidate zc.lockfile==2.0 (constraint was )

Finding secondary dependencies: urllib3==1.26.7 requires - dotmap==1.3.26 requires - jaraco.classes==3.2.1 not in cache, need to check index Collecting jaraco.classes==3.2.1 Using cached jaraco.classes-3.2.1-py3-none-any.whl (5.6 kB) jaraco.classes==3.2.1 requires more-itertools protobuf==3.19.1 requires - jaraco.text==3.6.0 not in cache, need to check index Collecting jaraco.text==3.6.0 Using cached jaraco.text-3.6.0-py3-none-any.whl (8.1 kB) jaraco.text==3.6.0 requires importlib-resources; python_version < "3.9", jaraco.functools pickledb==0.9.2 requires - pyyaml==6.0 requires - more-itertools==8.12.0 requires - google-resumable-media==2.1.0 requires google-crc32c<2.0dev,>=1.0 pyasn1-modules==0.2.8 requires pyasn1<0.5.0,>=0.4.6 colorama==0.4.4 requires - certifi==2021.10.8 requires - mako==1.1.6 requires MarkupSafe>=0.9.2 werkzeug==2.0.2 requires - googleapis-common-protos==1.54.0 requires protobuf>=3.12.0 portend==3.1.0 requires tempora>=1.8 json-rpc==1.13.0 requires - pygments==2.10.0 requires - six==1.16.0 requires - google-auth==2.3.3 requires cachetools<5.0,>=2.0.0, pyasn1-modules>=0.2.1, rsa<5,>=3.1.4; python_version >= "3.6", setuptools>=40.3.0, six>=1.9.0 telenium==0.5.0 requires CherryPy>=10.2.1, json-rpc>=1.10.3, Mako>=1.0.6, Werkzeug>=0.12.2, ws4py>=0.4.2 lark-parser==0.7.8 requires - psutil==5.8.0 requires - typing-extensions==4.0.1 requires - rsa==4.8 requires pyasn1>=0.1.3 ws4py==0.5.1 requires - cherrypy==18.6.1 requires cheroot>=8.2.1, jaraco.collections, more-itertools, portend>=2.1.1, zc.lockfile plotext==4.1.3 requires - zc.lockfile==2.0 requires setuptools pandas==1.3.5 requires numpy>=1.17.3; platform_machine != "aarch64" and platform_machine != "arm64" and python_version < "3.10", python-dateutil>=2.7.3, pytz>=2017.3 gitdb==4.0.9 requires smmap<6,>=3.0.1 commentjson==0.9.0 requires lark-parser<0.8.0,>=0.7.1 markupsafe==2.0.1 requires - google-crc32c==1.3.0 requires - mle-monitor==0.0.1 requires commentjson, dotmap, GitPython, google-cloud-storage, gputil, numpy, pandas, pickledb, Pillow, plotext, psutil, pyyaml, rich gputil==1.4.0 requires - gitpython==3.1.24 requires gitdb<5,>=4.0.1, typing-extensions>=3.7.4.3; python_version < "3.10" google-cloud-core==2.2.1 requires google-api-core<3.0.0dev,>=1.21.0, google-auth<3.0dev,>=1.24.0 pytz==2021.3 requires - google-cloud-storage==1.43.0 requires google-api-core<3.0dev,>=1.29.0; python_version >= "3.6", google-auth<3.0dev,>=1.25.0; python_version >= "3.6", google-cloud-core<3.0dev,>=1.6.0; python_version >= "3.6", google-resumable-media<3.0dev,>=1.3.0; python_version >= "3.6", protobuf; python_version >= "3.6", requests<3.0.0dev,>=2.18.0, six jaraco.collections==3.4.0 requires jaraco.classes, jaraco.text commonmark==0.9.1 requires - pillow==8.4.0 requires - jaraco.functools==3.5.0 not in cache, need to check index Collecting jaraco.functools==3.5.0 Downloading jaraco.functools-3.5.0-py3-none-any.whl (7.0 kB) jaraco.functools==3.5.0 requires more-itertools python-dateutil==2.8.2 requires six>=1.5 setuptools==60.1.0 requires - smmap==5.0.0 requires - idna==3.3 requires - numpy==1.21.5 requires - charset-normalizer==2.0.9 requires - requests==2.26.0 requires certifi>=2017.4.17, charset-normalizer~=2.0.0; python_version >= "3", idna<4,>=2.5; python_version >= "3", urllib3<1.27,>=1.21.1 rich==10.16.1 requires colorama<0.5.0,>=0.4.0, commonmark<0.10.0,>=0.9.0, pygments<3.0.0,>=2.6.0 tempora==4.1.2 not in cache, need to check index Collecting tempora==4.1.2 Using cached tempora-4.1.2-py3-none-any.whl (15 kB) tempora==4.1.2 requires jaraco.functools>=1.20, pytz google-api-core==2.3.2 requires google-auth<3.0dev,>=1.25.0, googleapis-common-protos<2.0dev,>=1.52.0, protobuf>=3.12.0, requests<3.0.0dev,>=2.18.0, setuptools>=40.3.0 cheroot==8.5.2 requires jaraco.functools, more-itertools>=2.6, six>=1.11.0 cachetools==4.2.4 requires -

New dependencies found in this round: adding ('importlib-resources', '', []) adding ('jaraco.functools', '>=1.20', []) adding ('pyasn1', '<0.5.0,>=0.1.3,>=0.4.6', []) Removed dependencies in this round: removing ('jaraco.functools', '', [])

Result of round 4: not stable

                      ROUND 5                           

Current constraints: cachetools<5.0,>=2.0.0 (from google-auth==2.3.3->google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1)) certifi>=2017.4.17 (from requests==2.26.0->google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1)) charset-normalizer~=2.0.0 (from requests==2.26.0->google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1)) cheroot>=8.2.1 (from CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2)) CherryPy>=10.2.1 (from telenium==0.5.0->-r requirements.in (line 2)) colorama<0.5.0,>=0.4.0 (from rich==10.16.1->mle-monitor==0.0.1->-r requirements.in (line 1)) commentjson (from mle-monitor==0.0.1->-r requirements.in (line 1)) commonmark<0.10.0,>=0.9.0 (from rich==10.16.1->mle-monitor==0.0.1->-r requirements.in (line 1)) dotmap (from mle-monitor==0.0.1->-r requirements.in (line 1)) gitdb<5,>=4.0.1 (from GitPython==3.1.24->mle-monitor==0.0.1->-r requirements.in (line 1)) GitPython (from mle-monitor==0.0.1->-r requirements.in (line 1)) google-api-core<3.0.0dev,>=1.21.0,>=1.29.0 (from google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1)) google-auth<3.0dev,>=1.24.0,>=1.25.0 (from google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1)) google-cloud-core<3.0dev,>=1.6.0 (from google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1)) google-cloud-storage (from mle-monitor==0.0.1->-r requirements.in (line 1)) google-crc32c<2.0dev,>=1.0 (from google-resumable-media==2.1.0->google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1)) google-resumable-media<3.0dev,>=1.3.0 (from google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1)) googleapis-common-protos<2.0dev,>=1.52.0 (from google-api-core==2.3.2->google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1)) gputil (from mle-monitor==0.0.1->-r requirements.in (line 1)) idna<4,>=2.5 (from requests==2.26.0->google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1)) importlib-resources (from jaraco.text==3.6.0->jaraco.collections==3.4.0->CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2)) jaraco.classes (from jaraco.collections==3.4.0->CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2)) jaraco.collections (from CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2)) jaraco.functools>=1.20 (from cheroot==8.5.2->CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2)) jaraco.text (from jaraco.collections==3.4.0->CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2)) json-rpc>=1.10.3 (from telenium==0.5.0->-r requirements.in (line 2)) lark-parser<0.8.0,>=0.7.1 (from commentjson==0.9.0->mle-monitor==0.0.1->-r requirements.in (line 1)) Mako>=1.0.6 (from telenium==0.5.0->-r requirements.in (line 2)) MarkupSafe>=0.9.2 (from Mako==1.1.6->telenium==0.5.0->-r requirements.in (line 2)) mle-monitor (from -r requirements.in (line 1)) more-itertools>=2.6 (from CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2)) numpy>=1.17.3 (from mle-monitor==0.0.1->-r requirements.in (line 1)) pandas (from mle-monitor==0.0.1->-r requirements.in (line 1)) pickledb (from mle-monitor==0.0.1->-r requirements.in (line 1)) Pillow (from mle-monitor==0.0.1->-r requirements.in (line 1)) plotext (from mle-monitor==0.0.1->-r requirements.in (line 1)) portend>=2.1.1 (from CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2)) protobuf>=3.12.0 (from google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1)) psutil (from mle-monitor==0.0.1->-r requirements.in (line 1)) pyasn1<0.5.0,>=0.1.3,>=0.4.6 (from rsa==4.8->google-auth==2.3.3->google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1)) pyasn1-modules>=0.2.1 (from google-auth==2.3.3->google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1)) pygments<3.0.0,>=2.6.0 (from rich==10.16.1->mle-monitor==0.0.1->-r requirements.in (line 1)) python-dateutil>=2.7.3 (from pandas==1.3.5->mle-monitor==0.0.1->-r requirements.in (line 1)) pytz>=2017.3 (from pandas==1.3.5->mle-monitor==0.0.1->-r requirements.in (line 1)) pyyaml (from mle-monitor==0.0.1->-r requirements.in (line 1)) requests<3.0.0dev,>=2.18.0 (from google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1)) rich (from mle-monitor==0.0.1->-r requirements.in (line 1)) rsa<5,>=3.1.4 (from google-auth==2.3.3->google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1)) setuptools>=40.3.0 (from zc.lockfile==2.0->CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2)) six>=1.11.0,>=1.5,>=1.9.0 (from google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1)) smmap<6,>=3.0.1 (from gitdb==4.0.9->GitPython==3.1.24->mle-monitor==0.0.1->-r requirements.in (line 1)) telenium (from -r requirements.in (line 2)) tempora>=1.8 (from portend==3.1.0->CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2)) typing-extensions>=3.7.4.3 (from GitPython==3.1.24->mle-monitor==0.0.1->-r requirements.in (line 1)) urllib3<1.27,>=1.21.1 (from requests==2.26.0->google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1)) Werkzeug>=0.12.2 (from telenium==0.5.0->-r requirements.in (line 2)) ws4py>=0.4.2 (from telenium==0.5.0->-r requirements.in (line 2)) zc.lockfile (from CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2))

Finding the best candidates: found candidate cachetools==4.2.4 (constraint was >=2.0.0,<5.0) found candidate certifi==2021.10.8 (constraint was >=2017.4.17) found candidate charset-normalizer==2.0.9 (constraint was ~=2.0.0) found candidate cheroot==8.5.2 (constraint was >=8.2.1) found candidate cherrypy==18.6.1 (constraint was >=10.2.1) found candidate colorama==0.4.4 (constraint was >=0.4.0,<0.5.0) found candidate commentjson==0.9.0 (constraint was ) found candidate commonmark==0.9.1 (constraint was <0.10.0,>=0.9.0) found candidate dotmap==1.3.26 (constraint was ) found candidate gitdb==4.0.9 (constraint was >=4.0.1,<5) found candidate gitpython==3.1.24 (constraint was ) found candidate google-api-core==2.3.2 (constraint was >=1.21.0,>=1.29.0,<3.0.0dev) found candidate google-auth==2.3.3 (constraint was >=1.24.0,>=1.25.0,<3.0dev) found candidate google-cloud-core==2.2.1 (constraint was >=1.6.0,<3.0dev) found candidate google-cloud-storage==1.43.0 (constraint was ) found candidate google-crc32c==1.3.0 (constraint was >=1.0,<2.0dev) found candidate google-resumable-media==2.1.0 (constraint was >=1.3.0,<3.0dev) found candidate googleapis-common-protos==1.54.0 (constraint was >=1.52.0,<2.0dev) found candidate gputil==1.4.0 (constraint was ) found candidate idna==3.3 (constraint was >=2.5,<4) found candidate importlib-resources==5.4.0 (constraint was ) found candidate jaraco.classes==3.2.1 (constraint was ) found candidate jaraco.collections==3.4.0 (constraint was ) found candidate jaraco.functools==3.5.0 (constraint was >=1.20) found candidate jaraco.text==3.6.0 (constraint was ) found candidate json-rpc==1.13.0 (constraint was >=1.10.3) found candidate lark-parser==0.7.8 (constraint was >=0.7.1,<0.8.0) found candidate mako==1.1.6 (constraint was >=1.0.6) found candidate markupsafe==2.0.1 (constraint was >=0.9.2) found candidate mle-monitor==0.0.1 (constraint was ) found candidate more-itertools==8.12.0 (constraint was >=2.6) found candidate numpy==1.21.5 (constraint was >=1.17.3) found candidate pandas==1.3.5 (constraint was ) found candidate pickledb==0.9.2 (constraint was ) found candidate pillow==8.4.0 (constraint was ) found candidate plotext==4.1.3 (constraint was ) found candidate portend==3.1.0 (constraint was >=2.1.1) found candidate protobuf==3.19.1 (constraint was >=3.12.0) found candidate psutil==5.8.0 (constraint was ) found candidate pyasn1==0.4.8 (constraint was >=0.1.3,>=0.4.6,<0.5.0) found candidate pyasn1-modules==0.2.8 (constraint was >=0.2.1) found candidate pygments==2.10.0 (constraint was >=2.6.0,<3.0.0) found candidate python-dateutil==2.8.2 (constraint was >=2.7.3) found candidate pytz==2021.3 (constraint was >=2017.3) found candidate pyyaml==6.0 (constraint was ) found candidate requests==2.26.0 (constraint was >=2.18.0,<3.0.0dev) found candidate rich==10.16.1 (constraint was ) found candidate rsa==4.8 (constraint was >=3.1.4,<5) found candidate setuptools==60.1.0 (constraint was >=40.3.0) found candidate six==1.16.0 (constraint was >=1.11.0,>=1.5,>=1.9.0) found candidate smmap==5.0.0 (constraint was >=3.0.1,<6) found candidate telenium==0.5.0 (constraint was ) found candidate tempora==4.1.2 (constraint was >=1.8) found candidate typing-extensions==4.0.1 (constraint was >=3.7.4.3) found candidate urllib3==1.26.7 (constraint was >=1.21.1,<1.27) found candidate werkzeug==2.0.2 (constraint was >=0.12.2) found candidate ws4py==0.5.1 (constraint was >=0.4.2) found candidate zc.lockfile==2.0 (constraint was )

Finding secondary dependencies: tempora==4.1.2 requires jaraco.functools>=1.20, pytz google-cloud-core==2.2.1 requires google-api-core<3.0.0dev,>=1.21.0, google-auth<3.0dev,>=1.24.0 google-api-core==2.3.2 requires google-auth<3.0dev,>=1.25.0, googleapis-common-protos<2.0dev,>=1.52.0, protobuf>=3.12.0, requests<3.0.0dev,>=2.18.0, setuptools>=40.3.0 google-crc32c==1.3.0 requires - mako==1.1.6 requires MarkupSafe>=0.9.2 numpy==1.21.5 requires - pyasn1-modules==0.2.8 requires pyasn1<0.5.0,>=0.4.6 rich==10.16.1 requires colorama<0.5.0,>=0.4.0, commonmark<0.10.0,>=0.9.0, pygments<3.0.0,>=2.6.0 smmap==5.0.0 requires - typing-extensions==4.0.1 requires - google-resumable-media==2.1.0 requires google-crc32c<2.0dev,>=1.0 mle-monitor==0.0.1 requires commentjson, dotmap, GitPython, google-cloud-storage, gputil, numpy, pandas, pickledb, Pillow, plotext, psutil, pyyaml, rich jaraco.collections==3.4.0 requires jaraco.classes, jaraco.text gitdb==4.0.9 requires smmap<6,>=3.0.1 gputil==1.4.0 requires - jaraco.functools==3.5.0 requires more-itertools pyyaml==6.0 requires - certifi==2021.10.8 requires - gitpython==3.1.24 requires gitdb<5,>=4.0.1, typing-extensions>=3.7.4.3; python_version < "3.10" setuptools==60.1.0 requires - dotmap==1.3.26 requires - commonmark==0.9.1 requires - commentjson==0.9.0 requires lark-parser<0.8.0,>=0.7.1 cheroot==8.5.2 requires jaraco.functools, more-itertools>=2.6, six>=1.11.0 python-dateutil==2.8.2 requires six>=1.5 ws4py==0.5.1 requires - rsa==4.8 requires pyasn1>=0.1.3 googleapis-common-protos==1.54.0 requires protobuf>=3.12.0 json-rpc==1.13.0 requires - psutil==5.8.0 requires - telenium==0.5.0 requires CherryPy>=10.2.1, json-rpc>=1.10.3, Mako>=1.0.6, Werkzeug>=0.12.2, ws4py>=0.4.2 urllib3==1.26.7 requires - jaraco.classes==3.2.1 requires more-itertools jaraco.text==3.6.0 requires importlib-resources; python_version < "3.9", jaraco.functools pytz==2021.3 requires - importlib-resources==5.4.0 not in cache, need to check index Collecting importlib-resources==5.4.0 Using cached importlib_resources-5.4.0-py3-none-any.whl (28 kB) importlib-resources==5.4.0 requires zipp>=3.1.0; python_version < "3.10" werkzeug==2.0.2 requires - portend==3.1.0 requires tempora>=1.8 pygments==2.10.0 requires - plotext==4.1.3 requires - lark-parser==0.7.8 requires - requests==2.26.0 requires certifi>=2017.4.17, charset-normalizer~=2.0.0; python_version >= "3", idna<4,>=2.5; python_version >= "3", urllib3<1.27,>=1.21.1 cachetools==4.2.4 requires - google-auth==2.3.3 requires cachetools<5.0,>=2.0.0, pyasn1-modules>=0.2.1, rsa<5,>=3.1.4; python_version >= "3.6", setuptools>=40.3.0, six>=1.9.0 pyasn1==0.4.8 requires - colorama==0.4.4 requires - pandas==1.3.5 requires numpy>=1.17.3; platform_machine != "aarch64" and platform_machine != "arm64" and python_version < "3.10", python-dateutil>=2.7.3, pytz>=2017.3 pickledb==0.9.2 requires - cherrypy==18.6.1 requires cheroot>=8.2.1, jaraco.collections, more-itertools, portend>=2.1.1, zc.lockfile idna==3.3 requires - pillow==8.4.0 requires - six==1.16.0 requires - more-itertools==8.12.0 requires - zc.lockfile==2.0 requires setuptools protobuf==3.19.1 requires - google-cloud-storage==1.43.0 requires google-api-core<3.0dev,>=1.29.0; python_version >= "3.6", google-auth<3.0dev,>=1.25.0; python_version >= "3.6", google-cloud-core<3.0dev,>=1.6.0; python_version >= "3.6", google-resumable-media<3.0dev,>=1.3.0; python_version >= "3.6", protobuf; python_version >= "3.6", requests<3.0.0dev,>=2.18.0, six markupsafe==2.0.1 requires - charset-normalizer==2.0.9 requires -

New dependencies found in this round: adding ('zipp', '>=3.1.0', []) Removed dependencies in this round:

Result of round 5: not stable

                      ROUND 6                           

Current constraints: cachetools<5.0,>=2.0.0 (from google-auth==2.3.3->google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1)) certifi>=2017.4.17 (from requests==2.26.0->google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1)) charset-normalizer~=2.0.0 (from requests==2.26.0->google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1)) cheroot>=8.2.1 (from CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2)) CherryPy>=10.2.1 (from telenium==0.5.0->-r requirements.in (line 2)) colorama<0.5.0,>=0.4.0 (from rich==10.16.1->mle-monitor==0.0.1->-r requirements.in (line 1)) commentjson (from mle-monitor==0.0.1->-r requirements.in (line 1)) commonmark<0.10.0,>=0.9.0 (from rich==10.16.1->mle-monitor==0.0.1->-r requirements.in (line 1)) dotmap (from mle-monitor==0.0.1->-r requirements.in (line 1)) gitdb<5,>=4.0.1 (from GitPython==3.1.24->mle-monitor==0.0.1->-r requirements.in (line 1)) GitPython (from mle-monitor==0.0.1->-r requirements.in (line 1)) google-api-core<3.0.0dev,>=1.21.0,>=1.29.0 (from google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1)) google-auth<3.0dev,>=1.24.0,>=1.25.0 (from google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1)) google-cloud-core<3.0dev,>=1.6.0 (from google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1)) google-cloud-storage (from mle-monitor==0.0.1->-r requirements.in (line 1)) google-crc32c<2.0dev,>=1.0 (from google-resumable-media==2.1.0->google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1)) google-resumable-media<3.0dev,>=1.3.0 (from google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1)) googleapis-common-protos<2.0dev,>=1.52.0 (from google-api-core==2.3.2->google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1)) gputil (from mle-monitor==0.0.1->-r requirements.in (line 1)) idna<4,>=2.5 (from requests==2.26.0->google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1)) importlib-resources (from jaraco.text==3.6.0->jaraco.collections==3.4.0->CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2)) jaraco.classes (from jaraco.collections==3.4.0->CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2)) jaraco.collections (from CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2)) jaraco.functools>=1.20 (from cheroot==8.5.2->CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2)) jaraco.text (from jaraco.collections==3.4.0->CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2)) json-rpc>=1.10.3 (from telenium==0.5.0->-r requirements.in (line 2)) lark-parser<0.8.0,>=0.7.1 (from commentjson==0.9.0->mle-monitor==0.0.1->-r requirements.in (line 1)) Mako>=1.0.6 (from telenium==0.5.0->-r requirements.in (line 2)) MarkupSafe>=0.9.2 (from Mako==1.1.6->telenium==0.5.0->-r requirements.in (line 2)) mle-monitor (from -r requirements.in (line 1)) more-itertools>=2.6 (from CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2)) numpy>=1.17.3 (from mle-monitor==0.0.1->-r requirements.in (line 1)) pandas (from mle-monitor==0.0.1->-r requirements.in (line 1)) pickledb (from mle-monitor==0.0.1->-r requirements.in (line 1)) Pillow (from mle-monitor==0.0.1->-r requirements.in (line 1)) plotext (from mle-monitor==0.0.1->-r requirements.in (line 1)) portend>=2.1.1 (from CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2)) protobuf>=3.12.0 (from google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1)) psutil (from mle-monitor==0.0.1->-r requirements.in (line 1)) pyasn1<0.5.0,>=0.1.3,>=0.4.6 (from rsa==4.8->google-auth==2.3.3->google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1)) pyasn1-modules>=0.2.1 (from google-auth==2.3.3->google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1)) pygments<3.0.0,>=2.6.0 (from rich==10.16.1->mle-monitor==0.0.1->-r requirements.in (line 1)) python-dateutil>=2.7.3 (from pandas==1.3.5->mle-monitor==0.0.1->-r requirements.in (line 1)) pytz>=2017.3 (from pandas==1.3.5->mle-monitor==0.0.1->-r requirements.in (line 1)) pyyaml (from mle-monitor==0.0.1->-r requirements.in (line 1)) requests<3.0.0dev,>=2.18.0 (from google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1)) rich (from mle-monitor==0.0.1->-r requirements.in (line 1)) rsa<5,>=3.1.4 (from google-auth==2.3.3->google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1)) setuptools>=40.3.0 (from zc.lockfile==2.0->CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2)) six>=1.11.0,>=1.5,>=1.9.0 (from google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1)) smmap<6,>=3.0.1 (from gitdb==4.0.9->GitPython==3.1.24->mle-monitor==0.0.1->-r requirements.in (line 1)) telenium (from -r requirements.in (line 2)) tempora>=1.8 (from portend==3.1.0->CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2)) typing-extensions>=3.7.4.3 (from GitPython==3.1.24->mle-monitor==0.0.1->-r requirements.in (line 1)) urllib3<1.27,>=1.21.1 (from requests==2.26.0->google-cloud-storage==1.43.0->mle-monitor==0.0.1->-r requirements.in (line 1)) Werkzeug>=0.12.2 (from telenium==0.5.0->-r requirements.in (line 2)) ws4py>=0.4.2 (from telenium==0.5.0->-r requirements.in (line 2)) zc.lockfile (from CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2)) zipp>=3.1.0 (from importlib-resources==5.4.0->jaraco.text==3.6.0->jaraco.collections==3.4.0->CherryPy==18.6.1->telenium==0.5.0->-r requirements.in (line 2))

Finding the best candidates: found candidate cachetools==4.2.4 (constraint was >=2.0.0,<5.0) found candidate certifi==2021.10.8 (constraint was >=2017.4.17) found candidate charset-normalizer==2.0.9 (constraint was ~=2.0.0) found candidate cheroot==8.5.2 (constraint was >=8.2.1) found candidate cherrypy==18.6.1 (constraint was >=10.2.1) found candidate colorama==0.4.4 (constraint was >=0.4.0,<0.5.0) found candidate commentjson==0.9.0 (constraint was ) found candidate commonmark==0.9.1 (constraint was <0.10.0,>=0.9.0) found candidate dotmap==1.3.26 (constraint was ) found candidate gitdb==4.0.9 (constraint was >=4.0.1,<5) found candidate gitpython==3.1.24 (constraint was ) found candidate google-api-core==2.3.2 (constraint was >=1.21.0,>=1.29.0,<3.0.0dev) found candidate google-auth==2.3.3 (constraint was >=1.24.0,>=1.25.0,<3.0dev) found candidate google-cloud-core==2.2.1 (constraint was >=1.6.0,<3.0dev) found candidate google-cloud-storage==1.43.0 (constraint was ) found candidate google-crc32c==1.3.0 (constraint was >=1.0,<2.0dev) found candidate google-resumable-media==2.1.0 (constraint was >=1.3.0,<3.0dev) found candidate googleapis-common-protos==1.54.0 (constraint was >=1.52.0,<2.0dev) found candidate gputil==1.4.0 (constraint was ) found candidate idna==3.3 (constraint was >=2.5,<4) found candidate importlib-resources==5.4.0 (constraint was ) found candidate jaraco.classes==3.2.1 (constraint was ) found candidate jaraco.collections==3.4.0 (constraint was ) found candidate jaraco.functools==3.5.0 (constraint was >=1.20) found candidate jaraco.text==3.6.0 (constraint was ) found candidate json-rpc==1.13.0 (constraint was >=1.10.3) found candidate lark-parser==0.7.8 (constraint was >=0.7.1,<0.8.0) found candidate mako==1.1.6 (constraint was >=1.0.6) found candidate markupsafe==2.0.1 (constraint was >=0.9.2) found candidate mle-monitor==0.0.1 (constraint was ) found candidate more-itertools==8.12.0 (constraint was >=2.6) found candidate numpy==1.21.5 (constraint was >=1.17.3) found candidate pandas==1.3.5 (constraint was ) found candidate pickledb==0.9.2 (constraint was ) found candidate pillow==8.4.0 (constraint was ) found candidate plotext==4.1.3 (constraint was ) found candidate portend==3.1.0 (constraint was >=2.1.1) found candidate protobuf==3.19.1 (constraint was >=3.12.0) found candidate psutil==5.8.0 (constraint was ) found candidate pyasn1==0.4.8 (constraint was >=0.1.3,>=0.4.6,<0.5.0) found candidate pyasn1-modules==0.2.8 (constraint was >=0.2.1) found candidate pygments==2.10.0 (constraint was >=2.6.0,<3.0.0) found candidate python-dateutil==2.8.2 (constraint was >=2.7.3) found candidate pytz==2021.3 (constraint was >=2017.3) found candidate pyyaml==6.0 (constraint was ) found candidate requests==2.26.0 (constraint was >=2.18.0,<3.0.0dev) found candidate rich==10.16.1 (constraint was ) found candidate rsa==4.8 (constraint was >=3.1.4,<5) found candidate setuptools==60.1.0 (constraint was >=40.3.0) found candidate six==1.16.0 (constraint was >=1.11.0,>=1.5,>=1.9.0) found candidate smmap==5.0.0 (constraint was >=3.0.1,<6) found candidate telenium==0.5.0 (constraint was ) found candidate tempora==4.1.2 (constraint was >=1.8) found candidate typing-extensions==4.0.1 (constraint was >=3.7.4.3) found candidate urllib3==1.26.7 (constraint was >=1.21.1,<1.27) found candidate werkzeug==2.0.2 (constraint was >=0.12.2) found candidate ws4py==0.5.1 (constraint was >=0.4.2) found candidate zc.lockfile==2.0 (constraint was ) found candidate zipp==3.6.0 (constraint was >=3.1.0)

Finding secondary dependencies: cherrypy==18.6.1 requires cheroot>=8.2.1, jaraco.collections, more-itertools, portend>=2.1.1, zc.lockfile plotext==4.1.3 requires - psutil==5.8.0 requires - google-auth==2.3.3 requires cachetools<5.0,>=2.0.0, pyasn1-modules>=0.2.1, rsa<5,>=3.1.4; python_version >= "3.6", setuptools>=40.3.0, six>=1.9.0 mako==1.1.6 requires MarkupSafe>=0.9.2 zipp==3.6.0 not in cache, need to check index Collecting zipp==3.6.0 Using cached zipp-3.6.0-py3-none-any.whl (5.3 kB) zipp==3.6.0 requires - certifi==2021.10.8 requires - google-cloud-core==2.2.1 requires google-api-core<3.0.0dev,>=1.21.0, google-auth<3.0dev,>=1.24.0 six==1.16.0 requires - requests==2.26.0 requires certifi>=2017.4.17, charset-normalizer~=2.0.0; python_version >= "3", idna<4,>=2.5; python_version >= "3", urllib3<1.27,>=1.21.1 pytz==2021.3 requires - charset-normalizer==2.0.9 requires - lark-parser==0.7.8 requires - pandas==1.3.5 requires numpy>=1.17.3; platform_machine != "aarch64" and platform_machine != "arm64" and python_version < "3.10", python-dateutil>=2.7.3, pytz>=2017.3 tempora==4.1.2 requires jaraco.functools>=1.20, pytz more-itertools==8.12.0 requires - ws4py==0.5.1 requires - telenium==0.5.0 requires CherryPy>=10.2.1, json-rpc>=1.10.3, Mako>=1.0.6, Werkzeug>=0.12.2, ws4py>=0.4.2 cachetools==4.2.4 requires - pygments==2.10.0 requires - rsa==4.8 requires pyasn1>=0.1.3 gitpython==3.1.24 requires gitdb<5,>=4.0.1, typing-extensions>=3.7.4.3; python_version < "3.10" jaraco.functools==3.5.0 requires more-itertools pickledb==0.9.2 requires - pyasn1-modules==0.2.8 requires pyasn1<0.5.0,>=0.4.6 markupsafe==2.0.1 requires - rich==10.16.1 requires colorama<0.5.0,>=0.4.0, commonmark<0.10.0,>=0.9.0, pygments<3.0.0,>=2.6.0 werkzeug==2.0.2 requires - zc.lockfile==2.0 requires setuptools googleapis-common-protos==1.54.0 requires protobuf>=3.12.0 google-crc32c==1.3.0 requires - numpy==1.21.5 requires - portend==3.1.0 requires tempora>=1.8 cheroot==8.5.2 requires jaraco.functools, more-itertools>=2.6, six>=1.11.0 setuptools==60.1.0 requires - typing-extensions==4.0.1 requires - pyasn1==0.4.8 requires - importlib-resources==5.4.0 requires zipp>=3.1.0; python_version < "3.10" google-api-core==2.3.2 requires google-auth<3.0dev,>=1.25.0, googleapis-common-protos<2.0dev,>=1.52.0, protobuf>=3.12.0, requests<3.0.0dev,>=2.18.0, setuptools>=40.3.0 google-resumable-media==2.1.0 requires google-crc32c<2.0dev,>=1.0 google-cloud-storage==1.43.0 requires google-api-core<3.0dev,>=1.29.0; python_version >= "3.6", google-auth<3.0dev,>=1.25.0; python_version >= "3.6", google-cloud-core<3.0dev,>=1.6.0; python_version >= "3.6", google-resumable-media<3.0dev,>=1.3.0; python_version >= "3.6", protobuf; python_version >= "3.6", requests<3.0.0dev,>=2.18.0, six gputil==1.4.0 requires - json-rpc==1.13.0 requires - commentjson==0.9.0 requires lark-parser<0.8.0,>=0.7.1 pillow==8.4.0 requires - protobuf==3.19.1 requires - colorama==0.4.4 requires - mle-monitor==0.0.1 requires commentjson, dotmap, GitPython, google-cloud-storage, gputil, numpy, pandas, pickledb, Pillow, plotext, psutil, pyyaml, rich dotmap==1.3.26 requires - jaraco.collections==3.4.0 requires jaraco.classes, jaraco.text gitdb==4.0.9 requires smmap<6,>=3.0.1 urllib3==1.26.7 requires - idna==3.3 requires - commonmark==0.9.1 requires - jaraco.classes==3.2.1 requires more-itertools jaraco.text==3.6.0 requires importlib-resources; python_version < "3.9", jaraco.functools python-dateutil==2.8.2 requires six>=1.5 smmap==5.0.0 requires - pyyaml==6.0 requires -

Result of round 6: stable, done

#

This file is autogenerated by pip-compile with python 3.8

To update, run:

#

pip-compile --annotation-style=line

# cachetools==4.2.4 # via google-auth certifi==2021.10.8 # via requests charset-normalizer==2.0.9 # via requests cheroot==8.5.2 # via cherrypy cherrypy==18.6.1 # via telenium colorama==0.4.4 # via rich commentjson==0.9.0 # via mle-monitor commonmark==0.9.1 # via rich dotmap==1.3.26 # via mle-monitor gitdb==4.0.9 # via gitpython gitpython==3.1.24 # via mle-monitor google-api-core==2.3.2 # via google-cloud-core, google-cloud-storage google-auth==2.3.3 # via google-api-core, google-cloud-core, google-cloud-storage google-cloud-core==2.2.1 # via google-cloud-storage google-cloud-storage==1.43.0 # via mle-monitor google-crc32c==1.3.0 # via google-resumable-media google-resumable-media==2.1.0 # via google-cloud-storage googleapis-common-protos==1.54.0 # via google-api-core gputil==1.4.0 # via mle-monitor idna==3.3 # via requests importlib-resources==5.4.0 # via jaraco.text jaraco.classes==3.2.1 # via jaraco.collections jaraco.collections==3.4.0 # via cherrypy jaraco.functools==3.5.0 # via cheroot, jaraco.text, tempora jaraco.text==3.6.0 # via jaraco.collections json-rpc==1.13.0 # via telenium lark-parser==0.7.8 # via commentjson mako==1.1.6 # via telenium markupsafe==2.0.1 # via mako mle-monitor==0.0.1 # via -r requirements.in more-itertools==8.12.0 # via cheroot, cherrypy, jaraco.classes, jaraco.functools numpy==1.21.5 # via mle-monitor, pandas pandas==1.3.5 # via mle-monitor pickledb==0.9.2 # via mle-monitor pillow==8.4.0 # via mle-monitor plotext==4.1.3 # via mle-monitor portend==3.1.0 # via cherrypy protobuf==3.19.1 # via google-api-core, google-cloud-storage, googleapis-common-protos psutil==5.8.0 # via mle-monitor pyasn1==0.4.8 # via pyasn1-modules, rsa pyasn1-modules==0.2.8 # via google-auth pygments==2.10.0 # via rich python-dateutil==2.8.2 # via pandas pytz==2021.3 # via pandas, tempora pyyaml==6.0 # via mle-monitor requests==2.26.0 # via google-api-core, google-cloud-storage rich==10.16.1 # via mle-monitor rsa==4.8 # via google-auth six==1.16.0 # v

pdallair commented 2 years ago

Ok, not sure what you imply by "special-case the ones that don't work". Are you suggesting to try invoking the recipe with the specified version number but if it doesn't work try again without the version number? Because I believe can only tell whether it works or not by trying to install it.

RobertFlatt commented 2 years ago

I tried the forked repository with pyrebase because I know by hand pyrebase has 19 dependencies and a place to start https://github.com/thisbejim/Pyrebase/blob/master/requirements.txt , so there might be a chance of catching a corner case.

p4a.fork = pdallair requirements = python3,kivy==2.0.0,pyrebase

None of the unspecified dependencies were included in the apk :(
Did I miss something very basic?

The apk size compared to a hand build ref.apk was:

-rw-r--r-- 1 bobf bobf 13841408 Jan  2 13:07 pyrebase-0.1-arm64-v8a-debug.apk
-rw-r--r-- 1 bobf bobf 25656823 Dec 18 10:16 ref.apk

The apk site-packages contain:

~/ex/pyrebase/bin/xxx/assets/_python_bundle/site-packages>ls -1
Kivy-2.0.0-py3.8.egg-info
Pyrebase-3.0.27.dist-info
_distutils_hack
android
certifi
certifi-2021.10.8.dist-info
distutils-precedence.pth
easy_install.pyc
jnius
jnius_config.pyc
kivy
pkg_resources
pyjnius-1.3.0-py3.8.egg-info
pyrebase
setup_sdist.pyc
setuptools
setuptools-51.3.3-py3.8.egg-info
six.pyc
sseclient
usr
pdallair commented 2 years ago

Hey @RobertFlatt ! I'm glad you decided to give this a shot (although I do hope you haven't truly found a bug).

did you checkout fix/pip_no_deps? I tried building an APK with your requirements list...

My output tells me that, using pip-compile we were able to extract 15 more dependencies to be installed allong with pyrebase.

[INFO]:    Compiling dependencies for: ['pyrebase']
[INFO]:    -> running bash -c echo -e 'pyrebase' > requirements.in && pip-compile -v --dry-run --annotation-style=line && rm requirements.in
[INFO]:    Requirements obtained from pip-compile: ['gcloud==0.17.0', 'googleapis-common-protos==1.54.0', 'httplib2==0.20.2', 'jws==0.1.3', 'oauth2client==3.0.0', 'protobuf==3.19.1', 'pyasn1==0.4.8', 'pyasn1-modules==0.2.8', 'pycryptodome==3.4.3', 'pyparsing==3.0.6', 'pyrebase==3.0.27', 'python-jwt==2.0.1', 'requests==2.11.1', 'requests-toolbelt==0.7.0', 'rsa==4.8', 'six==1.16.0']
[INFO]:    Compiling dependencies for: ['pyrebase']
[INFO]:    -> running bash -c echo -e 'pyrebase' > requirements.in && pip-compile -v --dry-run --annotation-style=line && rm requirements.in
[INFO]:    Requirements obtained from pip-compile: ['gcloud==0.17.0', 'googleapis-common-protos==1.54.0', 'httplib2==0.20.2', 'jws==0.1.3', 'oauth2client==3.0.0', 'protobuf==3.19.1', 'pyasn1==0.4.8', 'pyasn1-modules==0.2.8', 'pycryptodome==3.4.3', 'pyparsing==3.0.6', 'pyrebase==3.0.27', 'python-jwt==2.0.1', 'requests==2.11.1', 'requests-toolbelt==0.7.0', 'rsa==4.8', 'six==1.16.0']
...
[INFO]:    Expanded Requirements List: ['python3', 'kivy', 'gcloud', 'googleapis-common-protos', 'httplib2', 'jws', 'oauth2client', 'protobuf', 'pyasn1', 'pyasn1-modules', 'pycryptodome', 'pyparsing', 'pyrebase', 'python-jwt', 'requests', 'requests-toolbelt', 'rsa', 'six']

The contents of my _python_bundle/site-packages directory:

(base) pdallair@ubuntu-vbox:~/dev/PycharmProjects/PythonForAndroid/TestApp$ ls -la .buildozer/android/platform/build-armeabi-v7a/dists/testapp__armeabi-v7a/_python_bundle/_python_bundle/site-packages
total 644
drwxrwxr-x 96 pdallair pdallair   4096 Jan  3 18:33 .
drwxrwxr-x  4 pdallair pdallair   4096 Jan  3 18:33 ..
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 android
-rw-rw-r--  1 pdallair pdallair    179 Dec 27 14:01 android-1.0-py3.8.egg-info
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 bin
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 certifi
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 certifi-2021.10.8.dist-info
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 cffi
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 cffi-1.13.2-py3.8.egg-info
-rwxrwxr-x  1 pdallair pdallair 126564 Jan  3 18:33 _cffi_backend.so
-rw-rw-r--  1 pdallair pdallair   8731 Jan  3 18:32 CHANGELOG.md
drwxrwxr-x  3 pdallair pdallair   4096 Jan  3 18:33 chardet
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 chardet-3.0.4.dist-info
drwxrwxr-x  5 pdallair pdallair   4096 Jan  3 18:33 cheroot
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 cheroot-8.5.2.dist-info
drwxrwxr-x  7 pdallair pdallair   4096 Jan  3 18:33 cherrypy
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 CherryPy-18.6.1.dist-info
drwxrwxr-x 12 pdallair pdallair   4096 Jan  3 18:33 Crypto
drwxrwxr-x 12 pdallair pdallair   4096 Jan  3 18:33 Cython
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 Cython-0.29.15-py3.8.egg-info
-rw-rw-r--  1 pdallair pdallair    594 Jan  3 18:33 cython.pyc
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 _distutils_hack
-rw-rw-r--  1 pdallair pdallair    152 Dec 27 13:46 distutils-precedence.pth
-rw-rw-r--  1 pdallair pdallair    340 Jan  3 18:33 easy_install.pyc
drwxrwxr-x 13 pdallair pdallair   4096 Jan  3 18:33 gcloud
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 gcloud-0.17.0-py3.8.egg-info
drwxrwxr-x 10 pdallair pdallair   4096 Jan  3 18:33 google
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 googleapis_common_protos-1.54.0.dist-info
-rw-rw-r--  1 pdallair pdallair   1710 Jan  3 18:32 googleapis_common_protos-1.54.0-py3.10-nspkg.pth
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 httplib2
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 httplib2-0.20.2.dist-info
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 idna
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 idna-2.10.dist-info
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 importlib_resources
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 importlib_resources-5.4.0.dist-info
drwxrwxr-x  4 pdallair pdallair   4096 Jan  3 18:33 jaraco
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 jaraco.classes-3.2.1.dist-info
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 jaraco.collections-3.4.0.dist-info
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 jaraco.functools-3.5.0.dist-info
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 jaraco.text-3.6.0.dist-info
drwxrwxr-x  3 pdallair pdallair   4096 Jan  3 18:33 jnius
-rw-rw-r--  1 pdallair pdallair   2062 Jan  3 18:33 jnius_config.pyc
drwxrwxr-x  3 pdallair pdallair   4096 Jan  3 18:33 jsonrpc
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 json_rpc-1.13.0.dist-info
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 jws
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 jws-0.1.3-py3.8.egg-info
drwxrwxr-x 18 pdallair pdallair   4096 Jan  3 18:33 kivy
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 Kivy-2.0.0-py3.8.egg-info
-rw-rw-r--  1 pdallair pdallair    577 Jan  3 18:32 LICENSE
drwxrwxr-x  3 pdallair pdallair   4096 Jan  3 18:33 mako
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 Mako-1.1.6.dist-info
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 markupsafe
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 MarkupSafe-2.0.1.dist-info
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 mfpymake-1.2.2-py3.8.egg-info
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 more_itertools
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 more_itertools-8.12.0.dist-info
drwxrwxr-x 10 pdallair pdallair   4096 Jan  3 18:33 networkx
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 networkx-2.6.3.dist-info
drwxrwxr-x 15 pdallair pdallair   4096 Jan  3 18:33 numpy
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 numpy-1.18.0-py3.8.egg-info
drwxrwxr-x  3 pdallair pdallair   4096 Jan  3 18:33 oauth2client
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 oauth2client-3.0.0-py3.8.egg-info
drwxrwxr-x  4 pdallair pdallair   4096 Jan  3 18:33 pkg_resources
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 portend-3.1.0.dist-info
-rw-rw-r--  1 pdallair pdallair   4602 Jan  3 18:33 portend.pyc
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 protobuf-3.19.1.dist-info
-rw-rw-r--  1 pdallair pdallair    539 Jan  3 18:32 protobuf-3.19.1-py3.8-nspkg.pth
drwxrwxr-x  5 pdallair pdallair   4096 Jan  3 18:33 pyasn1
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 pyasn1-0.4.8.dist-info
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 pyasn1_modules
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 pyasn1_modules-0.2.8.dist-info
drwxrwxr-x  3 pdallair pdallair   4096 Jan  3 18:33 pycparser
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 pycparser-2.14-py3.8.egg-info
-rw-rw-r--  1 pdallair pdallair   3130 Jan  3 18:32 pycryptodome-3.6.3-py3.8.egg-info
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 pyjnius-1.3.0-py3.8.egg-info
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 pymake
drwxrwxr-x  3 pdallair pdallair   4096 Jan  3 18:33 pyparsing
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 pyparsing-3.0.6.dist-info
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 pyrebase
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 Pyrebase-3.0.27.dist-info
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 python_jwt
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 python_jwt-2.0.1.dist-info
drwxrwxr-x  3 pdallair pdallair   4096 Jan  3 18:33 pytz
-rw-rw-r--  1 pdallair pdallair  25234 Dec 27 13:46 pytz-2019.3-py3.8.egg-info
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 pyximport
-rw-rw-r--  1 pdallair pdallair   1928 Jan  3 18:32 README.md
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 requests
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 requests-2.25.0.dist-info
drwxrwxr-x  9 pdallair pdallair   4096 Jan  3 18:33 requests_toolbelt
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 requests_toolbelt-0.7.0.dist-info
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 rsa
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 rsa-4.8.dist-info
-rw-rw-r--  1 pdallair pdallair   1936 Jan  3 18:33 setup_sdist.pyc
drwxrwxr-x  6 pdallair pdallair   4096 Jan  3 18:33 setuptools
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 setuptools-51.3.3-py3.8.egg-info
drwxrwxr-x  3 pdallair pdallair   4096 Jan  3 18:33 share
-rw-rw-r--  1 pdallair pdallair   1988 Dec 27 13:51 six-1.15.0-py3.8.egg-info
-rw-rw-r--  1 pdallair pdallair  24864 Jan  3 18:33 six.pyc
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 sseclient
drwxrwxr-x  4 pdallair pdallair   4096 Jan  3 18:33 telenium
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 telenium-0.5.0.dist-info
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 tempora
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 tempora-4.1.2.dist-info
drwxrwxr-x  5 pdallair pdallair   4096 Jan  3 18:33 urllib3
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 urllib3-1.26.7.dist-info
drwxrwxr-x  3 pdallair pdallair   4096 Jan  3 18:33 usr
drwxrwxr-x  6 pdallair pdallair   4096 Jan  3 18:33 werkzeug
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 Werkzeug-2.0.2.dist-info
drwxrwxr-x  4 pdallair pdallair   4096 Jan  3 18:33 ws4py
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 ws4py-0.5.1.dist-info
drwxrwxr-x  3 pdallair pdallair   4096 Jan  3 18:33 zc
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 zc.lockfile-2.0.dist-info
-rw-rw-r--  1 pdallair pdallair    519 Dec 27 14:04 zc.lockfile-2.0-py3.7-nspkg.pth
drwxrwxr-x  2 pdallair pdallair   4096 Jan  3 18:33 zipp-3.6.0.dist-info
-rw-rw-r--  1 pdallair pdallair   6913 Jan  3 18:33 zipp.pyc

I use buildozer and the resulting apk is always pretty much the same size (changes by less that 1KB).

RobertFlatt commented 2 years ago

Did I miss something very basic?

yes

p4a.branch = fix/pip_no_deps

And it builds, I don't expect an exact size match.

-rw-r--r-- 1 bobf bobf 23516365 Jan  3 14:27 pyrebase-0.1-arm64-v8a-debug.apk
-rw-r--r-- 1 bobf bobf 25656823 Dec 18 10:16 ref.apk

Ran the app, my very basic test is to log into firebase, and that worked. :)

But the set of packages used is a little different. I can sort of explain why.

The good news is I didn't find a corner case. The bad news is I'm a skeptic (which is about me not about the code). But I'd recommend others try it, some success stories would help.

RESULTS

FOUND

From the Buildozer log:

Usual defaults:

hostpython3, libffi, openssl, sdl2_image, sdl2_mixer, sdl2_ttf, sqlite3, python3, sdl2, setuptools, pycparser, six, cffi, pyjnius, android, kivy,

Generated for pyrebase:

pycryptodome, pyparsing, gcloud, pyrebase, requests, googleapis-common-protos, requests-toolbelt, python-jwt, jws, protobuf, rsa, oauth2client, pyasn1-modules, certifi, httplib2, pyasn1

EXPECTED

pyrebase,requests,urllib3,chardet,idna,gcloud,oauth2client,requests-toolbelt,protobuf_cpp,python-jwt,pycryptodome,httplib2,pyparsing,pyasn1,pyasn1_modules,rsa,jwcrypto,cryptography, deprecated, wrapt

DIFFERENCES

EXPECTED FOUND:

pyrebase,requests,gcloud,oauth2client,requests-toolbelt, python-jwt, pycryptodome,httplib2, pyparsing, pyasn1,pyasn1_modules,rsa

EXPECTED NOT FOUND:

urllib3, chardet, protobuf_cpp, jwcrypto, cryptography, deprecated, wrapt

UNEXPECTED:

googleapis-common-protos, jws, protobuf

pdallair commented 2 years ago

The bad news is I'm a skeptic (which is about me not about the code).

:laughing: I know what you mean. Haven't we all been traumatized after a merge and deploy disaster that we'd never forget?

But I'd recommend others try it, some success stories would help.

YES! My knowledge of mobile app development is very limited. I'm a newby. It'd be an honor to have bugs exposed by my senpais .

RobertFlatt commented 2 years ago

FYI I wondered about backwards compatibility, so I built with the old requirements and the new p4a.

-rw-r--r-- 1 bobf bobf 25679914 Jan  4 08:36 pyrebase-0.1-arm64-v8a-debug.apk
-rw-r--r-- 1 bobf bobf 25656823 Dec 18 10:16 ref.apk

And it ran the same test.

RobertFlatt commented 2 years ago

Bottom line to get a PR approved we have to demonstrate to two developers: 1) This is a good thing 2) This won't break anything

The second is where you should put your effort, it is the hard one, as this PR impacts core functionality. So there is a huge downside to being wrong. You probably believe you are not wrong (!) but to every body else it is an unknown.

Think explaining why it works (and why the previous approach didn't), creating test cases, and perhaps optional behavior.

I'm not a developer, its not me you have to convince. Though I would be vocal if I saw an issue.

pdallair commented 2 years ago

In case you didn't know there is a PR already and someone has been assigned to it (though I haven't heard from them for the past couple of days 🤷). As per the reviewer's request, I made a unit test for that covers more complex requirements. When I run make test everything passes now. You're welcome to take a look.