├── .babelrc ├── .dockerignore ├── .env ├── .eslintignore ├── .eslintrc.json ├── .gitattributes ├── .github ├── auto_assign-issues.yml ├── dependabot.yml └── workflows │ ├── coverity.yml │ ├── documentation.yml │ ├── integration.yml │ ├── local_deployments.yml │ ├── pre-commit.yml │ ├── python.yml │ ├── scorecard.yml │ ├── security.yml │ └── web.yml ├── .gitignore ├── .gitmodules ├── .pre-commit-config.yaml ├── .prettierignore ├── .prettierrc.yaml ├── .pylintrc ├── .pyrepl.py ├── .trivyignore ├── .vulture_allowlist ├── CODEOWNERS ├── CONTRIBUTING.md ├── DEPENDENCIES.md ├── DEVELOPMENT.md ├── LICENSE ├── Makefile ├── Pipfile ├── Pipfile.lock ├── README.md ├── SECURITY.md ├── ci ├── check_node_deps.sh ├── compose.sh ├── compose_test.sh ├── create_development_tls_certs.sh ├── init_config.sh ├── run_container_bg.sh ├── run_container_fg.sh ├── run_integration_test.sh ├── validate_swagger.js ├── wait_for.sh ├── worker_health_fail.sh └── worker_health_pass.sh ├── config ├── circleci │ ├── 00_circleci.json │ ├── 10_test.json │ └── 99_defaults.json ├── defaults.json ├── development │ ├── 00_development.json │ ├── 10_test.json │ └── 99_defaults.json ├── sigopt │ ├── 00_client.yml │ ├── 10_redis.yml │ ├── 10_user_uploads.yml │ ├── 10_web.yml │ └── 99_defaults.json └── test.json ├── deploy_sigopt_dev.sh ├── docker-compose.dev.yml ├── docker-compose.yml ├── docker └── images │ ├── nginx │ └── Dockerfile │ ├── node-development │ └── Dockerfile │ ├── python-development │ ├── Dockerfile │ └── bin │ │ ├── protowatch.sh │ │ ├── qworkerwatch.sh │ │ └── run_command_on_change.py │ ├── test-runner │ ├── Dockerfile │ ├── entrypoint.py │ └── start-x11vnc.sh │ ├── web │ └── Dockerfile │ └── zigopt │ ├── Dockerfile │ └── bin │ └── gunicorn_serve.sh ├── nginx ├── errors │ ├── 400.json │ ├── 405.json │ ├── 500.json │ ├── 501.json │ ├── 502.json │ ├── 503.json │ ├── 504.json │ └── 505.json ├── nginx.conf ├── proxy │ ├── api.conf │ ├── app.conf │ └── webpack.conf ├── server │ ├── minio.conf │ └── sigopt.conf └── tls.conf ├── package.json ├── pp ├── pyproject.toml ├── pytest.ini ├── redis.conf ├── repl ├── scripts ├── compile │ ├── build_docker_images.sh │ ├── compile_and_install_python.sh │ ├── generate_routes.sh │ ├── install_docker_debian.sh │ ├── minify_js.sh │ └── minify_js_server_bundle.sh ├── dev │ ├── clean_pycache.sh │ ├── clean_test_pycache.sh │ ├── compile_protobuf_in_docker.sh │ ├── createdb_in_docker.sh │ └── ensure_inits.sh ├── launch │ ├── all_live.sh │ ├── api_live.sh │ ├── compose.sh │ ├── repl.sh │ ├── setup_env.sh │ ├── start_zigopt_services.sh │ ├── stop_zigopt_services.sh │ └── web_live.sh ├── readlink.py └── set_python_path.sh ├── setup.cfg ├── setup.sh ├── src ├── protobuf │ └── zigopt │ │ └── protobuf │ │ └── gen │ │ ├── api │ │ └── paging.proto │ │ ├── checkpoint │ │ └── checkpoint_data.proto │ │ ├── client │ │ └── clientmeta.proto │ │ ├── color │ │ └── color.proto │ │ ├── experiment │ │ └── experimentmeta.proto │ │ ├── file │ │ └── filedata.proto │ │ ├── observation │ │ └── observationdata.proto │ │ ├── optimize │ │ └── sources.proto │ │ ├── organization │ │ └── organizationmeta.proto │ │ ├── permission │ │ └── permissionmeta.proto │ │ ├── project │ │ └── projectdata.proto │ │ ├── queue │ │ └── messages.proto │ │ ├── queued_suggestion │ │ └── queued_suggestion_meta.proto │ │ ├── suggest │ │ └── suggestion.proto │ │ ├── tag │ │ └── tagdata.proto │ │ ├── test │ │ └── message.proto │ │ ├── token │ │ └── tokenmeta.proto │ │ ├── training_run │ │ └── training_run_data.proto │ │ └── user │ │ └── usermeta.proto └── python │ └── zigopt │ ├── __init__.py │ ├── api │ ├── __init__.py │ ├── auth.py │ ├── blueprint.py │ ├── common.py │ ├── documentation.py │ ├── main.py │ ├── paging.py │ ├── prod.py │ ├── ratelimit.py │ ├── request.py │ ├── routes.py │ ├── swaggerapp.py │ └── v1 │ │ ├── __init__.py │ │ └── routes.py │ ├── assignments │ ├── __init__.py │ ├── build.py │ └── model.py │ ├── authentication │ ├── __init__.py │ ├── login.py │ ├── result.py │ └── token.py │ ├── authorization │ ├── __init__.py │ ├── client.py │ ├── client_user.py │ ├── constant.py │ ├── empty.py │ ├── guest.py │ ├── member.py │ ├── owner.py │ ├── signup_link.py │ └── user.py │ ├── best_practices │ ├── __init__.py │ ├── constants.py │ └── service.py │ ├── brand │ └── constant.py │ ├── checkpoint │ ├── model.py │ └── service.py │ ├── client │ ├── __init__.py │ ├── model.py │ └── service.py │ ├── common │ ├── __init__.py │ ├── compact.py │ ├── context.py │ ├── conversions.py │ ├── find.py │ ├── functions.py │ ├── generators.py │ ├── lists.py │ ├── maps.py │ ├── non_crypto_random.py │ ├── numbers.py │ ├── objects.py │ ├── recursive.py │ ├── remove_nones.py │ ├── sigopt_datetime.py │ ├── strings.py │ ├── struct.py │ └── types.py │ ├── conditionals │ ├── __init__.py │ ├── from_json.py │ └── util.py │ ├── config.py │ ├── contracts.py │ ├── data │ └── model.py │ ├── db │ ├── __init__.py │ ├── all_models.py │ ├── column.py │ ├── declarative.py │ ├── service.py │ └── util.py │ ├── email │ ├── __init__.py │ ├── list.py │ ├── model.py │ ├── queue.py │ ├── router.py │ ├── sender.py │ ├── smtp.py │ ├── templates │ │ ├── base.mako │ │ ├── cant_reset_password.mako │ │ ├── email_change.mako │ │ ├── existing_email.mako │ │ ├── invited.mako │ │ ├── invited_existing.mako │ │ ├── invited_owner.mako │ │ ├── invited_owner_existing.mako │ │ ├── login_ratelimit.mako │ │ ├── password_change.mako │ │ ├── reset_password.mako │ │ ├── verification_reprompt.mako │ │ ├── verification_reprompt_owner.mako │ │ ├── verify_email.mako │ │ └── welcome_email.mako │ └── worker.py │ ├── exception │ ├── __init__.py │ └── logger.py │ ├── experiment │ ├── __init__.py │ ├── best.py │ ├── constant.py │ ├── constraints.py │ ├── model.py │ ├── progress.py │ ├── segmenter.py │ ├── service.py │ └── util.py │ ├── file │ ├── model.py │ ├── s3_user_upload_service.py │ ├── service.py │ └── storage │ │ ├── base.py │ │ └── s3.py │ ├── fs │ ├── __init__.py │ └── dir.py │ ├── git │ ├── __init__.py │ └── status.py │ ├── handlers │ ├── __init__.py │ ├── aiexperiments │ │ ├── base.py │ │ ├── best_training_runs.py │ │ ├── create.py │ │ ├── delete.py │ │ ├── detail.py │ │ ├── list_base.py │ │ ├── training_runs │ │ │ └── create.py │ │ └── update.py │ ├── base │ │ ├── __init__.py │ │ ├── handler.py │ │ ├── invite.py │ │ └── welcome.py │ ├── clients │ │ ├── __init__.py │ │ ├── aiexperiments.py │ │ ├── base.py │ │ ├── create.py │ │ ├── delete.py │ │ ├── detail.py │ │ ├── experiments.py │ │ ├── invite.py │ │ ├── pending_permissions.py │ │ ├── permissions.py │ │ ├── tokens.py │ │ ├── update.py │ │ └── users │ │ │ └── __init__.py │ ├── experiments │ │ ├── __init__.py │ │ ├── base.py │ │ ├── best_assignments.py │ │ ├── best_practices.py │ │ ├── best_training_runs.py │ │ ├── checkpoints │ │ │ ├── __init__.py │ │ │ ├── create.py │ │ │ └── detail.py │ │ ├── create.py │ │ ├── delete.py │ │ ├── detail.py │ │ ├── hyperparameters │ │ │ └── delete.py │ │ ├── list_base.py │ │ ├── metric_importances │ │ │ ├── detail.py │ │ │ └── update.py │ │ ├── observations │ │ │ ├── __init__.py │ │ │ ├── base.py │ │ │ ├── create.py │ │ │ ├── delete.py │ │ │ ├── detail.py │ │ │ └── update.py │ │ ├── queued_suggestions │ │ │ ├── __init__.py │ │ │ ├── base.py │ │ │ ├── create.py │ │ │ ├── delete.py │ │ │ └── detail.py │ │ ├── stopping_criteria.py │ │ ├── suggestions │ │ │ ├── __init__.py │ │ │ ├── base.py │ │ │ ├── create.py │ │ │ ├── delete.py │ │ │ ├── detail.py │ │ │ └── update.py │ │ ├── training_runs │ │ │ └── __init__.py │ │ └── update.py │ ├── files │ │ ├── base.py │ │ └── detail.py │ ├── organizations │ │ ├── __init__.py │ │ ├── base.py │ │ ├── clients.py │ │ ├── detail.py │ │ ├── experiments.py │ │ ├── invite │ │ │ ├── __init__.py │ │ │ ├── base.py │ │ │ ├── create.py │ │ │ ├── delete.py │ │ │ ├── list.py │ │ │ ├── modify.py │ │ │ └── update.py │ │ ├── memberships.py │ │ ├── permissions.py │ │ └── update.py │ ├── plans │ │ └── __init__.py │ ├── projects │ │ ├── base.py │ │ ├── create.py │ │ ├── detail.py │ │ ├── list.py │ │ ├── notes │ │ │ ├── create.py │ │ │ └── list.py │ │ └── update.py │ ├── tags │ │ ├── create.py │ │ └── list.py │ ├── training_runs │ │ ├── __init__.py │ │ ├── base.py │ │ ├── create.py │ │ ├── delete.py │ │ ├── detail.py │ │ ├── files.py │ │ ├── list.py │ │ ├── parser.py │ │ ├── tags.py │ │ ├── update.py │ │ └── utils.py │ ├── users │ │ ├── __init__.py │ │ ├── base.py │ │ ├── create.py │ │ ├── delete.py │ │ ├── detail.py │ │ ├── email.py │ │ ├── memberships.py │ │ ├── password.py │ │ ├── pending_permissions.py │ │ ├── permissions.py │ │ ├── sessions.py │ │ └── update.py │ ├── validate │ │ ├── __init__.py │ │ ├── aiexperiment.py │ │ ├── assignments.py │ │ ├── base.py │ │ ├── checkpoint.py │ │ ├── client.py │ │ ├── color.py │ │ ├── experiment.py │ │ ├── membership.py │ │ ├── metadata.py │ │ ├── note.py │ │ ├── observation.py │ │ ├── organization.py │ │ ├── project.py │ │ ├── role.py │ │ ├── suggestion.py │ │ ├── sys_metadata.py │ │ ├── tag.py │ │ ├── training_run.py │ │ ├── user.py │ │ ├── validate_dict.py │ │ ├── values.py │ │ └── web_data │ │ │ ├── ag_run_view.py │ │ │ ├── base.py │ │ │ └── run_view.py │ └── web_data │ │ ├── base.py │ │ ├── create.py │ │ ├── delete.py │ │ ├── list.py │ │ └── update.py │ ├── iam_logging │ ├── __init__.py │ └── service.py │ ├── importance │ ├── __init__.py │ ├── service.py │ └── worker.py │ ├── invite │ ├── __init__.py │ ├── constant.py │ ├── model.py │ └── service.py │ ├── json │ ├── __init__.py │ ├── assignments.py │ ├── builder │ │ ├── __init__.py │ │ ├── aiexperiment.py │ │ ├── best_assignments.py │ │ ├── best_practices.py │ │ ├── checkpoint.py │ │ ├── client.py │ │ ├── experiment.py │ │ ├── file.py │ │ ├── invite.py │ │ ├── invite_base.py │ │ ├── json_builder.py │ │ ├── membership.py │ │ ├── metric_importances.py │ │ ├── note.py │ │ ├── observation.py │ │ ├── organization.py │ │ ├── paging.py │ │ ├── parameter.py │ │ ├── pending_permission.py │ │ ├── permission.py │ │ ├── project.py │ │ ├── queued_suggestion.py │ │ ├── session.py │ │ ├── stopping_criteria.py │ │ ├── suggestion.py │ │ ├── tag.py │ │ ├── task.py │ │ ├── token.py │ │ ├── training_run.py │ │ ├── user.py │ │ └── web_data.py │ ├── client_provided_data.py │ ├── conditions.py │ ├── render.py │ └── session.py │ ├── log │ ├── __init__.py │ ├── base.py │ └── service.py │ ├── math │ ├── __init__.py │ ├── domain_bounds.py │ ├── initialization.py │ └── interval.py │ ├── membership │ ├── __init__.py │ ├── model.py │ └── service.py │ ├── message_tracking │ └── service.py │ ├── net │ ├── __init__.py │ ├── errors.py │ ├── headers.py │ └── responses.py │ ├── note │ ├── model.py │ └── service.py │ ├── observation │ ├── __init__.py │ ├── data.py │ ├── from_json.py │ ├── model.py │ └── service.py │ ├── optimization_aux │ ├── model.py │ └── service.py │ ├── optimize │ ├── __init__.py │ ├── args.py │ ├── categorical.py │ ├── optimizer.py │ ├── queue.py │ ├── sources │ │ ├── __init__.py │ │ ├── base.py │ │ ├── categorical.py │ │ ├── conditional.py │ │ ├── search.py │ │ └── spe.py │ └── worker.py │ ├── organization │ ├── __init__.py │ ├── model.py │ └── service.py │ ├── pagination │ ├── __init__.py │ ├── lib.py │ ├── paging.py │ └── query.py │ ├── parameters │ ├── __init__.py │ └── from_json.py │ ├── payment │ └── __init__.py │ ├── permission │ ├── __init__.py │ ├── model.py │ ├── pending │ │ ├── __init__.py │ │ ├── model.py │ │ └── service.py │ └── service.py │ ├── profile │ ├── __init__.py │ ├── profile.py │ ├── timing.py │ └── tracer.py │ ├── project │ ├── __init__.py │ ├── model.py │ └── service.py │ ├── protobuf │ ├── __init__.py │ ├── dict.py │ ├── json.py │ ├── lib.py │ └── proxy.py │ ├── py.typed │ ├── queue │ ├── __init__.py │ ├── api.py │ ├── base.py │ ├── exceptions.py │ ├── grouper.py │ ├── local.py │ ├── message.py │ ├── message_groups.py │ ├── message_types.py │ ├── monitor.py │ ├── provider.py │ ├── providers.py │ ├── redis │ │ ├── base.py │ │ ├── message.py │ │ └── optimize.py │ ├── router.py │ ├── service.py │ ├── worker.py │ └── workers.py │ ├── queued_suggestion │ ├── __init__.py │ ├── model.py │ └── service.py │ ├── ratelimit │ └── service.py │ ├── redis │ ├── __init__.py │ └── service.py │ ├── services │ ├── __init__.py │ ├── api.py │ ├── bag.py │ ├── base.py │ └── disabled.py │ ├── sigoptcompute │ ├── __init__.py │ ├── adapter.py │ └── constant.py │ ├── suggestion │ ├── __init__.py │ ├── broker │ │ ├── __init__.py │ │ ├── base.py │ │ └── queued.py │ ├── from_json.py │ ├── lib.py │ ├── model.py │ ├── processed │ │ ├── __init__.py │ │ ├── model.py │ │ └── service.py │ ├── ranker.py │ ├── sampler │ │ ├── __init__.py │ │ ├── base.py │ │ ├── categorical.py │ │ ├── grid.py │ │ ├── lhc.py │ │ ├── queue.py │ │ ├── random.py │ │ ├── ranked.py │ │ └── xgb_sampler.py │ ├── service.py │ └── unprocessed │ │ ├── __init__.py │ │ ├── model.py │ │ └── service.py │ ├── tag │ ├── model.py │ └── service.py │ ├── task │ ├── __init__.py │ └── from_json.py │ ├── throttle │ └── __init__.py │ ├── token │ ├── __init__.py │ ├── model.py │ ├── service.py │ └── token_types.py │ ├── training_run │ ├── constant.py │ ├── defined_fields.py │ ├── field_types.py │ ├── model.py │ ├── service.py │ └── util.py │ ├── user │ ├── __init__.py │ ├── email_verification_service.py │ ├── model.py │ └── service.py │ ├── utils │ ├── __init__.py │ ├── create_database.py │ └── create_produser.py │ ├── version.py │ └── web_data │ ├── lib.py │ ├── model.py │ ├── run_view.py │ └── service.py ├── start.sh ├── test ├── integration │ ├── __init__.py │ ├── auth.py │ ├── base.py │ ├── browser │ │ ├── README.md │ │ ├── __init__.py │ │ ├── helpers │ │ │ ├── __init__.py │ │ │ ├── matcher.py │ │ │ └── navigation_helper.py │ │ ├── models │ │ │ ├── __init__.py │ │ │ ├── test_error.py │ │ │ └── test_result.py │ │ ├── tests │ │ │ ├── __init__.py │ │ │ ├── browser_test.py │ │ │ ├── conftest.py │ │ │ └── interaction │ │ │ │ ├── __init__.py │ │ │ │ ├── admin │ │ │ │ ├── __init__.py │ │ │ │ └── admin_experiment.py │ │ │ │ ├── experiment │ │ │ │ ├── __init__.py │ │ │ │ ├── add_data.py │ │ │ │ ├── analysis.py │ │ │ │ ├── api.py │ │ │ │ ├── create.py │ │ │ │ ├── csv_upload.py │ │ │ │ ├── history.py │ │ │ │ ├── list.py │ │ │ │ ├── properties.py │ │ │ │ ├── redirect.py │ │ │ │ ├── suggestions.py │ │ │ │ ├── summary.py │ │ │ │ └── test_base.py │ │ │ │ ├── global │ │ │ │ ├── __init__.py │ │ │ │ ├── email_test.py │ │ │ │ ├── error_test.py │ │ │ │ ├── guest_test.py │ │ │ │ ├── login_test.py │ │ │ │ └── user_test.py │ │ │ │ ├── home │ │ │ │ ├── __init__.py │ │ │ │ ├── home_page.py │ │ │ │ └── projects.py │ │ │ │ ├── organization │ │ │ │ ├── __init__.py │ │ │ │ ├── conftest.py │ │ │ │ ├── experiment.py │ │ │ │ ├── teams.py │ │ │ │ ├── test_base.py │ │ │ │ └── users │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── member.py │ │ │ │ │ ├── owner.py │ │ │ │ │ └── test_base.py │ │ │ │ └── project │ │ │ │ ├── __init__.py │ │ │ │ ├── detail.py │ │ │ │ ├── list.py │ │ │ │ └── test_base.py │ │ └── web_driver.py │ ├── conftest.py │ ├── connection.py │ ├── enhanced_info_connection.py │ ├── enhanced_info_objects.py │ ├── py.typed │ ├── request.py │ ├── service │ │ ├── __init__.py │ │ ├── client │ │ │ ├── __init__.py │ │ │ └── service.py │ │ ├── db │ │ │ ├── __init__.py │ │ │ ├── column.py │ │ │ ├── delete_one.py │ │ │ ├── insert_from.py │ │ │ ├── sanitize_errors.py │ │ │ ├── test_base.py │ │ │ ├── unsafe_insert.py │ │ │ ├── update_one.py │ │ │ ├── update_returning.py │ │ │ └── upsert.py │ │ ├── experiment │ │ │ ├── __init__.py │ │ │ ├── cache_experiment_count.py │ │ │ ├── delete.py │ │ │ ├── test_base.py │ │ │ └── test_constraints_preprocessing.py │ │ ├── file │ │ │ ├── __init__.py │ │ │ ├── count_bytes_test.py │ │ │ ├── find_test.py │ │ │ └── insert_test.py │ │ ├── invite │ │ │ ├── __init__.py │ │ │ ├── delete.py │ │ │ └── logic.py │ │ ├── membership │ │ │ ├── __init__.py │ │ │ ├── create.py │ │ │ ├── delete.py │ │ │ └── logic.py │ │ ├── optimization_aux │ │ │ ├── __init__.py │ │ │ └── aux_service.py │ │ ├── optimize │ │ │ ├── __init__.py │ │ │ ├── optimizer │ │ │ │ ├── __init__.py │ │ │ │ ├── persist_suggestions.py │ │ │ │ ├── test_base.py │ │ │ │ └── trigger_next_points.py │ │ │ └── sources │ │ │ │ ├── __init__.py │ │ │ │ └── model.py │ │ ├── organization │ │ │ ├── __init__.py │ │ │ ├── delete.py │ │ │ ├── find.py │ │ │ ├── merge.py │ │ │ └── set_up_new_organization.py │ │ ├── permission │ │ │ ├── __init__.py │ │ │ └── pending │ │ │ │ ├── __init__.py │ │ │ │ ├── delete.py │ │ │ │ └── find.py │ │ ├── project │ │ │ ├── __init__.py │ │ │ ├── find_test.py │ │ │ ├── insert_test.py │ │ │ ├── test_base.py │ │ │ └── update_test.py │ │ ├── redis │ │ │ ├── __init__.py │ │ │ ├── redis_key_service.py │ │ │ └── redis_service.py │ │ ├── suggestion │ │ │ ├── __init__.py │ │ │ ├── broker │ │ │ │ ├── __init__.py │ │ │ │ ├── base │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── next_sampler.py │ │ │ │ │ ├── replace_with_random_if_necessary.py │ │ │ │ │ ├── should_ignore.py │ │ │ │ │ └── should_use_random_for_low_discrepancy.py │ │ │ │ ├── queued │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── explicit_suggestion.py │ │ │ │ │ ├── fallback_suggestion.py │ │ │ │ │ ├── next_suggestion.py │ │ │ │ │ └── suggestion_to_serve_next.py │ │ │ │ └── test_base.py │ │ │ ├── processed │ │ │ │ ├── __init__.py │ │ │ │ ├── find_matching_suggestion.py │ │ │ │ ├── replace_unprocessed.py │ │ │ │ └── test_base.py │ │ │ └── unprocessed │ │ │ │ ├── __init__.py │ │ │ │ ├── count_by_experiment.py │ │ │ │ ├── delete_all_for_experiment.py │ │ │ │ ├── delete_by_id.py │ │ │ │ ├── find_by_experiment.py │ │ │ │ ├── find_by_id.py │ │ │ │ ├── find_by_ids.py │ │ │ │ ├── get_suggestions_per_source.py │ │ │ │ ├── insert_suggestions_to_be_processed.py │ │ │ │ ├── insert_unprocessed_suggestions.py │ │ │ │ ├── process.py │ │ │ │ ├── remove_from_available_suggestions.py │ │ │ │ └── test_base.py │ │ ├── tag │ │ │ ├── __init__.py │ │ │ ├── find_test.py │ │ │ ├── insert_test.py │ │ │ └── test_base.py │ │ ├── test_base.py │ │ └── user │ │ │ ├── __init__.py │ │ │ └── find.py │ ├── utils │ │ ├── __init__.py │ │ ├── autogen_code.py │ │ ├── constants.py │ │ ├── emails.py │ │ ├── html.py │ │ ├── mail │ │ │ ├── __init__.py │ │ │ ├── __main__.py │ │ │ ├── smtp.py │ │ │ └── validate_email.py │ │ ├── make_values.py │ │ ├── random_assignment.py │ │ ├── random_email.py │ │ └── wait.py │ ├── v1 │ │ ├── __init__.py │ │ ├── admin │ │ │ ├── __init__.py │ │ │ ├── user_create_code_test.py │ │ │ └── user_create_signup_test.py │ │ ├── authentication │ │ │ ├── __init__.py │ │ │ ├── auth_test.py │ │ │ └── password_test.py │ │ ├── constants.py │ │ ├── endpoints │ │ │ ├── __init__.py │ │ │ ├── aiexperiments │ │ │ │ ├── __init__.py │ │ │ │ ├── best_training_runs_test.py │ │ │ │ ├── create_test.py │ │ │ │ ├── delete_test.py │ │ │ │ ├── detail_test.py │ │ │ │ ├── list_test.py │ │ │ │ ├── training_runs_test.py │ │ │ │ └── update_test.py │ │ │ ├── clients │ │ │ │ ├── __init__.py │ │ │ │ ├── client_test.py │ │ │ │ └── client_training_run.py │ │ │ ├── experiments │ │ │ │ ├── __init__.py │ │ │ │ ├── best_assignments_test.py │ │ │ │ ├── best_practices_test.py │ │ │ │ ├── client_auth_test.py │ │ │ │ ├── create_test.py │ │ │ │ ├── default_test.py │ │ │ │ ├── delete_test.py │ │ │ │ ├── detail_test.py │ │ │ │ ├── development_test.py │ │ │ │ ├── list_delete_test.py │ │ │ │ ├── list_detail_test.py │ │ │ │ ├── metadata_test.py │ │ │ │ ├── update_test.py │ │ │ │ ├── user_auth_test.py │ │ │ │ └── user_experiments_in_project_test.py │ │ │ ├── hyperparameters │ │ │ │ ├── __init__.py │ │ │ │ └── hyperparameters_delete_test.py │ │ │ ├── importances │ │ │ │ ├── __init__.py │ │ │ │ ├── metric_importances_test.py │ │ │ │ ├── metric_importances_update_test.py │ │ │ │ └── test_base.py │ │ │ ├── invites │ │ │ │ ├── __init__.py │ │ │ │ ├── client_invite_test.py │ │ │ │ ├── organization_invite_test.py │ │ │ │ └── test_base.py │ │ │ ├── memberships │ │ │ │ ├── __init__.py │ │ │ │ └── list_test.py │ │ │ ├── observations │ │ │ │ ├── __init__.py │ │ │ │ ├── create.py │ │ │ │ ├── create_batch.py │ │ │ │ ├── create_with_stored_metrics.py │ │ │ │ ├── delete.py │ │ │ │ ├── detail.py │ │ │ │ ├── failed.py │ │ │ │ ├── metadata.py │ │ │ │ ├── multi_metric.py │ │ │ │ ├── stored_metrics_mixin.py │ │ │ │ └── update.py │ │ │ ├── organizations │ │ │ │ ├── __init__.py │ │ │ │ ├── organization_test.py │ │ │ │ └── organization_training_run.py │ │ │ ├── pending_permissions │ │ │ │ ├── __init__.py │ │ │ │ └── pending_permission_test.py │ │ │ ├── permissions │ │ │ │ ├── __init__.py │ │ │ │ ├── list_test.py │ │ │ │ └── request_test.py │ │ │ ├── plan │ │ │ │ └── __init__.py │ │ │ ├── projects │ │ │ │ ├── __init__.py │ │ │ │ ├── create_test.py │ │ │ │ ├── date_updated_test.py │ │ │ │ ├── detail_test.py │ │ │ │ ├── experiment_list_test.py │ │ │ │ ├── list_detail_test.py │ │ │ │ ├── notes │ │ │ │ │ ├── __init__.py │ │ │ │ │ ├── create_test.py │ │ │ │ │ └── list_test.py │ │ │ │ └── update_test.py │ │ │ ├── queued_suggestions │ │ │ │ ├── __init__.py │ │ │ │ └── queued_suggestion_test.py │ │ │ ├── suggestions │ │ │ │ ├── __init__.py │ │ │ │ ├── parallelism_test.py │ │ │ │ └── suggestion_test.py │ │ │ ├── tags │ │ │ │ ├── __init__.py │ │ │ │ ├── create_test.py │ │ │ │ └── list_test.py │ │ │ ├── tokens │ │ │ │ ├── __init__.py │ │ │ │ └── update_test.py │ │ │ ├── training_runs │ │ │ │ ├── __init__.py │ │ │ │ ├── create_batch_test.py │ │ │ │ ├── create_test.py │ │ │ │ ├── delete_test.py │ │ │ │ ├── detail_test.py │ │ │ │ ├── files_test.py │ │ │ │ ├── list_test.py │ │ │ │ ├── tags_test.py │ │ │ │ ├── training_run_test_mixin.py │ │ │ │ └── update_test.py │ │ │ ├── users │ │ │ │ ├── __init__.py │ │ │ │ ├── create_fail_test.py │ │ │ │ ├── delete_test.py │ │ │ │ └── update_test.py │ │ │ └── web_data │ │ │ │ ├── __init__.py │ │ │ │ ├── create_test.py │ │ │ │ ├── delete_test.py │ │ │ │ ├── list_test.py │ │ │ │ ├── update_test.py │ │ │ │ └── web_data_base.py │ │ ├── experiments_test_base.py │ │ ├── features │ │ │ ├── __init__.py │ │ │ ├── categoricals_test.py │ │ │ ├── conditionals_test.py │ │ │ ├── constraints_test.py │ │ │ ├── grid_test.py │ │ │ ├── multimetric_test.py │ │ │ ├── multiple_features_test.py │ │ │ ├── multisolution_test.py │ │ │ ├── multitask_test.py │ │ │ ├── optimization_test.py │ │ │ ├── optimized_grid_test.py │ │ │ ├── priors_test.py │ │ │ ├── progress_test.py │ │ │ ├── random_test.py │ │ │ ├── run_assignments_meta.py │ │ │ ├── search_test.py │ │ │ ├── stopping_test.py │ │ │ ├── training_run_fields_test.py │ │ │ └── xgb_test.py │ │ ├── requests │ │ │ ├── __init__.py │ │ │ ├── api_test.py │ │ │ └── parsing_test.py │ │ └── test_base.py │ └── web │ │ ├── __init__.py │ │ ├── client_test.py │ │ ├── cookie_test.py │ │ ├── csrf_test.py │ │ ├── experiment │ │ ├── __init__.py │ │ ├── copy_test.py │ │ ├── csv_test.py │ │ ├── experiment_test.py │ │ └── test_base.py │ │ ├── fields_test.py │ │ ├── guest_test.py │ │ ├── login_test.py │ │ ├── methods_test.py │ │ ├── organization_test.py │ │ ├── page_test.py │ │ ├── project_test.py │ │ ├── proxy_test.py │ │ ├── run_test.py │ │ ├── session_test.py │ │ ├── signup_test.py │ │ ├── test_base.py │ │ ├── token_test.py │ │ └── user_test.py ├── playwright_codegen.sh ├── python │ └── sigopttest │ │ ├── __init__.py │ │ ├── api │ │ ├── __init__.py │ │ ├── auth.py │ │ └── common.py │ │ ├── assignments │ │ ├── __init__.py │ │ └── model.py │ │ ├── authorization │ │ ├── __init__.py │ │ ├── client.py │ │ ├── empty.py │ │ ├── guest.py │ │ ├── member.py │ │ ├── test_base.py │ │ └── user.py │ │ ├── base │ │ ├── __init__.py │ │ ├── log.py │ │ └── utils.py │ │ ├── best_practices │ │ ├── __init__.py │ │ └── service_test.py │ │ ├── common │ │ ├── __init__.py │ │ ├── functions.py │ │ ├── lists.py │ │ ├── numbers.py │ │ ├── objects.py │ │ ├── sigopt_datetime.py │ │ ├── strings.py │ │ └── struct.py │ │ ├── conditionals │ │ ├── __init__.py │ │ ├── from_json.py │ │ └── util.py │ │ ├── db │ │ ├── __init__.py │ │ ├── column.py │ │ └── service.py │ │ ├── experiment │ │ ├── __init__.py │ │ ├── best_test.py │ │ └── model.py │ │ ├── file │ │ ├── __init__.py │ │ └── test_model.py │ │ ├── handlers │ │ ├── __init__.py │ │ ├── base │ │ │ ├── __init__.py │ │ │ └── handler.py │ │ ├── experiments │ │ │ ├── __init__.py │ │ │ └── best_assignments_test.py │ │ └── validate │ │ │ ├── __init__.py │ │ │ ├── assignments_test.py │ │ │ ├── experiment.py │ │ │ └── validate_dict.py │ │ ├── importance │ │ ├── __init__.py │ │ └── importances_test.py │ │ ├── json │ │ ├── __init__.py │ │ ├── assignments.py │ │ ├── builder │ │ │ ├── __init__.py │ │ │ ├── client.py │ │ │ ├── experiment.py │ │ │ ├── json_builder.py │ │ │ ├── organization.py │ │ │ ├── permission.py │ │ │ ├── suggestion.py │ │ │ ├── test_base.py │ │ │ └── user.py │ │ ├── render.py │ │ └── stopping_criteria.py │ │ ├── log │ │ ├── __init__.py │ │ ├── base.py │ │ └── service.py │ │ ├── math │ │ ├── __init__.py │ │ ├── initialization.py │ │ └── interval_test.py │ │ ├── monitoring │ │ ├── __init__.py │ │ └── exceptions.py │ │ ├── net │ │ ├── __init__.py │ │ └── responses_test.py │ │ ├── note │ │ ├── __init__.py │ │ └── model.py │ │ ├── observation │ │ ├── __init__.py │ │ └── model.py │ │ ├── optimize │ │ ├── __init__.py │ │ ├── args.py │ │ ├── optimizer.py │ │ └── sources │ │ │ ├── __init__.py │ │ │ ├── base_test.py │ │ │ ├── categorical_test.py │ │ │ ├── conditional_test.py │ │ │ ├── model_test.py │ │ │ └── search_test.py │ │ ├── pagination │ │ ├── __init__.py │ │ └── paging.py │ │ ├── parameters │ │ ├── __init__.py │ │ └── from_json.py │ │ ├── protobuf │ │ ├── __init__.py │ │ ├── json.py │ │ └── test.py │ │ ├── py.typed │ │ ├── queue │ │ ├── __init__.py │ │ ├── message.py │ │ ├── metrics.py │ │ └── router.py │ │ ├── sigoptcompute │ │ ├── __init__.py │ │ ├── adapter.py │ │ └── multimetric.py │ │ ├── suggestion │ │ ├── __init__.py │ │ ├── broker │ │ │ ├── __init__.py │ │ │ └── base.py │ │ ├── from_json.py │ │ ├── model_test.py │ │ ├── sampler │ │ │ ├── __init__.py │ │ │ ├── categorical_test.py │ │ │ ├── sampler.py │ │ │ └── xgb_metalearning_sampler.py │ │ └── unprocessed │ │ │ ├── __init__.py │ │ │ └── source.py │ │ ├── suggestions │ │ ├── __init__.py │ │ └── unprocessed │ │ │ ├── __init__.py │ │ │ └── model.py │ │ ├── task │ │ ├── __init__.py │ │ └── from_json.py │ │ ├── token │ │ ├── __init__.py │ │ └── model.py │ │ └── user │ │ ├── __init__.py │ │ └── model.py ├── run_integration_tests.sh ├── test_dev_env.sh ├── test_runner.py ├── unit_test_runner.py └── unit_tests.sh ├── tools ├── crosshair │ ├── main.py │ └── pre_commit_entry.sh ├── dead-code │ ├── run_vulture.py │ └── web_resources.py ├── protobuf │ ├── compile.sh │ └── install.sh ├── secure │ └── generate_random_string.sh └── tls │ ├── generate_root_ca.sh │ └── generate_san_cert.sh ├── trivy-secret.yaml ├── trivy.yaml ├── web ├── __mocks__ │ ├── file_mock.js │ └── module_mock.js ├── js │ ├── __tests__ │ │ └── utils-test.js │ ├── ag_grid.js │ ├── alert │ │ ├── __tests__ │ │ │ └── alert.js │ │ ├── alert.js │ │ ├── base.js │ │ ├── broker.js │ │ ├── error.js │ │ ├── notify.js │ │ └── panel.js │ ├── api │ │ ├── __tests__ │ │ │ ├── api-requestor-test.js │ │ │ ├── legacy-api-client-test.js │ │ │ └── promise-api-client-test.js │ │ ├── api-requestor.js │ │ ├── legacy-api-client.js │ │ └── promise-api-client.js │ ├── brand │ │ └── constant.js │ ├── chart │ │ ├── __tests__ │ │ │ ├── best_seen_trace_test.js │ │ │ └── thresholds_test.js │ │ ├── axis_selector.js │ │ ├── best_seen_trace.js │ │ ├── chart.js │ │ ├── constants.js │ │ ├── improvement_chart.js │ │ ├── mpm_checkpoints_chart.js │ │ ├── mpm_histogram.js │ │ ├── range.js │ │ ├── scale_selector.js │ │ ├── scatter_plot.js │ │ ├── scatter_plot_4d.js │ │ ├── task_distribution_chart.js │ │ ├── thresholds.js │ │ ├── training_runs_axis.js │ │ ├── usage_chart.js │ │ └── values.js │ ├── chrome │ │ ├── SigOpt_logo_horiz.svg │ │ ├── __tests__ │ │ │ └── json-test.js │ │ ├── body.js │ │ ├── chrome.js │ │ ├── constants.js │ │ ├── head.js │ │ ├── head_hash.js │ │ ├── head_js.js │ │ ├── json.js │ │ ├── logout.js │ │ ├── navbar.js │ │ ├── navbar.less │ │ ├── navlink.js │ │ ├── root.js │ │ ├── script.js │ │ └── session.js │ ├── client │ │ └── dropdown.js │ ├── component │ │ ├── __tests__ │ │ │ ├── dropdown-test.js │ │ │ ├── notes_editor-test.js │ │ │ ├── tabs-test.js │ │ │ └── text_editor-test.js │ │ ├── action_button.js │ │ ├── breadcrumb │ │ │ ├── index.js │ │ │ └── style.less │ │ ├── buttons.js │ │ ├── chiclets.js │ │ ├── code_block.js │ │ ├── code_generator │ │ │ ├── base.js │ │ │ ├── python.js │ │ │ ├── python_experiment.ms │ │ │ └── python_experiment_footer.ms │ │ ├── cta_tile.js │ │ ├── custom_tooltip.js │ │ ├── delete_button │ │ │ ├── delete_button.js │ │ │ └── undelete_button.js │ │ ├── dropdown.js │ │ ├── fieldeditor.js │ │ ├── form.js │ │ ├── glyph │ │ │ ├── angle-down │ │ │ │ ├── glyph.less │ │ │ │ └── index.js │ │ │ ├── angle-left │ │ │ │ ├── glyph.less │ │ │ │ └── index.js │ │ │ ├── angle-right │ │ │ │ ├── glyph.less │ │ │ │ └── index.js │ │ │ ├── arrow-turn-up │ │ │ │ ├── glyph.less │ │ │ │ └── index.js │ │ │ ├── arrow-up-right-from-square │ │ │ │ ├── glyph.less │ │ │ │ └── index.js │ │ │ ├── arrows-rotate │ │ │ │ ├── glyph.less │ │ │ │ └── index.js │ │ │ ├── arrows-up-down-left-right │ │ │ │ ├── glyph.less │ │ │ │ └── index.js │ │ │ ├── bars │ │ │ │ ├── glyph.less │ │ │ │ └── index.js │ │ │ ├── base.js │ │ │ ├── base.less │ │ │ ├── certificate │ │ │ │ ├── glyph.less │ │ │ │ └── index.js │ │ │ ├── chart-line │ │ │ │ ├── glyph.less │ │ │ │ └── index.js │ │ │ ├── check │ │ │ │ ├── glyph.less │ │ │ │ └── index.js │ │ │ ├── chevron-down │ │ │ │ ├── glyph.less │ │ │ │ └── index.js │ │ │ ├── chevron-right │ │ │ │ ├── glyph.less │ │ │ │ └── index.js │ │ │ ├── chevron-up │ │ │ │ ├── glyph.less │ │ │ │ └── index.js │ │ │ ├── circle-arrow-right │ │ │ │ ├── glyph.less │ │ │ │ └── index.js │ │ │ ├── circle-exclamation │ │ │ │ ├── glyph.less │ │ │ │ └── index.js │ │ │ ├── circle-question │ │ │ │ ├── glyph.less │ │ │ │ └── index.js │ │ │ ├── circle │ │ │ │ ├── glyph.less │ │ │ │ └── index.js │ │ │ ├── clock │ │ │ │ ├── glyph.less │ │ │ │ └── index.js │ │ │ ├── copy │ │ │ │ ├── glyph.less │ │ │ │ └── index.js │ │ │ ├── download │ │ │ │ ├── glyph.less │ │ │ │ └── index.js │ │ │ ├── ellipsis-vertical │ │ │ │ ├── glyph.less │ │ │ │ └── index.js │ │ │ ├── eye-slash │ │ │ │ ├── glyph.less │ │ │ │ └── index.js │ │ │ ├── eye │ │ │ │ ├── glyph.less │ │ │ │ └── index.js │ │ │ ├── file │ │ │ │ ├── glyph.less │ │ │ │ └── index.js │ │ │ ├── filter │ │ │ │ ├── glyph.less │ │ │ │ └── index.js │ │ │ ├── flag-checkered │ │ │ │ ├── glyph.less │ │ │ │ └── index.js │ │ │ ├── flask │ │ │ │ ├── glyph.less │ │ │ │ └── index.js │ │ │ ├── folder │ │ │ │ ├── glyph.less │ │ │ │ └── index.js │ │ │ ├── forward │ │ │ │ ├── glyph.less │ │ │ │ └── index.js │ │ │ ├── hard-drive │ │ │ │ ├── glyph.less │ │ │ │ └── index.js │ │ │ ├── image │ │ │ │ ├── glyph.less │ │ │ │ └── index.js │ │ │ ├── inbox │ │ │ │ ├── glyph.less │ │ │ │ └── index.js │ │ │ ├── link │ │ │ │ ├── glyph.less │ │ │ │ └── index.js │ │ │ ├── magnifying-glass │ │ │ │ ├── glyph.less │ │ │ │ └── index.js │ │ │ ├── note-sticky │ │ │ │ ├── glyph.less │ │ │ │ └── index.js │ │ │ ├── pencil │ │ │ │ ├── glyph.less │ │ │ │ └── index.js │ │ │ ├── plus │ │ │ │ ├── glyph.less │ │ │ │ └── index.js │ │ │ ├── screwdriver-wrench │ │ │ │ ├── glyph.less │ │ │ │ └── index.js │ │ │ ├── signal │ │ │ │ ├── glyph.less │ │ │ │ └── index.js │ │ │ ├── star │ │ │ │ ├── glyph.less │ │ │ │ └── index.js │ │ │ ├── support_glyph.sh │ │ │ ├── triangle-exclamation │ │ │ │ ├── glyph.less │ │ │ │ └── index.js │ │ │ ├── up-right-and-down-left-from-center │ │ │ │ ├── glyph.less │ │ │ │ └── index.js │ │ │ └── xmark │ │ │ │ ├── glyph.less │ │ │ │ └── index.js │ │ ├── icon.js │ │ ├── link.js │ │ ├── loading.js │ │ ├── make-editable.js │ │ ├── make-submittable.js │ │ ├── modal │ │ │ ├── __tests__ │ │ │ │ └── button.js │ │ │ ├── base.js │ │ │ ├── body.js │ │ │ ├── button.js │ │ │ ├── constant.js │ │ │ ├── footer.js │ │ │ ├── form.js │ │ │ ├── frame.js │ │ │ ├── interior.js │ │ │ ├── raw.js │ │ │ └── title.js │ │ ├── mouse_hover_hoc.js │ │ ├── new_client_banner.js │ │ ├── new_client_banner.less │ │ ├── notes_editor.js │ │ ├── page.js │ │ ├── page_body.js │ │ ├── page_section.js │ │ ├── page_title.js │ │ ├── progress_bar.js │ │ ├── promise_component.js │ │ ├── readonly.js │ │ ├── refresh_button │ │ │ ├── index.js │ │ │ └── style.less │ │ ├── search_bar.js │ │ ├── section.js │ │ ├── spinner.gif │ │ ├── spinner.js │ │ ├── spinner.less │ │ ├── tab_link.js │ │ ├── tabs.js │ │ ├── tabs.less │ │ ├── text_editor.js │ │ ├── tiles │ │ │ ├── base_tile.js │ │ │ ├── button_tile.js │ │ │ ├── chiclet_info_tile.js │ │ │ ├── index.js │ │ │ ├── list_info_tile.js │ │ │ └── text_list_tile.js │ │ ├── tooltip.js │ │ ├── tooltip.less │ │ └── tooltip_input.js │ ├── config │ │ ├── constants.js │ │ └── service.js │ ├── constants.js │ ├── error │ │ └── base.js │ ├── experiment │ │ ├── best_assignment_modal.js │ │ ├── best_assignments.js │ │ ├── best_assignments_loading.js │ │ ├── buttons │ │ │ ├── duplicate_button.js │ │ │ └── remove_button.js │ │ ├── conditionals │ │ │ ├── input.js │ │ │ └── section.js │ │ ├── constants.js │ │ ├── constraints.js │ │ ├── editor.js │ │ ├── experiment_title.js │ │ ├── experiment_title.less │ │ ├── find_clicked_observation.js │ │ ├── history │ │ │ ├── head.js │ │ │ ├── row.js │ │ │ ├── table.js │ │ │ └── table_wrapper.js │ │ ├── input.js │ │ ├── measurements.js │ │ ├── measurements_value.js │ │ ├── metadata.js │ │ ├── metrics.less │ │ ├── metrics │ │ │ ├── create.js │ │ │ ├── extended.js │ │ │ └── section.js │ │ ├── model_evaluation.js │ │ ├── model_evaluation.less │ │ ├── observation_modal.js │ │ ├── parameter.js │ │ ├── parameter_priors.js │ │ ├── progress.js │ │ ├── properties.js │ │ ├── runs_checkpoints.js │ │ ├── runs_checkpoints.less │ │ ├── runs_progress_bar.js │ │ ├── runs_progress_bar.less │ │ ├── search_box.js │ │ ├── section.js │ │ ├── sort_observations.js │ │ ├── sort_params.js │ │ ├── summary.js │ │ ├── table_card.less │ │ ├── tables.js │ │ ├── task.js │ │ ├── task.less │ │ ├── task_section.less │ │ ├── ui.js │ │ └── vertical_table.js │ ├── highlight │ │ └── index.js │ ├── icons │ │ ├── book.svg │ │ ├── favicon-16x16.png │ │ ├── favicon-32x32.png │ │ ├── favicon.ico │ │ └── sliders.svg │ ├── local_ag_table │ │ ├── cell_renderers.js │ │ ├── custom_filters │ │ │ ├── set_filter.js │ │ │ └── tag_filter.js │ │ ├── lib.js │ │ └── local_ag_table.js │ ├── log │ │ ├── client_logging_service.js │ │ ├── server_logging_service.js │ │ └── winston.js │ ├── mixins │ │ ├── __tests__ │ │ │ ├── editable-test.js │ │ │ └── submittable-test.js │ │ ├── editable.js │ │ └── submittable.js │ ├── net │ │ ├── __tests__ │ │ │ ├── history-test.js │ │ │ ├── list-test.js │ │ │ ├── paging-test.js │ │ │ ├── poller-test.js │ │ │ ├── pool-test.js │ │ │ ├── source-test.js │ │ │ └── url-test.js │ │ ├── ajax.js │ │ ├── constant.js │ │ ├── continue.js │ │ ├── email.js │ │ ├── errors.js │ │ ├── history.js │ │ ├── list.js │ │ ├── navigator.js │ │ ├── paging.js │ │ ├── poller.js │ │ ├── pool.js │ │ ├── redirect.js │ │ ├── refresh.js │ │ ├── requestor.js │ │ ├── response.js │ │ ├── session.js │ │ ├── source.js │ │ ├── streaming_pager.js │ │ ├── url.js │ │ └── visibility.js │ ├── page.js │ ├── pages │ │ ├── aiexperiment │ │ │ └── list │ │ │ │ └── endpoint.js │ │ ├── change_password │ │ │ ├── endpoint.js │ │ │ └── page.js │ │ ├── client │ │ │ ├── create │ │ │ │ ├── endpoint.js │ │ │ │ └── page.js │ │ │ └── delete │ │ │ │ ├── endpoint.js │ │ │ │ └── page.js │ │ ├── debug │ │ │ ├── endpoint.js │ │ │ └── page.js │ │ ├── default.js │ │ ├── docs │ │ │ ├── codegen.js │ │ │ ├── manuals │ │ │ │ └── lib │ │ │ │ │ ├── apitoken.js │ │ │ │ │ ├── get_started │ │ │ │ │ ├── configure_ai_module.txt │ │ │ │ │ └── python.js │ │ │ │ │ └── renderedtemplate.js │ │ │ └── templates │ │ │ │ ├── franke_python_p1.ms │ │ │ │ ├── franke_python_p2.ms │ │ │ │ ├── install_python.ms │ │ │ │ ├── short_model.ms │ │ │ │ └── short_optimize_yaml.ms │ │ ├── email_verify │ │ │ ├── endpoint.js │ │ │ └── page.js │ │ ├── entry.js │ │ ├── error │ │ │ ├── 400.png │ │ │ ├── 404.png │ │ │ ├── 500.png │ │ │ ├── endpoint.js │ │ │ ├── images.js │ │ │ ├── page.js │ │ │ └── sickness.js │ │ ├── experiment │ │ │ ├── __tests__ │ │ │ │ └── csvutils-test.js │ │ │ ├── admin │ │ │ │ ├── endpoint.js │ │ │ │ ├── experiment_overview_tile_header.js │ │ │ │ └── page.js │ │ │ ├── ai │ │ │ │ ├── analysis │ │ │ │ │ └── endpoint.js │ │ │ │ ├── api │ │ │ │ │ └── endpoint.js │ │ │ │ ├── history │ │ │ │ │ └── endpoint.js │ │ │ │ ├── inform │ │ │ │ │ ├── endpoint.js │ │ │ │ │ ├── page.js │ │ │ │ │ └── page.less │ │ │ │ ├── properties │ │ │ │ │ └── endpoint.js │ │ │ │ └── view │ │ │ │ │ └── endpoint.js │ │ │ ├── common │ │ │ │ ├── analysis │ │ │ │ │ └── page.js │ │ │ │ ├── api │ │ │ │ │ └── page.js │ │ │ │ ├── create │ │ │ │ │ ├── endpoint.js │ │ │ │ │ └── page.js │ │ │ │ ├── history │ │ │ │ │ └── page.js │ │ │ │ ├── properties │ │ │ │ │ └── page.js │ │ │ │ └── view │ │ │ │ │ ├── add_data_prompt.js │ │ │ │ │ ├── observation_progress_bar │ │ │ │ │ ├── __tests__ │ │ │ │ │ │ └── observation_progress_bar-test.js │ │ │ │ │ ├── index.js │ │ │ │ │ └── labels.js │ │ │ │ │ ├── page.js │ │ │ │ │ ├── page.less │ │ │ │ │ ├── polling_history_table.js │ │ │ │ │ └── share_button.js │ │ │ ├── core │ │ │ │ ├── analysis │ │ │ │ │ └── endpoint.js │ │ │ │ ├── api │ │ │ │ │ └── endpoint.js │ │ │ │ ├── bulkdownload │ │ │ │ │ └── endpoint.js │ │ │ │ ├── bulkupload │ │ │ │ │ ├── endpoint.js │ │ │ │ │ └── page.js │ │ │ │ ├── copy │ │ │ │ │ └── endpoint.js │ │ │ │ ├── history │ │ │ │ │ └── endpoint.js │ │ │ │ ├── properties │ │ │ │ │ └── endpoint.js │ │ │ │ ├── report │ │ │ │ │ ├── endpoint.js │ │ │ │ │ └── page.js │ │ │ │ ├── reset │ │ │ │ │ └── endpoint.js │ │ │ │ ├── suggestions │ │ │ │ │ ├── endpoint.js │ │ │ │ │ └── page.js │ │ │ │ └── view │ │ │ │ │ └── endpoint.js │ │ │ ├── csvutils.js │ │ │ ├── list │ │ │ │ ├── ai_quick_start_guide.js │ │ │ │ ├── buttons.js │ │ │ │ ├── constants.js │ │ │ │ ├── controller.js │ │ │ │ ├── core_quick_start_guide.js │ │ │ │ ├── empty_state.js │ │ │ │ ├── endpoint.js │ │ │ │ ├── list.js │ │ │ │ ├── page.js │ │ │ │ ├── row.js │ │ │ │ └── search_tools_wrapper.js │ │ │ ├── page_wrapper.js │ │ │ └── server │ │ │ │ └── endpoint.js │ │ ├── forgot_password │ │ │ ├── endpoint.js │ │ │ └── page.js │ │ ├── guest │ │ │ └── endpoint.js │ │ ├── home │ │ │ ├── components │ │ │ │ ├── learn_more.js │ │ │ │ ├── project_analysis.png │ │ │ │ ├── run_commands.ms │ │ │ │ └── welcome.js │ │ │ ├── endpoint.js │ │ │ ├── get_recent_activity.js │ │ │ ├── page.js │ │ │ ├── page.less │ │ │ └── runs_table.js │ │ ├── landing │ │ │ ├── components │ │ │ │ └── login_signup.js │ │ │ ├── login │ │ │ │ ├── endpoint.js │ │ │ │ └── page.js │ │ │ └── logout.js │ │ ├── organization │ │ │ ├── experiments │ │ │ │ ├── async_team_usage.js │ │ │ │ ├── async_user_usage.js │ │ │ │ ├── endpoint.js │ │ │ │ ├── experiment_usage.js │ │ │ │ ├── experiments_usage_table.js │ │ │ │ ├── lib.js │ │ │ │ └── page.js │ │ │ ├── helpers.js │ │ │ ├── page_wrapper.js │ │ │ ├── runs │ │ │ │ ├── async_team_usage.js │ │ │ │ ├── async_user_usage.js │ │ │ │ ├── endpoint.js │ │ │ │ ├── lib.js │ │ │ │ ├── page.js │ │ │ │ ├── runs_usage.js │ │ │ │ └── runs_usage_table.js │ │ │ ├── server │ │ │ │ └── endpoint.js │ │ │ ├── teams │ │ │ │ ├── endpoint.js │ │ │ │ └── page.js │ │ │ └── users │ │ │ │ ├── endpoint.js │ │ │ │ ├── helper.js │ │ │ │ ├── membership_table │ │ │ │ ├── table.js │ │ │ │ └── table_row.js │ │ │ │ ├── modal │ │ │ │ ├── create_invite_admin.js │ │ │ │ ├── create_invite_owner.js │ │ │ │ └── edit_teams.js │ │ │ │ ├── page.js │ │ │ │ ├── permissions_editor │ │ │ │ ├── edit_row.js │ │ │ │ ├── editor.js │ │ │ │ └── new_row.js │ │ │ │ └── user │ │ │ │ ├── endpoint.js │ │ │ │ └── page.js │ │ ├── project │ │ │ ├── analysis │ │ │ │ ├── components │ │ │ │ │ ├── dimension_select.js │ │ │ │ │ ├── runs_select.js │ │ │ │ │ └── widget_title_editor.js │ │ │ │ ├── dashboard │ │ │ │ │ ├── big_widget_modal.js │ │ │ │ │ ├── create_dashboards.js │ │ │ │ │ ├── new_widget_modal.js │ │ │ │ │ ├── runs_dashboard.js │ │ │ │ │ └── runs_dashboard.less │ │ │ │ ├── endpoint.js │ │ │ │ ├── lib │ │ │ │ │ ├── color_dimension.js │ │ │ │ │ ├── dimensions.js │ │ │ │ │ └── errors.js │ │ │ │ ├── page.js │ │ │ │ ├── state │ │ │ │ │ ├── dashboards_slice.js │ │ │ │ │ ├── root_reducer.js │ │ │ │ │ └── store.js │ │ │ │ └── widgets │ │ │ │ │ ├── __examples__ │ │ │ │ │ ├── editor.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── state.js │ │ │ │ │ └── widget.js │ │ │ │ │ ├── checkpoints_widget │ │ │ │ │ ├── editor.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── state.js │ │ │ │ │ └── widget.js │ │ │ │ │ ├── common_widget_editor.js │ │ │ │ │ ├── multi_scatter_widget │ │ │ │ │ ├── editor.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── plotly_json_builder.js │ │ │ │ │ ├── state.js │ │ │ │ │ └── widget.js │ │ │ │ │ ├── parameter_range_widget │ │ │ │ │ ├── index.js │ │ │ │ │ ├── state.js │ │ │ │ │ └── widget.js │ │ │ │ │ ├── pc_chart_widget │ │ │ │ │ ├── editor.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── state.js │ │ │ │ │ └── widget.js │ │ │ │ │ ├── run_info_widget │ │ │ │ │ ├── index.js │ │ │ │ │ ├── state.js │ │ │ │ │ └── widget.js │ │ │ │ │ ├── runs_table_widget │ │ │ │ │ ├── index.js │ │ │ │ │ ├── state.js │ │ │ │ │ └── widget.js │ │ │ │ │ ├── widget_container.js │ │ │ │ │ ├── widget_state_builder.js │ │ │ │ │ └── widgets.js │ │ │ ├── components │ │ │ │ ├── project_code_modal.js │ │ │ │ ├── runs_table │ │ │ │ │ ├── data │ │ │ │ │ │ └── run_columns.js │ │ │ │ │ ├── runs_table.js │ │ │ │ │ └── runs_table.less │ │ │ │ └── views_dropdown.js │ │ │ ├── data │ │ │ │ └── dimensions.js │ │ │ ├── experiments │ │ │ │ ├── endpoint.js │ │ │ │ └── page.js │ │ │ ├── notes │ │ │ │ ├── endpoint.js │ │ │ │ └── page.js │ │ │ ├── overview │ │ │ │ ├── endpoint.js │ │ │ │ ├── page.js │ │ │ │ ├── recent_activity.js │ │ │ │ └── table_magnitude.js │ │ │ ├── page_wrapper.js │ │ │ ├── runs │ │ │ │ ├── endpoint.js │ │ │ │ ├── page.js │ │ │ │ ├── project_run_table.js │ │ │ │ └── store.js │ │ │ ├── server │ │ │ │ └── endpoint.js │ │ │ ├── state │ │ │ │ ├── dimensions_slice.js │ │ │ │ ├── resources_slice.js │ │ │ │ ├── services_slice.js │ │ │ │ └── views_slice.js │ │ │ └── styles │ │ │ │ ├── caret_glyph.less │ │ │ │ └── tools_glyph.less │ │ ├── projects │ │ │ ├── create_project_button.js │ │ │ ├── endpoint.js │ │ │ ├── page.js │ │ │ └── project_modal.js │ │ ├── session │ │ │ ├── pop.js │ │ │ └── push.js │ │ ├── setup │ │ │ ├── endpoint.js │ │ │ ├── page.js │ │ │ └── setup.less │ │ ├── signup │ │ │ ├── endpoint.js │ │ │ └── page.js │ │ ├── token_dashboard │ │ │ ├── endpoint.js │ │ │ └── page.js │ │ ├── token_info │ │ │ ├── endpoint.js │ │ │ └── page.js │ │ ├── training_run │ │ │ ├── constants.js │ │ │ ├── page_wrapper.js │ │ │ ├── server │ │ │ │ └── endpoint.js │ │ │ ├── utils.js │ │ │ └── view │ │ │ │ ├── code.js │ │ │ │ ├── complex_table.js │ │ │ │ ├── dataset.js │ │ │ │ ├── endpoint.js │ │ │ │ ├── feature_importances.js │ │ │ │ ├── files.js │ │ │ │ ├── files.less │ │ │ │ ├── info.js │ │ │ │ ├── log.js │ │ │ │ ├── metadata.js │ │ │ │ ├── metric.js │ │ │ │ ├── optimization.js │ │ │ │ ├── page.js │ │ │ │ ├── parameter.js │ │ │ │ ├── section.js │ │ │ │ ├── sort_object.js │ │ │ │ └── table.js │ │ ├── user │ │ │ └── delete │ │ │ │ ├── endpoint.js │ │ │ │ └── page.js │ │ └── user_profile │ │ │ ├── endpoint.js │ │ │ └── page.js │ ├── pagination │ │ ├── __tests__ │ │ │ └── pageable-test.js │ │ ├── make-pageable.js │ │ ├── paginated-table.js │ │ ├── paging-block.js │ │ ├── paging-table-contents.js │ │ └── paging-table.js │ ├── parameter │ │ ├── conditions │ │ │ └── info.js │ │ └── importance_table.js │ ├── project │ │ ├── get_started.js │ │ ├── get_started.less │ │ └── tile.js │ ├── queued_suggestion │ │ └── modal.js │ ├── react │ │ ├── component.js │ │ ├── context-provider.js │ │ ├── force-remount.js │ │ ├── render.js │ │ ├── schemas.js │ │ └── tolerate-errors.js │ ├── react_chart │ │ ├── axis.js │ │ ├── experiment_improvement │ │ │ ├── chart.js │ │ │ ├── component.js │ │ │ ├── stagnation_info.js │ │ │ └── title.js │ │ ├── layout.js │ │ ├── parallel_coordinates │ │ │ ├── chart.js │ │ │ ├── chart_creator.js │ │ │ ├── template.js │ │ │ └── wrapper.js │ │ ├── react_chart.js │ │ ├── task_distribution.js │ │ ├── unified_chart.js │ │ ├── unified_chart_args.js │ │ ├── unified_constants.js │ │ └── unified_selectors.js │ ├── render │ │ ├── __tests__ │ │ │ ├── format_times-test.js │ │ │ └── nice-times-test.js │ │ ├── boolean.js │ │ ├── bootstrap.js │ │ ├── clipboard.js │ │ ├── entry_manifest.js │ │ ├── format_times.js │ │ └── nice-times.js │ ├── server │ │ ├── alert │ │ │ ├── broker.js │ │ │ └── notify.js │ │ ├── cookie │ │ │ ├── __tests__ │ │ │ │ └── utils-test.js │ │ │ ├── constants.js │ │ │ └── utils.js │ │ ├── csrf.js │ │ ├── dev.js │ │ ├── endpoint │ │ │ ├── __tests__ │ │ │ │ └── redirectable-test.js │ │ │ ├── app.js │ │ │ ├── base.js │ │ │ ├── check_page_exports.js │ │ │ ├── cookie.js │ │ │ ├── loggedin.js │ │ │ ├── react.js │ │ │ └── redirectable.js │ │ ├── express │ │ │ ├── __tests__ │ │ │ │ ├── csrf-test.js │ │ │ │ ├── error-test.js │ │ │ │ └── timeout-test.js │ │ │ ├── always.js │ │ │ ├── app.js │ │ │ ├── body.js │ │ │ ├── check_login_state.js │ │ │ ├── client.js │ │ │ ├── cookie.js │ │ │ ├── csrf.js │ │ │ ├── current_client.js │ │ │ ├── current_experiment.js │ │ │ ├── current_organization.js │ │ │ ├── current_user.js │ │ │ ├── error.js │ │ │ ├── experiment.js │ │ │ ├── headers.js │ │ │ ├── health.js │ │ │ ├── log.js │ │ │ ├── match.js │ │ │ ├── normalize_method.js │ │ │ ├── organization.js │ │ │ ├── project.js │ │ │ ├── redirect.js │ │ │ ├── response.js │ │ │ ├── routes.js │ │ │ ├── set_run_from_observation.js │ │ │ ├── static.js │ │ │ ├── timeout.js │ │ │ ├── token.js │ │ │ ├── too_busy.js │ │ │ ├── trace.js │ │ │ ├── training_run.js │ │ │ └── user.js │ │ ├── main.js │ │ ├── net │ │ │ └── requestor.js │ │ ├── prod.js │ │ ├── redirects │ │ │ └── observation_to_run.js │ │ ├── routes.js │ │ ├── routes │ │ │ ├── app.js │ │ │ └── lib.js │ │ ├── serializer │ │ │ ├── base.js │ │ │ ├── default.js │ │ │ ├── json.js │ │ │ ├── parameter.js │ │ │ └── stream.js │ │ └── user_prefs.js │ ├── services │ │ ├── base.js │ │ ├── client.js │ │ ├── global.js │ │ ├── inflate.js │ │ ├── page.js │ │ └── server.js │ ├── session │ │ ├── login_state.js │ │ ├── pop.js │ │ └── set.js │ ├── share │ │ ├── share_modal_all.js │ │ └── share_modal_one.js │ ├── suggestion │ │ ├── generate_suggestion_button.js │ │ ├── modal.js │ │ └── table.js │ ├── table │ │ └── header.js │ ├── tag │ │ ├── component.js │ │ ├── component.less │ │ ├── editor.js │ │ └── editor.less │ ├── time.js │ ├── token │ │ ├── delete_token_modal.js │ │ ├── rotate_token_modal.js │ │ ├── row.js │ │ └── types.js │ ├── training_run │ │ ├── constants.js │ │ ├── duration_chart.js │ │ ├── duration_chart.less │ │ ├── fetch.js │ │ └── histograms.js │ ├── user │ │ ├── data_source.js │ │ ├── helpers.js │ │ ├── name_span.js │ │ ├── password.js │ │ ├── resend.js │ │ └── roles.js │ ├── utils.js │ └── webpack │ │ ├── client_side.config.babel.js │ │ ├── client_side_config.js │ │ ├── constants.js │ │ ├── convert_loader.js │ │ ├── dev_node_server.js │ │ ├── entrypoint_template.js.ms │ │ ├── mustache_loader.js │ │ ├── page_entrypoint.js │ │ ├── page_server_side.js │ │ ├── server_side.config.babel.js │ │ ├── server_side_config.js │ │ ├── server_side_template.js.ms │ │ ├── settings.js │ │ ├── unused_code.config.babel.js │ │ └── unused_code_config.js ├── scripts │ └── generate_routes.js └── styles │ └── less │ ├── admin.less │ ├── change_password.less │ ├── component │ └── notes_editor.less │ ├── components │ ├── local_ag_table.less │ ├── search_bar.less │ ├── signup_page_modal.less │ └── status_glyphs.less │ ├── debug.less │ ├── dropdown.less │ ├── error.less │ ├── experiment │ ├── analysis.less │ ├── api.less │ ├── base.less │ ├── chart.less │ ├── component │ │ ├── editor.less │ │ └── typeahead.less │ ├── create.less │ ├── experiment.less │ ├── history.less │ ├── libs │ │ ├── history_table.less │ │ ├── mixins.less │ │ ├── observation_modal.less │ │ ├── quick_start_guide.less │ │ └── summary.less │ ├── list.less │ ├── list_buttons.less │ ├── properties.less │ ├── report.less │ ├── report_file.less │ ├── suggestions.less │ ├── view.less │ └── wizard.less │ ├── home.less │ ├── libs │ ├── alerts.less │ ├── base.less │ ├── bootstrap.less │ ├── buttons.less │ ├── chrome.less │ ├── code.less │ ├── common.less │ ├── constants.less │ ├── cta.less │ ├── fieldeditor.less │ ├── fonts │ │ └── metropolis.less │ ├── footer.less │ ├── forms.less │ ├── glyphs.less │ ├── grid.less │ ├── icons.less │ ├── input.less │ ├── legacy_base.less │ ├── mixins.less │ ├── modals.less │ ├── nav.less │ ├── navlink.less │ ├── paging.less │ ├── password_input.less │ ├── responsive_iframe.less │ ├── section.less │ ├── sortable_table_caret.less │ ├── tables.less │ ├── tabs.less │ └── webflow.less │ ├── login.less │ ├── organization │ ├── experiments.less │ ├── invite_modal.less │ ├── teams.less │ ├── user_detail.less │ └── users.less │ ├── project_notes_page.less │ ├── project_page.less │ ├── project_runs_analysis_page.less │ ├── project_runs_page_local.less │ ├── projects.less │ ├── projects_page.less │ ├── sidebar.less │ ├── signup.less │ ├── token_info.less │ ├── tokens.less │ ├── training_run │ ├── base.less │ ├── histograms.less │ └── view.less │ └── user.less ├── webpack.config.script.babel.js └── yarn.lock /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": ["@babel/plugin-proposal-class-properties"], 3 | "presets": [ 4 | [ 5 | "@babel/preset-env", 6 | { 7 | "corejs": 2, 8 | "targets": { 9 | "browsers": "last 2 versions", 10 | "ie": 11 11 | }, 12 | "useBuiltIns": "usage" 13 | } 14 | ], 15 | "@babel/preset-react" 16 | ] 17 | } 18 | -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | failure_console_logs 2 | screenshots 3 | node_modules/* 4 | wheels/* 5 | .venv 6 | venv 7 | 8 | .git/logs/* 9 | .git/modules/* 10 | .git/objects/* 11 | .git/rr-cache/* 12 | 13 | **/*.pyc 14 | **/__pycache__/ 15 | 16 | dist/ 17 | eggs/ 18 | sdist/ 19 | **/*.egg-info/ 20 | **/*.egg 21 | -------------------------------------------------------------------------------- /.env: -------------------------------------------------------------------------------- 1 | PROTOBUF_VERSION=23.3 2 | PYTHON_MAJOR=3 3 | PYTHON_MINOR=10 4 | PYTHON_PATCH=10 5 | NODE_MAJOR=18 6 | NGINX_VERSION=1 7 | POSTGRES_VERSION=11.2 8 | REDIS_VERSION=7.0 9 | 10 | sigopt_server_version=not_provided 11 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | *.svg binary 2 | -------------------------------------------------------------------------------- /.github/auto_assign-issues.yml: -------------------------------------------------------------------------------- 1 | assignees: 2 | - sigopt/Dev 3 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: "npm" 4 | directory: "/" 5 | reviewers: 6 | - "sigopt/eng" 7 | schedule: 8 | interval: "weekly" 9 | versioning-strategy: "lockfile-only" 10 | - package-ecosystem: "pip" 11 | directory: "/" 12 | reviewers: 13 | - "sigopt/eng" 14 | schedule: 15 | interval: "weekly" 16 | versioning-strategy: "lockfile-only" 17 | -------------------------------------------------------------------------------- /.github/workflows/coverity.yml: -------------------------------------------------------------------------------- 1 | name: Coverity Scan 2 | permissions: read-all 3 | on: 4 | push: 5 | branches: [main] 6 | jobs: 7 | coverity: 8 | runs-on: ubuntu-latest 9 | steps: 10 | - uses: actions/checkout@v4 11 | - run: git ls-files > git-ls-files.lst 12 | - uses: vapier/coverity-scan-action@v1 13 | with: 14 | project: sigopt-server 15 | email: ${{ secrets.COVERITY_SCAN_EMAIL }} 16 | token: ${{ secrets.COVERITY_SCAN_TOKEN }} 17 | build_language: other 18 | command: "--no-command --fs-capture-list git-ls-files.lst" 19 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "web/fonts/Metropolis"] 2 | path = web/fonts/Metropolis 3 | url = https://github.com/dw5/Metropolis 4 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | /.venv/ 2 | /venv/ 3 | /.cache/ 4 | /artifacts/ 5 | /scratch/ 6 | /web/fonts/ 7 | -------------------------------------------------------------------------------- /.prettierrc.yaml: -------------------------------------------------------------------------------- 1 | bracketSpacing: false 2 | printWidth: 80 3 | singleQuote: false 4 | trailingComma: all 5 | -------------------------------------------------------------------------------- /CODEOWNERS: -------------------------------------------------------------------------------- 1 | # default fallback for all files: 2 | * @sigopt/Dev 3 | -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | 6 | 7 | # Security Policy 8 | 9 | Intel is committed to rapidly addressing security vulnerabilities affecting our customers and providing clear guidance on the solution, impact, severity and mitigation. 10 | 11 | # Reporting a Vulnerability 12 | 13 | Please report any security vulnerabilities in this project [utilizing the guidelines here](https://www.intel.com/content/www/us/en/security-center/vulnerability-handling-guidelines.html). 14 | -------------------------------------------------------------------------------- /ci/compose.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # Copyright © 2023 Intel Corporation 3 | # 4 | # SPDX-License-Identifier: Apache License 2.0 5 | set -e 6 | set -o pipefail 7 | 8 | export TAG="$CIRCLE_SHA1" 9 | export MINIO_ROOT_PASSWORD=CHANGEME123 10 | export ENABLE_CONTRACTS=x 11 | 12 | exec docker compose --file=docker-compose.yml --env-file=./.env "$@" 13 | -------------------------------------------------------------------------------- /ci/create_development_tls_certs.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # Copyright © 2023 Intel Corporation 3 | # 4 | # SPDX-License-Identifier: Apache License 2.0 5 | set -e 6 | set -o pipefail 7 | 8 | export EDITOR=true 9 | 10 | ./tools/tls/generate_root_ca.sh 11 | ./tools/tls/generate_san_cert.sh 12 | -------------------------------------------------------------------------------- /ci/init_config.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # Copyright © 2023 Intel Corporation 3 | # 4 | # SPDX-License-Identifier: Apache License 2.0 5 | set -e 6 | set -o pipefail 7 | 8 | ./ci/compose.sh run -Ti --rm init-config sh -e </etc/minio/password.txt 11 | EOF 12 | -------------------------------------------------------------------------------- /ci/run_container_bg.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # Copyright © 2023 Intel Corporation 3 | # 4 | # SPDX-License-Identifier: Apache License 2.0 5 | set -e 6 | set -o pipefail 7 | 8 | ./ci/compose.sh build --progress=plain "$1" 9 | ./ci/compose.sh up -d "$@" 10 | -------------------------------------------------------------------------------- /ci/run_container_fg.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # Copyright © 2023 Intel Corporation 3 | # 4 | # SPDX-License-Identifier: Apache License 2.0 5 | set -e 6 | set -o pipefail 7 | 8 | ./ci/compose.sh build --progress=plain "$1" 9 | ./ci/compose.sh run --rm "$@" 10 | -------------------------------------------------------------------------------- /ci/worker_health_fail.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # Copyright © 2023 Intel Corporation 3 | # 4 | # SPDX-License-Identifier: Apache License 2.0 5 | set -e 6 | set -o pipefail 7 | 8 | for container in qworker qworker-analytics; do 9 | if ./ci/compose.sh run --rm --no-deps -e QWORKER_HEALTH_CHECK=true "$container"; then 10 | >&2 echo "worker-health test for $container passed when it should have failed (redis should not be running)!" 11 | exit 1 12 | else 13 | echo "worker-health test for $container failed successfully" 14 | fi 15 | done 16 | -------------------------------------------------------------------------------- /ci/worker_health_pass.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # Copyright © 2023 Intel Corporation 3 | # 4 | # SPDX-License-Identifier: Apache License 2.0 5 | set -e 6 | set -o pipefail 7 | 8 | for container in qworker qworker-analytics; do 9 | if ./ci/compose.sh run --rm --no-deps -e QWORKER_HEALTH_CHECK=true "$container"; then 10 | echo "worker-health test for $container passed" 11 | else 12 | >&2 echo "worker-health test for $container failed!" 13 | exit 1 14 | fi 15 | done 16 | -------------------------------------------------------------------------------- /config/circleci/00_circleci.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "test.json", 3 | "model": { 4 | "random_padding_suggestions": 0 5 | }, 6 | "web": { 7 | "show_exception_trace": false, 8 | "static_routes": { 9 | "/static/a": { 10 | "cacheAgeHours": 1 11 | } 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /config/circleci/10_test.json: -------------------------------------------------------------------------------- 1 | ../test.json -------------------------------------------------------------------------------- /config/circleci/99_defaults.json: -------------------------------------------------------------------------------- 1 | ../defaults.json -------------------------------------------------------------------------------- /config/development/00_development.json: -------------------------------------------------------------------------------- 1 | { 2 | "features": { 3 | "maxObservationsCreateCount": 2500 4 | }, 5 | "ratelimit": { 6 | "object_enumeration": { 7 | "max_attempts": 10, 8 | "window_length": 600 9 | } 10 | }, 11 | "web": { 12 | "cookie_name": "sigoptdevelopment-session-id" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /config/development/10_test.json: -------------------------------------------------------------------------------- 1 | ../test.json -------------------------------------------------------------------------------- /config/development/99_defaults.json: -------------------------------------------------------------------------------- 1 | ../defaults.json -------------------------------------------------------------------------------- /config/sigopt/00_client.yml: -------------------------------------------------------------------------------- 1 | clients: 2 | client: 3 | id: 1 4 | name: SigOpt 5 | user: 6 | email: owner@sigopt.ninja 7 | has_verified_email: true 8 | name: Default Owner 9 | enabled: true 10 | -------------------------------------------------------------------------------- /config/sigopt/10_redis.yml: -------------------------------------------------------------------------------- 1 | redis: 2 | host: redis.internal.sigopt.ninja 3 | ssl: false 4 | -------------------------------------------------------------------------------- /config/sigopt/10_user_uploads.yml: -------------------------------------------------------------------------------- 1 | user_uploads: 2 | s3: 3 | aws_access_key_id: ROOTUSER 4 | bucket: sigopt-user-uploads 5 | enabled: true 6 | external_url: https://sigopt.ninja:9000 7 | region: us-east-1 8 | -------------------------------------------------------------------------------- /config/sigopt/10_web.yml: -------------------------------------------------------------------------------- 1 | web: 2 | cookiejar_bucket: sigopt-cookiejar 3 | cookiejar_credentials: 4 | accessKeyId: ROOTUSER 5 | cookiejar_endpoint: http://minio.internal.sigopt.ninja:9000 6 | -------------------------------------------------------------------------------- /config/sigopt/99_defaults.json: -------------------------------------------------------------------------------- 1 | ../defaults.json -------------------------------------------------------------------------------- /deploy_sigopt_dev.sh: -------------------------------------------------------------------------------- 1 | scripts/launch/all_live.sh -------------------------------------------------------------------------------- /docker/images/nginx/Dockerfile: -------------------------------------------------------------------------------- 1 | # Copyright © 2022 Intel Corporation 2 | # 3 | # SPDX-License-Identifier: Apache License 2.0 4 | ARG NGINX_VERSION 5 | 6 | 7 | FROM nginx:${NGINX_VERSION}-alpine-slim 8 | 9 | RUN set -ex \ 10 | ; apk update \ 11 | ; apk upgrade --available \ 12 | ; : 13 | 14 | COPY nginx/ /etc/nginx/ 15 | 16 | RUN mkdir -p /var/run/nginx 17 | 18 | ENTRYPOINT [] 19 | 20 | CMD ["nginx", "-g", "daemon off;"] 21 | -------------------------------------------------------------------------------- /docker/images/test-runner/start-x11vnc.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # Copyright © 2023 Intel Corporation 3 | # 4 | # SPDX-License-Identifier: Apache License 2.0 5 | set -e 6 | set -o pipefail 7 | 8 | for _ in {1..30}; do 9 | if x11vnc -forever -shared -quiet -geometry "$GEOMETRY" -display "$DISPLAY" >/dev/null; then 10 | break 11 | fi 12 | sleep 1 13 | done 14 | -------------------------------------------------------------------------------- /docker/images/zigopt/bin/gunicorn_serve.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # Copyright © 2023 Intel Corporation 3 | # 4 | # SPDX-License-Identifier: Apache License 2.0 5 | set -e 6 | set -o pipefail 7 | 8 | export GUNICORN_ENABLED=x 9 | 10 | exec gunicorn \ 11 | --log-file - \ 12 | --worker-class gevent \ 13 | --limit-request-line 8190 \ 14 | "$@" 15 | -------------------------------------------------------------------------------- /nginx/errors/400.json: -------------------------------------------------------------------------------- 1 | { 2 | "message": "Bad Request", 3 | "status": 400 4 | } 5 | -------------------------------------------------------------------------------- /nginx/errors/405.json: -------------------------------------------------------------------------------- 1 | { 2 | "message": "Method Not Allowed", 3 | "status": 405 4 | } 5 | -------------------------------------------------------------------------------- /nginx/errors/500.json: -------------------------------------------------------------------------------- 1 | { 2 | "message": "Internal Server Error", 3 | "status": "500" 4 | } 5 | -------------------------------------------------------------------------------- /nginx/errors/501.json: -------------------------------------------------------------------------------- 1 | { 2 | "message": "Not Implemented", 3 | "status": "501" 4 | } 5 | -------------------------------------------------------------------------------- /nginx/errors/502.json: -------------------------------------------------------------------------------- 1 | { 2 | "message": "Bad Gateway", 3 | "status": "502" 4 | } 5 | -------------------------------------------------------------------------------- /nginx/errors/503.json: -------------------------------------------------------------------------------- 1 | { 2 | "message": "Service Unavailable", 3 | "status": "503" 4 | } 5 | -------------------------------------------------------------------------------- /nginx/errors/504.json: -------------------------------------------------------------------------------- 1 | { 2 | "message": "Gateway Time-out", 3 | "status": "504" 4 | } 5 | -------------------------------------------------------------------------------- /nginx/errors/505.json: -------------------------------------------------------------------------------- 1 | { 2 | "message": "HTTP Version Not Supported", 3 | "status": "505" 4 | } 5 | -------------------------------------------------------------------------------- /nginx/proxy/app.conf: -------------------------------------------------------------------------------- 1 | location / { 2 | set $backend app.internal.sigopt.ninja:4000; 3 | proxy_pass http://$backend; 4 | } 5 | -------------------------------------------------------------------------------- /nginx/proxy/webpack.conf: -------------------------------------------------------------------------------- 1 | location /webpack/ { 2 | set $backend webpack.internal.sigopt.ninja:7800; 3 | rewrite ^/webpack(.*) $1 break; 4 | proxy_pass https://$backend; 5 | proxy_redirect off; 6 | proxy_http_version 1.1; 7 | proxy_set_header Access-Control-Allow-Origin "*"; 8 | proxy_set_header Upgrade $http_upgrade; 9 | proxy_set_header Connection "Upgrade"; 10 | proxy_connect_timeout 7d; 11 | proxy_send_timeout 7d; 12 | proxy_read_timeout 7d; 13 | } 14 | -------------------------------------------------------------------------------- /nginx/server/sigopt.conf: -------------------------------------------------------------------------------- 1 | server { 2 | listen 4443 ssl; 3 | 4 | proxy_set_header Host $host; 5 | proxy_set_header X-Real-IP $remote_addr; 6 | proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 7 | proxy_pass_request_headers on; 8 | 9 | include tls.conf; 10 | include proxy/api.conf; 11 | include proxy/app.conf; 12 | include proxy/webpack.conf; 13 | } 14 | -------------------------------------------------------------------------------- /nginx/tls.conf: -------------------------------------------------------------------------------- 1 | ssl_protocols TLSv1.2 TLSv1.3; 2 | ssl_ciphers TLS_AES_256_GCM_SHA384:TLS_AES_128_GCM_SHA256:TLS_AES_128_CCM_SHA256:TLS_CHACHA20_POLY1305_SHA256:TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384:TLS_ECDHE_ECDSA_WITH_AES_257_GCM_SHA384:TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256:TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256; 3 | ssl_prefer_server_ciphers off; 4 | -------------------------------------------------------------------------------- /pp: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # Use this file to run your commands with PYTHONPATH appropriately set. 4 | # For example, instead of running 5 | # PYTHONPATH=/a/bunch/of:/long/paths yourcommand 6 | # you can just run 7 | # ./pp yourcommand 8 | # and the PYTHONPATH will be set appropriately, including the relevant 9 | # sigopt-server code. 10 | 11 | set -e 12 | set -o pipefail 13 | DIR=$( dirname "${BASH_SOURCE[0]}" ) 14 | source "$DIR/scripts/set_python_path.sh" "$DIR" 15 | exec -- "$@" 16 | -------------------------------------------------------------------------------- /repl: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | set -e 3 | set -o pipefail 4 | 5 | export REPL_FILE='.pyrepl.py' 6 | 7 | if [ -d "prod/venv" ]; then 8 | source prod/venv/bin/activate 9 | ipython=prod/venv/bin/ipython 10 | else 11 | set +e 12 | ipython=$(command -v ipython) 13 | set -e 14 | fi 15 | 16 | sep= 17 | if [ -x "$ipython" ]; then 18 | python="${ipython}" 19 | sep="--" 20 | fi 21 | 22 | ./pp "${python}" -i $REPL_FILE $sep "$@" 23 | -------------------------------------------------------------------------------- /scripts/compile/build_docker_images.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # Copyright © 2023 Intel Corporation 3 | # 4 | # SPDX-License-Identifier: Apache License 2.0 5 | set -e 6 | set -o pipefail 7 | 8 | 9 | git submodule init && git submodule update 10 | -------------------------------------------------------------------------------- /scripts/compile/generate_routes.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # Copyright © 2023 Intel Corporation 3 | # 4 | # SPDX-License-Identifier: Apache License 2.0 5 | set -e 6 | set -o pipefail 7 | 8 | CONFIG_DIR="${1:?Missing config dir as first argument}" 9 | 10 | echo "Generating route manifest for tests" 11 | yarn -s webpack --config=./webpack.config.script.babel.js --env=SCRIPT=./web/scripts/generate_routes.js 12 | SIGOPT_SERVER_CONFIG_DIR="$CONFIG_DIR" node artifacts/js_script/generate_routes.js 13 | -------------------------------------------------------------------------------- /scripts/compile/minify_js.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # Copyright © 2023 Intel Corporation 3 | # 4 | # SPDX-License-Identifier: Apache License 2.0 5 | set -e 6 | set -o pipefail 7 | 8 | export NODE_DOMAIN=server 9 | export NODE_OPTIONS="--max-old-space-size=2048" 10 | exec yarn -s webpack \ 11 | --config=web/js/webpack/client_side.config.babel.js \ 12 | --env=NODE_ENV=production 13 | -------------------------------------------------------------------------------- /scripts/compile/minify_js_server_bundle.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # Copyright © 2023 Intel Corporation 3 | # 4 | # SPDX-License-Identifier: Apache License 2.0 5 | set -e 6 | set -o pipefail 7 | 8 | export NODE_DOMAIN=server 9 | export NODE_OPTIONS="--max-old-space-size=2048" 10 | exec yarn -s webpack \ 11 | --config=web/js/webpack/server_side.config.babel.js \ 12 | --env=NODE_ENV=production 13 | -------------------------------------------------------------------------------- /scripts/dev/clean_pycache.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # Copyright © 2023 Intel Corporation 3 | # 4 | # SPDX-License-Identifier: Apache License 2.0 5 | set -e 6 | set -o pipefail 7 | 8 | find "$@" -name __pycache__ -depth -type d -exec rm -rf \{\} \; 9 | -------------------------------------------------------------------------------- /scripts/dev/clean_test_pycache.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # Copyright © 2023 Intel Corporation 3 | # 4 | # SPDX-License-Identifier: Apache License 2.0 5 | set -e 6 | set -o pipefail 7 | 8 | exec ./scripts/dev/clean_pycache.sh test 9 | -------------------------------------------------------------------------------- /scripts/dev/compile_protobuf_in_docker.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # Copyright © 2023 Intel Corporation 3 | # 4 | # SPDX-License-Identifier: Apache License 2.0 5 | set -e 6 | set -o pipefail 7 | 8 | ./scripts/launch/compose.sh run --rm \ 9 | protowatch \ 10 | ./tools/protobuf/compile.sh 11 | -------------------------------------------------------------------------------- /scripts/dev/createdb_in_docker.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # Copyright © 2023 Intel Corporation 3 | # 4 | # SPDX-License-Identifier: Apache License 2.0 5 | set -e 6 | set -o pipefail 7 | 8 | SIGOPT_SERVER_CONFIG_DIR="${1:-config/development/}" 9 | export SIGOPT_SERVER_CONFIG_DIR 10 | shift || true 11 | 12 | ./scripts/launch/compose.sh run --rm createdb \ 13 | python -m zigopt.utils.create_database "$@" 14 | -------------------------------------------------------------------------------- /scripts/dev/ensure_inits.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # Copyright © 2023 Intel Corporation 3 | # 4 | # SPDX-License-Identifier: Apache License 2.0 5 | set -e 6 | set -o pipefail 7 | 8 | DIR="$1" 9 | 10 | find "$DIR" -not -name __pycache__ -type d -exec touch {}/__init__.py \; 11 | -------------------------------------------------------------------------------- /scripts/launch/api_live.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # Copyright © 2023 Intel Corporation 3 | # 4 | # SPDX-License-Identifier: Apache License 2.0 5 | set -e 6 | set -o pipefail 7 | 8 | COMMAND=(./scripts/launch/all_live.sh --no-web --foreground "$@") 9 | 10 | exec "${COMMAND[@]}" 11 | -------------------------------------------------------------------------------- /scripts/launch/compose.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # Copyright © 2023 Intel Corporation 3 | # 4 | # SPDX-License-Identifier: Apache License 2.0 5 | set -e 6 | set -o pipefail 7 | 8 | export COMPOSE_PROJECT_NAME=sigopt-server-development 9 | 10 | export STATIC_DEV_SERVER_PORT=7800 11 | 12 | HOSTNAME="$(hostname)" 13 | export HOSTNAME 14 | 15 | HOST_PWD="$(pwd)" 16 | export HOST_PWD 17 | 18 | exec docker compose --file=docker-compose.dev.yml "$@" 19 | -------------------------------------------------------------------------------- /scripts/launch/repl.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # Copyright © 2023 Intel Corporation 3 | # 4 | # SPDX-License-Identifier: Apache License 2.0 5 | set -e 6 | set -o pipefail 7 | . scripts/launch/setup_env.sh "$@" 8 | ./scripts/launch/compose.sh run --rm repl 9 | -------------------------------------------------------------------------------- /scripts/launch/setup_env.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # Copyright © 2023 Intel Corporation 3 | # 4 | # SPDX-License-Identifier: Apache License 2.0 5 | # no_set_e 6 | # no_pipefail 7 | 8 | SIGOPT_SERVER_CONFIG_DIR="${1:-./config/development/}" 9 | export SIGOPT_SERVER_CONFIG_DIR 10 | export COMPOSE_HTTP_TIMEOUT=86400 11 | 12 | export PERSISTENT_SERVICES=( 13 | postgres 14 | redis 15 | minio 16 | ) 17 | -------------------------------------------------------------------------------- /scripts/launch/start_zigopt_services.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # Copyright © 2023 Intel Corporation 3 | # 4 | # SPDX-License-Identifier: Apache License 2.0 5 | set -e 6 | set -o pipefail 7 | . scripts/launch/setup_env.sh 8 | ./scripts/launch/compose.sh up --detach "${PERSISTENT_SERVICES[@]}" 9 | -------------------------------------------------------------------------------- /scripts/launch/stop_zigopt_services.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # Copyright © 2023 Intel Corporation 3 | # 4 | # SPDX-License-Identifier: Apache License 2.0 5 | set -e 6 | set -o pipefail 7 | . scripts/launch/setup_env.sh 8 | ./scripts/launch/compose.sh stop "${PERSISTENT_SERVICES[@]}" 9 | -------------------------------------------------------------------------------- /scripts/launch/web_live.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # Copyright © 2023 Intel Corporation 3 | # 4 | # SPDX-License-Identifier: Apache License 2.0 5 | set -e 6 | set -o pipefail 7 | 8 | COMMAND=(./scripts/launch/all_live.sh --web-only --foreground "$@") 9 | 10 | exec "${COMMAND[@]}" 11 | -------------------------------------------------------------------------------- /scripts/readlink.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # Copyright © 2022 Intel Corporation 3 | # 4 | # SPDX-License-Identifier: Apache License 2.0 5 | import argparse 6 | import os 7 | 8 | 9 | if __name__ == "__main__": 10 | parser = argparse.ArgumentParser() 11 | parser.add_argument("path", type=str) 12 | args = parser.parse_args() 13 | print(os.path.realpath(args.path)) # noqa: T001 14 | -------------------------------------------------------------------------------- /scripts/set_python_path.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # Copyright © 2023 Intel Corporation 3 | # 4 | # SPDX-License-Identifier: Apache License 2.0 5 | 6 | # no_set_e 7 | set -o pipefail 8 | 9 | API_DIR=$("$1/scripts/readlink.py" "$1") 10 | 11 | PYTHONPATH="$PYTHONPATH:$API_DIR/src/python" 12 | PYTHONPATH="$PYTHONPATH:$API_DIR/test/python" 13 | PYTHONPATH="$PYTHONPATH:$API_DIR/test" 14 | PYTHONPATH="$PYTHONPATH:$API_DIR" 15 | export PYTHONPATH 16 | -------------------------------------------------------------------------------- /src/protobuf/zigopt/protobuf/gen/checkpoint/checkpoint_data.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto2"; 2 | 3 | import "zigopt/protobuf/gen/observation/observationdata.proto"; 4 | import "google/protobuf/struct.proto"; 5 | 6 | message CheckpointData { 7 | repeated ObservationValue values = 1 [json_name='v']; 8 | optional google.protobuf.Struct metadata = 2 [json_name='m']; 9 | } 10 | -------------------------------------------------------------------------------- /src/protobuf/zigopt/protobuf/gen/client/clientmeta.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto2"; 2 | 3 | message ClientMeta { 4 | optional int64 date_created = 1 [json_name='date_created']; 5 | optional bool deleted = 2 [json_name='deleted']; 6 | optional ClientSecurity client_security = 3 [json_name='c_sec']; 7 | } 8 | 9 | message ClientSecurity { 10 | optional bool allow_users_to_see_experiments_by_others = 1 [default=true, json_name='c']; 11 | } 12 | -------------------------------------------------------------------------------- /src/protobuf/zigopt/protobuf/gen/color/color.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto2"; 2 | 3 | message Color { 4 | required int32 red = 1 [default=0, json_name='r']; 5 | required int32 green = 2 [default=0, json_name='g']; 6 | required int32 blue = 3 [default=0, json_name='b']; 7 | } 8 | -------------------------------------------------------------------------------- /src/protobuf/zigopt/protobuf/gen/file/filedata.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto2"; 2 | 3 | message S3StorageMethod { 4 | required string key = 1 [json_name='k']; 5 | } 6 | 7 | message FileData { 8 | optional int64 content_length = 1 [json_name='l', default=0]; 9 | optional bytes content_md5 = 2 [json_name='m']; 10 | optional string content_type = 3 [json_name='t']; 11 | oneof storage_method { 12 | S3StorageMethod s3 = 4 [json_name='a']; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/protobuf/zigopt/protobuf/gen/organization/organizationmeta.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto2"; 2 | 3 | message OrganizationMeta { 4 | optional bool academic = 1 [json_name='a']; 5 | repeated string email_domains = 2 [json_name='d']; 6 | optional bool allow_signup_from_email_domains = 3 [json_name='e']; 7 | optional int64 client_for_email_signup = 4 [json_name='c']; 8 | } 9 | -------------------------------------------------------------------------------- /src/protobuf/zigopt/protobuf/gen/permission/permissionmeta.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto2"; 2 | 3 | message PermissionMeta { 4 | optional bool can_admin = 1 [json_name='can_admin']; 5 | optional bool can_write = 2 [json_name='can_write']; 6 | optional bool can_read = 3 [json_name='can_read']; 7 | optional bool can_see_experiments_by_others = 4 [default=true, json_name='ce']; 8 | } 9 | -------------------------------------------------------------------------------- /src/protobuf/zigopt/protobuf/gen/project/projectdata.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto2"; 2 | 3 | import "google/protobuf/struct.proto"; 4 | 5 | message ProjectData { 6 | optional google.protobuf.Struct metadata = 1 [json_name='m']; 7 | } 8 | -------------------------------------------------------------------------------- /src/protobuf/zigopt/protobuf/gen/queued_suggestion/queued_suggestion_meta.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto2"; 2 | 3 | import "zigopt/protobuf/gen/suggest/suggestion.proto"; 4 | 5 | message QueuedSuggestionMeta { 6 | required SuggestionData suggestion_data = 1 [json_name='assignments']; 7 | optional bool deleted = 2 [json_name='deleted']; 8 | } 9 | -------------------------------------------------------------------------------- /src/protobuf/zigopt/protobuf/gen/suggest/suggestion.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto2"; 2 | 3 | import "zigopt/protobuf/gen/experiment/experimentmeta.proto"; 4 | 5 | message SuggestionMeta { 6 | optional SuggestionData suggestion_data = 1 [json_name='suggestion_data']; 7 | optional bool deleted = 2 [json_name='deleted']; 8 | } 9 | 10 | message SuggestionData { 11 | map assignments_map = 1 [json_name='assignments_map']; 12 | optional Task task = 2 [json_name='t']; 13 | } 14 | 15 | message ProcessedSuggestionMeta { 16 | optional string client_provided_data = 1 [json_name='client_provided_data']; 17 | } 18 | -------------------------------------------------------------------------------- /src/protobuf/zigopt/protobuf/gen/tag/tagdata.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto2"; 2 | 3 | import "zigopt/protobuf/gen/color/color.proto"; 4 | 5 | message TagData { 6 | required Color color = 1 [json_name='c']; 7 | } 8 | -------------------------------------------------------------------------------- /src/python/zigopt/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/api/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/api/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/api/blueprint.py: -------------------------------------------------------------------------------- 1 | # Copyright © 2022 Intel Corporation 2 | # 3 | # SPDX-License-Identifier: Apache License 2.0 4 | from flask import Blueprint 5 | 6 | 7 | class ApiBlueprint(Blueprint): 8 | def __init__(self, name, app): 9 | super().__init__(name, __name__) 10 | self.global_services = app.global_services 11 | self.request_local_services_factory = app.request_local_services_factory 12 | self.profiler = app.profiler 13 | self.tracer = app.tracer 14 | -------------------------------------------------------------------------------- /src/python/zigopt/api/v1/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/api/v1/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/assignments/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/assignments/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/authentication/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/authentication/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/authorization/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/authorization/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/authorization/constant.py: -------------------------------------------------------------------------------- 1 | # Copyright © 2022 Intel Corporation 2 | # 3 | # SPDX-License-Identifier: Apache License 2.0 4 | # Used to return a special status from a `can_act_on_X` check. 5 | # Falsy so that this will lead to a denied authorization 6 | class AuthorizationDenied: 7 | NEEDS_EMAIL_VERIFICATION: "AuthorizationDenied" 8 | 9 | def __init__(self, name): 10 | self.name = name 11 | 12 | def __bool__(self): 13 | return False 14 | 15 | 16 | AuthorizationDenied.NEEDS_EMAIL_VERIFICATION = AuthorizationDenied("needs_email_verification") 17 | -------------------------------------------------------------------------------- /src/python/zigopt/best_practices/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/best_practices/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/best_practices/constants.py: -------------------------------------------------------------------------------- 1 | # Copyright © 2022 Intel Corporation 2 | # 3 | # SPDX-License-Identifier: Apache License 2.0 4 | CONSTRAINTS_REASON = "experiment with constraints" 5 | MAX_DIMENSION_WITH_CONSTRAINTS = 100 6 | MAX_OBSERVATIONS_WITH_CONSTRAINTS = 2500 7 | MAX_LINEAR_CONSTRAINTS = 10 8 | 9 | CONDITIONALS_REASON = "experiment with conditionals" 10 | MAX_DIMENSION_WITH_CONDITIONALS = 20 11 | MAX_OBSERVATIONS_WITH_CONDITIONALS = 600 12 | MAX_CONDITIONALS_BREADTH = 6 13 | -------------------------------------------------------------------------------- /src/python/zigopt/brand/constant.py: -------------------------------------------------------------------------------- 1 | # Copyright © 2022 Intel Corporation 2 | # 3 | # SPDX-License-Identifier: Apache License 2.0 4 | # TODO: We insert this into other messages, if you change this you should audit its 5 | # usage to make sure it still makes sense. 6 | PRODUCT_NAME = "SigOpt" 7 | 8 | EMAIL_MAKO_TEMPLATE_FILE = "templates/base.mako" 9 | 10 | PYTHON_CLIENT_URL = "https://github.com/sigopt/sigopt-python" 11 | -------------------------------------------------------------------------------- /src/python/zigopt/client/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/client/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/common/context.py: -------------------------------------------------------------------------------- 1 | # Copyright © 2022 Intel Corporation 2 | # 3 | # SPDX-License-Identifier: Apache License 2.0 4 | 5 | 6 | class EmptyContext: 7 | """ 8 | Empty context manager, does nothing. Use like 9 | 10 | with EmptyContext(): 11 | pass 12 | 13 | 14 | Useful when you want to conditionally apply a context. For example, 15 | 16 | with (self.lock if use_lock else EmptyContext()): 17 | pass 18 | """ 19 | 20 | def __enter__(self) -> None: 21 | pass 22 | 23 | def __exit__(self, *_) -> None: 24 | pass 25 | -------------------------------------------------------------------------------- /src/python/zigopt/common/conversions.py: -------------------------------------------------------------------------------- 1 | # Copyright © 2022 Intel Corporation 2 | # 3 | # SPDX-License-Identifier: Apache License 2.0 4 | from typing import TypeVar 5 | 6 | 7 | T = TypeVar("T") 8 | 9 | __all__ = ["maybe_decode"] 10 | 11 | 12 | def maybe_decode(value: bytes | T) -> str | T: 13 | if isinstance(value, bytes): 14 | return value.decode("utf-8") 15 | return value 16 | -------------------------------------------------------------------------------- /src/python/zigopt/common/non_crypto_random.py: -------------------------------------------------------------------------------- 1 | # Copyright © 2022 Intel Corporation 2 | # 3 | # SPDX-License-Identifier: Apache License 2.0 4 | import random 5 | 6 | 7 | __all__ = ["non_crypto_random"] 8 | 9 | non_crypto_random = random 10 | -------------------------------------------------------------------------------- /src/python/zigopt/conditionals/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/conditionals/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/config.py: -------------------------------------------------------------------------------- 1 | # Copyright © 2023 Intel Corporation 2 | # 3 | # SPDX-License-Identifier: Apache License 2.0 4 | import os 5 | 6 | from sigopt_config.broker import ConfigBroker 7 | 8 | 9 | DEFAULT_CONFIG_DIR = "/etc/sigopt/server-config/" 10 | 11 | 12 | def load_config_from_env() -> ConfigBroker: 13 | config_dir = os.environ.get("SIGOPT_SERVER_CONFIG_DIR") or DEFAULT_CONFIG_DIR 14 | return ConfigBroker.from_directory(config_dir) 15 | -------------------------------------------------------------------------------- /src/python/zigopt/contracts.py: -------------------------------------------------------------------------------- 1 | # Copyright © 2023 Intel Corporation 2 | # 3 | # SPDX-License-Identifier: Apache License 2.0 4 | import os 5 | 6 | import deal 7 | 8 | 9 | def prepare_contracts(): 10 | if os.environ.get("ENABLE_CONTRACTS"): 11 | deal.enable() 12 | else: 13 | deal.disable(permament=True) # typo is intentional, this is how deal defines the argument 14 | -------------------------------------------------------------------------------- /src/python/zigopt/db/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/db/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/db/util.py: -------------------------------------------------------------------------------- 1 | # Copyright © 2022 Intel Corporation 2 | # 3 | # SPDX-License-Identifier: Apache License 2.0 4 | from enum import Enum 5 | 6 | 7 | class DeleteClause(Enum): 8 | NOT_DELETED = 1 9 | DELETED = 3 10 | ALL = 2 11 | -------------------------------------------------------------------------------- /src/python/zigopt/email/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/email/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/email/router.py: -------------------------------------------------------------------------------- 1 | # Copyright © 2022 Intel Corporation 2 | # 3 | # SPDX-License-Identifier: Apache License 2.0 4 | from zigopt.email.sender import BaseEmailService 5 | 6 | 7 | class EmailRouterService(BaseEmailService): 8 | def __init__(self, services, is_qworker): 9 | super().__init__(services) 10 | self.is_qworker = is_qworker 11 | 12 | def send(self, email): 13 | if not self.is_qworker and self.services.config_broker.get("email.queue", True): 14 | self.services.email_queue_service.send(email) 15 | else: 16 | self.services.immediate_email_sender.send(email) 17 | -------------------------------------------------------------------------------- /src/python/zigopt/email/templates/cant_reset_password.mako: -------------------------------------------------------------------------------- 1 |
2 |

3 | Somebody (hopefully you) requested a password reset for the ${product_name} account for ${to}. 4 | ${reason} 5 |

6 |

7 | Please confirm you have entered the correct email address. 8 | Visit ${app_url}/forgot_password 9 | to try resetting your password again. 10 |

11 |

12 | ${sign_off}
13 | ${team_name} 14 |

15 |
16 | -------------------------------------------------------------------------------- /src/python/zigopt/email/templates/email_change.mako: -------------------------------------------------------------------------------- 1 |
2 |

The email address for the ${product_name} account for ${to} was recently changed. You should now use ${new_email} to access your account, and all relevant communications will be sent there. If this was you, please disregard this email.

3 |

4 | Otherwise please contact us if 5 | you believe your account may have been compromised. 6 |

7 |

8 | ${sign_off}
9 | ${team_name} 10 |

11 |
12 | -------------------------------------------------------------------------------- /src/python/zigopt/email/templates/existing_email.mako: -------------------------------------------------------------------------------- 1 |
2 |

Hi,

3 |

4 | An attempt was made to create a new ${product_name} account using this email address. 5 | If it wasn't you, you can ignore this email. 6 |

7 |

8 | If you need to access your existing account, you can reset your password at ${app_url}/forgot_password. 9 |

10 |

11 | ${sign_off}
12 | ${team_name} 13 |

14 |
15 | -------------------------------------------------------------------------------- /src/python/zigopt/email/templates/invited_existing.mako: -------------------------------------------------------------------------------- 1 |
2 |

${inviter} has invited you to join the ${organization_name} ${product_name} organization on the following teams:

3 |
    4 | % for c in clients: 5 |
  • ${c.name}
  • 6 | % endfor 7 |
8 | 12 | Check It Out 13 | 14 |

15 | ${sign_off}
16 | ${team_name} 17 |

18 |
19 | -------------------------------------------------------------------------------- /src/python/zigopt/email/templates/invited_owner.mako: -------------------------------------------------------------------------------- 1 |
2 |

3 | ${inviter} has invited you to join the ${organization_name} organization on ${product_name} as an owner. 4 | As an owner you will have full access to all teams within the organization, as well as the ability to view 5 | organization-level information. 6 |

7 | 11 | Sign Up 12 | 13 |

14 | ${sign_off}
15 | ${team_name} 16 |

17 |
18 | -------------------------------------------------------------------------------- /src/python/zigopt/email/templates/invited_owner_existing.mako: -------------------------------------------------------------------------------- 1 |
2 |

3 | ${inviter} has invited you to join the ${organization_name} organization on ${product_name} as an owner. 4 | As an owner you will have full access to all teams within the organization, as well as the ability to view 5 | organization-level information. 6 |

7 | 11 | Check It Out 12 | 13 |

14 | ${sign_off}
15 | ${team_name} 16 |

17 |
18 | -------------------------------------------------------------------------------- /src/python/zigopt/email/templates/login_ratelimit.mako: -------------------------------------------------------------------------------- 1 |
2 |

Somebody (hopefully you) has repeatedly attempted to sign in to the ${product_name} account for ${to}. As a precaution, we have locked the account for a short time.

3 |

If this was not you, you may want to reset your password or otherwise ensure your account is secure.

4 |

5 | ${sign_off}
6 | ${team_name} 7 |

8 |
9 | -------------------------------------------------------------------------------- /src/python/zigopt/email/templates/password_change.mako: -------------------------------------------------------------------------------- 1 |
2 |

The password for the ${product_name} account for ${to} was recently changed. If this was you, please disregard this email.

3 |

4 | Otherwise please contact us if 5 | you believe your account may have been compromised. 6 |

7 |

8 | ${sign_off}
9 | ${team_name} 10 |

11 |
12 | -------------------------------------------------------------------------------- /src/python/zigopt/email/templates/verify_email.mako: -------------------------------------------------------------------------------- 1 |
2 |

3 | % if user_name is not None: 4 | Hi ${user_name}, 5 | % else: 6 | Welcome, 7 | % endif 8 |

9 |

10 | Thanks for choosing ${product_name}! Please confirm that 11 | you want to use this email address as 12 | your ${product_name} account email address. 13 |

14 | 18 | Verify Email 19 | 20 |

21 | ${sign_off}
22 | ${team_name} 23 |

24 |
25 | -------------------------------------------------------------------------------- /src/python/zigopt/exception/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/exception/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/experiment/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/experiment/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/fs/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/fs/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/fs/dir.py: -------------------------------------------------------------------------------- 1 | # Copyright © 2022 Intel Corporation 2 | # 3 | # SPDX-License-Identifier: Apache License 2.0 4 | import os 5 | 6 | 7 | def ensure_dir(path): 8 | try: 9 | os.makedirs(path) 10 | except OSError: 11 | pass 12 | -------------------------------------------------------------------------------- /src/python/zigopt/git/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/git/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/git/status.py: -------------------------------------------------------------------------------- 1 | # Copyright © 2022 Intel Corporation 2 | # 3 | # SPDX-License-Identifier: Apache License 2.0 4 | import subprocess # nosec 5 | 6 | 7 | def _run_git_command(command, path="."): 8 | return subprocess.check_output(command, cwd=path).decode("utf-8") 9 | 10 | 11 | def get_git_hash(path="."): 12 | return git_rev_parse("HEAD", path) 13 | 14 | 15 | def git_rev_parse(obj, path="."): 16 | return _run_git_command(["git", "rev-parse", obj], path).strip() 17 | -------------------------------------------------------------------------------- /src/python/zigopt/handlers/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/handlers/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/handlers/aiexperiments/best_training_runs.py: -------------------------------------------------------------------------------- 1 | # Copyright © 2022 Intel Corporation 2 | # 3 | # SPDX-License-Identifier: Apache License 2.0 4 | from zigopt.handlers.aiexperiments.base import AiExperimentHandler 5 | from zigopt.handlers.experiments.best_training_runs import ExperimentsBestTrainingRunsHandler 6 | 7 | 8 | class AiExperimentsBestTrainingRunsHandler(ExperimentsBestTrainingRunsHandler, AiExperimentHandler): 9 | pass 10 | -------------------------------------------------------------------------------- /src/python/zigopt/handlers/base/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/handlers/base/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/handlers/clients/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/handlers/clients/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/handlers/clients/users/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/handlers/clients/users/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/handlers/experiments/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/handlers/experiments/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/handlers/experiments/checkpoints/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/handlers/experiments/checkpoints/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/handlers/experiments/hyperparameters/delete.py: -------------------------------------------------------------------------------- 1 | # Copyright © 2022 Intel Corporation 2 | # 3 | # SPDX-License-Identifier: Apache License 2.0 4 | from zigopt.common import * 5 | from zigopt.api.auth import api_token_authentication 6 | from zigopt.handlers.experiments.base import ExperimentHandler 7 | from zigopt.protobuf.gen.token.tokenmeta_pb2 import WRITE 8 | 9 | 10 | class ExperimentsHyperparametersDeleteHandler(ExperimentHandler): 11 | authenticator = api_token_authentication 12 | required_permissions = WRITE 13 | 14 | def handle(self): 15 | self._reset_hyperparameters() 16 | -------------------------------------------------------------------------------- /src/python/zigopt/handlers/experiments/observations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/handlers/experiments/observations/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/handlers/experiments/queued_suggestions/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/handlers/experiments/queued_suggestions/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/handlers/experiments/suggestions/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/handlers/experiments/suggestions/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/handlers/experiments/training_runs/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/handlers/experiments/training_runs/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/handlers/files/detail.py: -------------------------------------------------------------------------------- 1 | # Copyright © 2022 Intel Corporation 2 | # 3 | # SPDX-License-Identifier: Apache License 2.0 4 | from zigopt.api.auth import api_token_authentication 5 | from zigopt.handlers.files.base import FileHandler 6 | from zigopt.protobuf.gen.token.tokenmeta_pb2 import READ 7 | 8 | 9 | class FileDetailHandler(FileHandler): 10 | authenticator = api_token_authentication 11 | required_permissions = READ 12 | 13 | def handle(self): 14 | return self.get_file_json_builder() 15 | -------------------------------------------------------------------------------- /src/python/zigopt/handlers/organizations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/handlers/organizations/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/handlers/organizations/invite/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/handlers/organizations/invite/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/handlers/plans/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/handlers/plans/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/handlers/training_runs/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/handlers/training_runs/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/handlers/users/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/handlers/users/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/handlers/users/detail.py: -------------------------------------------------------------------------------- 1 | # Copyright © 2022 Intel Corporation 2 | # 3 | # SPDX-License-Identifier: Apache License 2.0 4 | from zigopt.api.auth import api_token_authentication 5 | from zigopt.handlers.users.base import UserHandler 6 | from zigopt.json.builder import UserJsonBuilder 7 | from zigopt.protobuf.gen.token.tokenmeta_pb2 import READ 8 | 9 | 10 | class UsersDetailHandler(UserHandler): 11 | authenticator = api_token_authentication 12 | required_permissions = READ 13 | 14 | def handle(self): 15 | return UserJsonBuilder.json(self.user) 16 | -------------------------------------------------------------------------------- /src/python/zigopt/handlers/validate/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/handlers/validate/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/handlers/validate/client.py: -------------------------------------------------------------------------------- 1 | # Copyright © 2022 Intel Corporation 2 | # 3 | # SPDX-License-Identifier: Apache License 2.0 4 | from zigopt.client.model import Client 5 | from zigopt.handlers.validate.base import validate_name 6 | 7 | from libsigopt.aux.errors import SigoptValidationError 8 | 9 | 10 | def validate_client_name(name: str) -> str: 11 | name = validate_name(name) 12 | if len(name) >= Client.NAME_MAX_LENGTH: 13 | raise SigoptValidationError(f"Name must be fewer than {Client.NAME_MAX_LENGTH} characters") 14 | return name 15 | -------------------------------------------------------------------------------- /src/python/zigopt/handlers/validate/color.py: -------------------------------------------------------------------------------- 1 | # Copyright © 2022 Intel Corporation 2 | # 3 | # SPDX-License-Identifier: Apache License 2.0 4 | 5 | color_hex_schema = { 6 | "type": "string", 7 | "pattern": r"#([a-fA-F0-9]){6}", 8 | } 9 | -------------------------------------------------------------------------------- /src/python/zigopt/handlers/validate/values.py: -------------------------------------------------------------------------------- 1 | # Copyright © 2022 Intel Corporation 2 | # 3 | # SPDX-License-Identifier: Apache License 2.0 4 | # NOTE: Used by checkpoints and regular observations, only make changes here if you want it to apply to both 5 | base_values_schema = { 6 | "items": { 7 | "type": ["object"], 8 | "additionalProperties": False, 9 | "properties": { 10 | "value": { 11 | "type": ["number"], 12 | }, 13 | "value_stddev": { 14 | "type": ["number", "null"], 15 | "minimum": 0.0, 16 | }, 17 | }, 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/python/zigopt/iam_logging/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/iam_logging/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/importance/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/importance/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/invite/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/invite/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/json/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/json/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/json/builder/aiexperiment.py: -------------------------------------------------------------------------------- 1 | # Copyright © 2022 Intel Corporation 2 | # 3 | # SPDX-License-Identifier: Apache License 2.0 4 | from zigopt.common import * 5 | from zigopt.json.builder.experiment import ExperimentJsonBuilder 6 | 7 | 8 | class AiExperimentJsonBuilder(ExperimentJsonBuilder): 9 | object_name = "aiexperiment" 10 | 11 | def development(self): 12 | pass 13 | 14 | def observation_budget(self): 15 | pass 16 | -------------------------------------------------------------------------------- /src/python/zigopt/json/builder/best_assignments.py: -------------------------------------------------------------------------------- 1 | # Copyright © 2022 Intel Corporation 2 | # 3 | # SPDX-License-Identifier: Apache License 2.0 4 | from zigopt.json.builder.observation import ObservationDataJsonBuilder 5 | 6 | 7 | class BestAssignmentsJsonBuilder(ObservationDataJsonBuilder): 8 | object_name = "best_assignments" 9 | -------------------------------------------------------------------------------- /src/python/zigopt/json/builder/best_practices.py: -------------------------------------------------------------------------------- 1 | # Copyright © 2022 Intel Corporation 2 | # 3 | # SPDX-License-Identifier: Apache License 2.0 4 | from typing import Sequence 5 | 6 | from zigopt.json.builder.json_builder import JsonBuilder, ValidationType, field 7 | 8 | 9 | class BestPracticesJsonBuilder(JsonBuilder): 10 | object_name = "best_practices" 11 | 12 | def __init__(self, violations: Sequence[str]): 13 | self._violations = violations 14 | 15 | @field(ValidationType.arrayOf(ValidationType.string)) 16 | def violations(self) -> Sequence[str]: 17 | return self._violations 18 | -------------------------------------------------------------------------------- /src/python/zigopt/json/session.py: -------------------------------------------------------------------------------- 1 | # Copyright © 2022 Intel Corporation 2 | # 3 | # SPDX-License-Identifier: Apache License 2.0 4 | from zigopt.common.struct import ImmutableStruct 5 | 6 | 7 | Session = ImmutableStruct( 8 | "Session", 9 | [ 10 | "api_token", 11 | "client", 12 | "code", 13 | "needs_password_reset", 14 | "user", 15 | ], 16 | ) 17 | -------------------------------------------------------------------------------- /src/python/zigopt/log/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/log/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/math/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/math/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/membership/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/membership/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/net/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/net/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/net/headers.py: -------------------------------------------------------------------------------- 1 | # Copyright © 2022 Intel Corporation 2 | # 3 | # SPDX-License-Identifier: Apache License 2.0 4 | RESPONSE_HEADERS = { 5 | "Access-Control-Allow-Headers": "Authorization, Content-Type", 6 | "Access-Control-Allow-Methods": "GET, POST, PUT, MERGE, DELETE, OPTIONS", 7 | "Access-Control-Max-Age": "300", 8 | "Cache-Control": "no-cache, no-store", 9 | "Content-Type": "application/json; charset=utf-8", 10 | "Expires": "Sat, 01 Jan 2000 00:00:00 GMT", 11 | "Mimetype": "application/json", 12 | } 13 | -------------------------------------------------------------------------------- /src/python/zigopt/observation/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/observation/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/optimize/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/optimize/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/optimize/sources/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/optimize/sources/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/organization/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/organization/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/pagination/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/pagination/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/parameters/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/parameters/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/payment/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/payment/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/permission/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/permission/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/permission/pending/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/permission/pending/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/profile/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/profile/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/project/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/project/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/protobuf/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/protobuf/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/py.typed: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/py.typed -------------------------------------------------------------------------------- /src/python/zigopt/queue/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/queue/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/queue/exceptions.py: -------------------------------------------------------------------------------- 1 | # Copyright © 2022 Intel Corporation 2 | # 3 | # SPDX-License-Identifier: Apache License 2.0 4 | class WorkerException(Exception): 5 | pass 6 | 7 | 8 | class WorkerFinishedException(WorkerException): 9 | pass 10 | 11 | 12 | class WorkerInterruptedException(WorkerException): 13 | pass 14 | 15 | 16 | class WorkerKilledException(WorkerInterruptedException): 17 | pass 18 | -------------------------------------------------------------------------------- /src/python/zigopt/queue/message_groups.py: -------------------------------------------------------------------------------- 1 | # Copyright © 2022 Intel Corporation 2 | # 3 | # SPDX-License-Identifier: Apache License 2.0 4 | import enum 5 | 6 | 7 | class MessageGroup(enum.Enum): 8 | ANALYTICS = "analytics" 9 | OPTIMIZATION = "optimization" 10 | -------------------------------------------------------------------------------- /src/python/zigopt/queue/message_types.py: -------------------------------------------------------------------------------- 1 | # Copyright © 2022 Intel Corporation 2 | # 3 | # SPDX-License-Identifier: Apache License 2.0 4 | class MessageType: 5 | EMAIL = "email_messages" 6 | IMPORTANCES = "importances_messages" 7 | NEXT_POINTS = "next_points_messages" 8 | OPTIMIZE = "optimize_messages" 9 | -------------------------------------------------------------------------------- /src/python/zigopt/queued_suggestion/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/queued_suggestion/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/redis/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/redis/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/services/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/services/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/services/disabled.py: -------------------------------------------------------------------------------- 1 | # Copyright © 2022 Intel Corporation 2 | # 3 | # SPDX-License-Identifier: Apache License 2.0 4 | from zigopt.services.base import BaseService 5 | 6 | 7 | class DisabledService(BaseService): 8 | @property 9 | def enabled(self): 10 | return False 11 | 12 | def warmup(self): 13 | pass 14 | -------------------------------------------------------------------------------- /src/python/zigopt/sigoptcompute/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/sigoptcompute/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/suggestion/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/suggestion/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/suggestion/broker/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/suggestion/broker/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/suggestion/processed/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/suggestion/processed/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/suggestion/sampler/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/suggestion/sampler/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/suggestion/unprocessed/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/suggestion/unprocessed/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/task/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/task/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/throttle/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/throttle/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/token/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/token/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/user/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/user/__init__.py -------------------------------------------------------------------------------- /src/python/zigopt/utils/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/src/python/zigopt/utils/__init__.py -------------------------------------------------------------------------------- /test/integration/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/__init__.py -------------------------------------------------------------------------------- /test/integration/browser/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/browser/__init__.py -------------------------------------------------------------------------------- /test/integration/browser/helpers/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/browser/helpers/__init__.py -------------------------------------------------------------------------------- /test/integration/browser/helpers/matcher.py: -------------------------------------------------------------------------------- 1 | # Copyright © 2022 Intel Corporation 2 | # 3 | # SPDX-License-Identifier: Apache License 2.0 4 | def xpath_disabled_clause(disabled): 5 | if disabled is None: 6 | return "" 7 | if disabled: 8 | return " and (@disabled)" 9 | return " and not(@disabled)" 10 | 11 | 12 | def text_in_element(text, partial_match=False, disabled=None): 13 | if partial_match: 14 | return f"//*[contains(text(),{text!r}){xpath_disabled_clause(disabled)}]" 15 | return f"//*[text()={text!r}{xpath_disabled_clause(disabled)}]" 16 | -------------------------------------------------------------------------------- /test/integration/browser/models/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/browser/models/__init__.py -------------------------------------------------------------------------------- /test/integration/browser/models/test_result.py: -------------------------------------------------------------------------------- 1 | # Copyright © 2022 Intel Corporation 2 | # 3 | # SPDX-License-Identifier: Apache License 2.0 4 | class ResultOfTest: 5 | def __init__(self, success, message): 6 | self.success = success 7 | self.message = message 8 | -------------------------------------------------------------------------------- /test/integration/browser/tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/browser/tests/__init__.py -------------------------------------------------------------------------------- /test/integration/browser/tests/browser_test.py: -------------------------------------------------------------------------------- 1 | # Copyright © 2022 Intel Corporation 2 | # 3 | # SPDX-License-Identifier: Apache License 2.0 4 | import pytest 5 | 6 | from integration.web.test_base import WebBase 7 | 8 | 9 | @pytest.mark.slow 10 | class BrowserTest(WebBase): 11 | pass 12 | -------------------------------------------------------------------------------- /test/integration/browser/tests/interaction/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/browser/tests/interaction/__init__.py -------------------------------------------------------------------------------- /test/integration/browser/tests/interaction/admin/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/browser/tests/interaction/admin/__init__.py -------------------------------------------------------------------------------- /test/integration/browser/tests/interaction/experiment/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/browser/tests/interaction/experiment/__init__.py -------------------------------------------------------------------------------- /test/integration/browser/tests/interaction/global/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/browser/tests/interaction/global/__init__.py -------------------------------------------------------------------------------- /test/integration/browser/tests/interaction/home/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/browser/tests/interaction/home/__init__.py -------------------------------------------------------------------------------- /test/integration/browser/tests/interaction/organization/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/browser/tests/interaction/organization/__init__.py -------------------------------------------------------------------------------- /test/integration/browser/tests/interaction/organization/conftest.py: -------------------------------------------------------------------------------- 1 | # Copyright © 2022 Intel Corporation 2 | # 3 | # SPDX-License-Identifier: Apache License 2.0 4 | import pytest 5 | 6 | from integration.browser.tests.conftest import log_in_driver 7 | 8 | 9 | @pytest.fixture 10 | def logged_in_member_driver(_driver, web_connection, member_login_state): 11 | return log_in_driver(_driver, web_connection, member_login_state) 12 | -------------------------------------------------------------------------------- /test/integration/browser/tests/interaction/organization/users/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/browser/tests/interaction/organization/users/__init__.py -------------------------------------------------------------------------------- /test/integration/browser/tests/interaction/project/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/browser/tests/interaction/project/__init__.py -------------------------------------------------------------------------------- /test/integration/py.typed: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/py.typed -------------------------------------------------------------------------------- /test/integration/service/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/service/__init__.py -------------------------------------------------------------------------------- /test/integration/service/client/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/service/client/__init__.py -------------------------------------------------------------------------------- /test/integration/service/db/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/service/db/__init__.py -------------------------------------------------------------------------------- /test/integration/service/db/sanitize_errors.py: -------------------------------------------------------------------------------- 1 | # Copyright © 2022 Intel Corporation 2 | # 3 | # SPDX-License-Identifier: Apache License 2.0 4 | import pytest 5 | from sqlalchemy.exc import IntegrityError 6 | 7 | from zigopt.experiment.model import Experiment 8 | 9 | from integration.service.db.test_base import DatabaseServiceBase 10 | 11 | 12 | class TestSanitizeErrors(DatabaseServiceBase): 13 | def test_integrity_error(self, database_service): 14 | with pytest.raises(IntegrityError): 15 | database_service.insert(Experiment(id=-1)) 16 | database_service.insert(Experiment(id=-1)) 17 | -------------------------------------------------------------------------------- /test/integration/service/experiment/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/service/experiment/__init__.py -------------------------------------------------------------------------------- /test/integration/service/file/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/service/file/__init__.py -------------------------------------------------------------------------------- /test/integration/service/invite/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/service/invite/__init__.py -------------------------------------------------------------------------------- /test/integration/service/membership/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/service/membership/__init__.py -------------------------------------------------------------------------------- /test/integration/service/optimization_aux/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/service/optimization_aux/__init__.py -------------------------------------------------------------------------------- /test/integration/service/optimize/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/service/optimize/__init__.py -------------------------------------------------------------------------------- /test/integration/service/optimize/optimizer/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/service/optimize/optimizer/__init__.py -------------------------------------------------------------------------------- /test/integration/service/optimize/sources/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/service/optimize/sources/__init__.py -------------------------------------------------------------------------------- /test/integration/service/organization/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/service/organization/__init__.py -------------------------------------------------------------------------------- /test/integration/service/permission/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/service/permission/__init__.py -------------------------------------------------------------------------------- /test/integration/service/permission/pending/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/service/permission/pending/__init__.py -------------------------------------------------------------------------------- /test/integration/service/project/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/service/project/__init__.py -------------------------------------------------------------------------------- /test/integration/service/redis/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/service/redis/__init__.py -------------------------------------------------------------------------------- /test/integration/service/suggestion/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/service/suggestion/__init__.py -------------------------------------------------------------------------------- /test/integration/service/suggestion/broker/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/service/suggestion/broker/__init__.py -------------------------------------------------------------------------------- /test/integration/service/suggestion/broker/base/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/service/suggestion/broker/base/__init__.py -------------------------------------------------------------------------------- /test/integration/service/suggestion/broker/queued/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/service/suggestion/broker/queued/__init__.py -------------------------------------------------------------------------------- /test/integration/service/suggestion/processed/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/service/suggestion/processed/__init__.py -------------------------------------------------------------------------------- /test/integration/service/suggestion/unprocessed/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/service/suggestion/unprocessed/__init__.py -------------------------------------------------------------------------------- /test/integration/service/tag/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/service/tag/__init__.py -------------------------------------------------------------------------------- /test/integration/service/user/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/service/user/__init__.py -------------------------------------------------------------------------------- /test/integration/utils/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/utils/__init__.py -------------------------------------------------------------------------------- /test/integration/utils/html.py: -------------------------------------------------------------------------------- 1 | # Copyright © 2022 Intel Corporation 2 | # 3 | # SPDX-License-Identifier: Apache License 2.0 4 | from html5_parser import parse 5 | 6 | 7 | def validate_html(text): 8 | tree = parse(text.encode("utf-8")) 9 | assert tree is not None 10 | return tree 11 | -------------------------------------------------------------------------------- /test/integration/utils/mail/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/utils/mail/__init__.py -------------------------------------------------------------------------------- /test/integration/utils/mail/validate_email.py: -------------------------------------------------------------------------------- 1 | # Copyright © 2022 Intel Corporation 2 | # 3 | # SPDX-License-Identifier: Apache License 2.0 4 | from integration.utils.html import validate_html 5 | 6 | 7 | def validate_email(content_type, text): 8 | if content_type != "text/plain": 9 | validate_html(text) 10 | -------------------------------------------------------------------------------- /test/integration/utils/make_values.py: -------------------------------------------------------------------------------- 1 | # Copyright © 2022 Intel Corporation 2 | # 3 | # SPDX-License-Identifier: Apache License 2.0 4 | import random 5 | 6 | 7 | def make_values(exp, val=None): 8 | if isinstance(val, (int, float)): 9 | vals = [val for _ in exp.metrics] 10 | elif val is not None: 11 | vals = val 12 | else: 13 | vals = [random.random() for _ in exp.metrics] 14 | return [{"name": m.name, "value": v} for (m, v) in zip(exp.metrics, vals)] 15 | -------------------------------------------------------------------------------- /test/integration/utils/random_email.py: -------------------------------------------------------------------------------- 1 | # Copyright © 2022 Intel Corporation 2 | # 3 | # SPDX-License-Identifier: Apache License 2.0 4 | from zigopt.common.strings import random_string 5 | 6 | 7 | def generate_random_email(): 8 | return f"{random_string(str_length=10)}@notsigopt.ninja" 9 | -------------------------------------------------------------------------------- /test/integration/v1/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/v1/__init__.py -------------------------------------------------------------------------------- /test/integration/v1/admin/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/v1/admin/__init__.py -------------------------------------------------------------------------------- /test/integration/v1/authentication/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/v1/authentication/__init__.py -------------------------------------------------------------------------------- /test/integration/v1/endpoints/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/v1/endpoints/__init__.py -------------------------------------------------------------------------------- /test/integration/v1/endpoints/aiexperiments/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/v1/endpoints/aiexperiments/__init__.py -------------------------------------------------------------------------------- /test/integration/v1/endpoints/clients/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/v1/endpoints/clients/__init__.py -------------------------------------------------------------------------------- /test/integration/v1/endpoints/experiments/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/v1/endpoints/experiments/__init__.py -------------------------------------------------------------------------------- /test/integration/v1/endpoints/experiments/default_test.py: -------------------------------------------------------------------------------- 1 | # Copyright © 2022 Intel Corporation 2 | # 3 | # SPDX-License-Identifier: Apache License 2.0 4 | import copy 5 | 6 | import pytest 7 | 8 | from integration.v1.constants import DEFAULT_EXPERIMENT_META 9 | from integration.v1.experiments_test_base import ExperimentFeaturesTestBase 10 | 11 | 12 | class TestDefaultExperiments(ExperimentFeaturesTestBase): 13 | @pytest.fixture 14 | def meta(self): 15 | return copy.deepcopy(DEFAULT_EXPERIMENT_META) 16 | -------------------------------------------------------------------------------- /test/integration/v1/endpoints/hyperparameters/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/v1/endpoints/hyperparameters/__init__.py -------------------------------------------------------------------------------- /test/integration/v1/endpoints/importances/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/v1/endpoints/importances/__init__.py -------------------------------------------------------------------------------- /test/integration/v1/endpoints/invites/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/v1/endpoints/invites/__init__.py -------------------------------------------------------------------------------- /test/integration/v1/endpoints/memberships/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/v1/endpoints/memberships/__init__.py -------------------------------------------------------------------------------- /test/integration/v1/endpoints/observations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/v1/endpoints/observations/__init__.py -------------------------------------------------------------------------------- /test/integration/v1/endpoints/organizations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/v1/endpoints/organizations/__init__.py -------------------------------------------------------------------------------- /test/integration/v1/endpoints/pending_permissions/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/v1/endpoints/pending_permissions/__init__.py -------------------------------------------------------------------------------- /test/integration/v1/endpoints/permissions/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/v1/endpoints/permissions/__init__.py -------------------------------------------------------------------------------- /test/integration/v1/endpoints/plan/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/v1/endpoints/plan/__init__.py -------------------------------------------------------------------------------- /test/integration/v1/endpoints/projects/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/v1/endpoints/projects/__init__.py -------------------------------------------------------------------------------- /test/integration/v1/endpoints/projects/notes/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/v1/endpoints/projects/notes/__init__.py -------------------------------------------------------------------------------- /test/integration/v1/endpoints/queued_suggestions/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/v1/endpoints/queued_suggestions/__init__.py -------------------------------------------------------------------------------- /test/integration/v1/endpoints/suggestions/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/v1/endpoints/suggestions/__init__.py -------------------------------------------------------------------------------- /test/integration/v1/endpoints/tags/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/v1/endpoints/tags/__init__.py -------------------------------------------------------------------------------- /test/integration/v1/endpoints/tokens/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/v1/endpoints/tokens/__init__.py -------------------------------------------------------------------------------- /test/integration/v1/endpoints/training_runs/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/v1/endpoints/training_runs/__init__.py -------------------------------------------------------------------------------- /test/integration/v1/endpoints/users/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/v1/endpoints/users/__init__.py -------------------------------------------------------------------------------- /test/integration/v1/endpoints/web_data/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/v1/endpoints/web_data/__init__.py -------------------------------------------------------------------------------- /test/integration/v1/features/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/v1/features/__init__.py -------------------------------------------------------------------------------- /test/integration/v1/requests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/v1/requests/__init__.py -------------------------------------------------------------------------------- /test/integration/web/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/web/__init__.py -------------------------------------------------------------------------------- /test/integration/web/experiment/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/integration/web/experiment/__init__.py -------------------------------------------------------------------------------- /test/integration/web/signup_test.py: -------------------------------------------------------------------------------- 1 | # Copyright © 2022 Intel Corporation 2 | # 3 | # SPDX-License-Identifier: Apache License 2.0 4 | import pytest 5 | 6 | from integration.web.test_base import WebBase 7 | 8 | 9 | class TestSignup(WebBase): 10 | @pytest.fixture(autouse=True) 11 | def signup_enabled(self, config_broker): 12 | if config_broker.get("features.requireInvite"): 13 | pytest.skip() 14 | 15 | def test_logged_in_get(self, logged_in_web_connection): 16 | response = logged_in_web_connection.get("/signup", allow_redirects=True) 17 | assert response.response.url.endswith("/home") 18 | -------------------------------------------------------------------------------- /test/integration/web/user_test.py: -------------------------------------------------------------------------------- 1 | # Copyright © 2022 Intel Corporation 2 | # 3 | # SPDX-License-Identifier: Apache License 2.0 4 | from http import HTTPStatus 5 | 6 | from zigopt.common import * 7 | 8 | from integration.base import RaisesHttpError 9 | from integration.web.test_base import WebBase 10 | 11 | 12 | class TestUserProfile(WebBase): 13 | def test_user_logged_out(self, web_connection, logged_in_web_connection): 14 | route = "/user/info" 15 | logged_in_web_connection.get(route) 16 | with RaisesHttpError(HTTPStatus.NOT_FOUND): 17 | web_connection.get(route) 18 | -------------------------------------------------------------------------------- /test/playwright_codegen.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # Copyright © 2023 Intel Corporation 3 | # 4 | # SPDX-License-Identifier: Apache License 2.0 5 | set -e 6 | set -o pipefail 7 | 8 | playwright codegen --target=python https://sigopt.ninja:4443 "$@" 9 | -------------------------------------------------------------------------------- /test/python/sigopttest/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/python/sigopttest/__init__.py -------------------------------------------------------------------------------- /test/python/sigopttest/api/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/python/sigopttest/api/__init__.py -------------------------------------------------------------------------------- /test/python/sigopttest/assignments/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/python/sigopttest/assignments/__init__.py -------------------------------------------------------------------------------- /test/python/sigopttest/authorization/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/python/sigopttest/authorization/__init__.py -------------------------------------------------------------------------------- /test/python/sigopttest/base/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/python/sigopttest/base/__init__.py -------------------------------------------------------------------------------- /test/python/sigopttest/best_practices/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/python/sigopttest/best_practices/__init__.py -------------------------------------------------------------------------------- /test/python/sigopttest/common/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/python/sigopttest/common/__init__.py -------------------------------------------------------------------------------- /test/python/sigopttest/conditionals/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/python/sigopttest/conditionals/__init__.py -------------------------------------------------------------------------------- /test/python/sigopttest/db/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/python/sigopttest/db/__init__.py -------------------------------------------------------------------------------- /test/python/sigopttest/experiment/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/python/sigopttest/experiment/__init__.py -------------------------------------------------------------------------------- /test/python/sigopttest/file/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/python/sigopttest/file/__init__.py -------------------------------------------------------------------------------- /test/python/sigopttest/handlers/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/python/sigopttest/handlers/__init__.py -------------------------------------------------------------------------------- /test/python/sigopttest/handlers/base/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/python/sigopttest/handlers/base/__init__.py -------------------------------------------------------------------------------- /test/python/sigopttest/handlers/experiments/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/python/sigopttest/handlers/experiments/__init__.py -------------------------------------------------------------------------------- /test/python/sigopttest/handlers/validate/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/python/sigopttest/handlers/validate/__init__.py -------------------------------------------------------------------------------- /test/python/sigopttest/importance/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/python/sigopttest/importance/__init__.py -------------------------------------------------------------------------------- /test/python/sigopttest/json/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/python/sigopttest/json/__init__.py -------------------------------------------------------------------------------- /test/python/sigopttest/json/builder/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/python/sigopttest/json/builder/__init__.py -------------------------------------------------------------------------------- /test/python/sigopttest/log/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/python/sigopttest/log/__init__.py -------------------------------------------------------------------------------- /test/python/sigopttest/math/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/python/sigopttest/math/__init__.py -------------------------------------------------------------------------------- /test/python/sigopttest/monitoring/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/python/sigopttest/monitoring/__init__.py -------------------------------------------------------------------------------- /test/python/sigopttest/net/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/python/sigopttest/net/__init__.py -------------------------------------------------------------------------------- /test/python/sigopttest/note/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/python/sigopttest/note/__init__.py -------------------------------------------------------------------------------- /test/python/sigopttest/observation/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/python/sigopttest/observation/__init__.py -------------------------------------------------------------------------------- /test/python/sigopttest/optimize/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/python/sigopttest/optimize/__init__.py -------------------------------------------------------------------------------- /test/python/sigopttest/optimize/sources/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/python/sigopttest/optimize/sources/__init__.py -------------------------------------------------------------------------------- /test/python/sigopttest/optimize/sources/model_test.py: -------------------------------------------------------------------------------- 1 | # Copyright © 2022 Intel Corporation 2 | # 3 | # SPDX-License-Identifier: Apache License 2.0 4 | from zigopt.optimization_aux.model import ExperimentOptimizationAux 5 | 6 | 7 | class TestExperimentOptimizationAux: 8 | def test_default_values(self): 9 | experiment_optimization_aux = ExperimentOptimizationAux() 10 | assert experiment_optimization_aux.date_updated is None 11 | -------------------------------------------------------------------------------- /test/python/sigopttest/pagination/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/python/sigopttest/pagination/__init__.py -------------------------------------------------------------------------------- /test/python/sigopttest/parameters/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/python/sigopttest/parameters/__init__.py -------------------------------------------------------------------------------- /test/python/sigopttest/protobuf/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/python/sigopttest/protobuf/__init__.py -------------------------------------------------------------------------------- /test/python/sigopttest/py.typed: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/python/sigopttest/py.typed -------------------------------------------------------------------------------- /test/python/sigopttest/queue/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/python/sigopttest/queue/__init__.py -------------------------------------------------------------------------------- /test/python/sigopttest/sigoptcompute/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/python/sigopttest/sigoptcompute/__init__.py -------------------------------------------------------------------------------- /test/python/sigopttest/suggestion/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/python/sigopttest/suggestion/__init__.py -------------------------------------------------------------------------------- /test/python/sigopttest/suggestion/broker/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/python/sigopttest/suggestion/broker/__init__.py -------------------------------------------------------------------------------- /test/python/sigopttest/suggestion/sampler/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/python/sigopttest/suggestion/sampler/__init__.py -------------------------------------------------------------------------------- /test/python/sigopttest/suggestion/unprocessed/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/python/sigopttest/suggestion/unprocessed/__init__.py -------------------------------------------------------------------------------- /test/python/sigopttest/suggestions/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/python/sigopttest/suggestions/__init__.py -------------------------------------------------------------------------------- /test/python/sigopttest/suggestions/unprocessed/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/python/sigopttest/suggestions/unprocessed/__init__.py -------------------------------------------------------------------------------- /test/python/sigopttest/task/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/python/sigopttest/task/__init__.py -------------------------------------------------------------------------------- /test/python/sigopttest/token/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/python/sigopttest/token/__init__.py -------------------------------------------------------------------------------- /test/python/sigopttest/user/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sigopt/sigopt-server/9b96312ad51fafb03b7b06ce4c68b9e58e25b131/test/python/sigopttest/user/__init__.py -------------------------------------------------------------------------------- /test/run_integration_tests.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # Copyright © 2023 Intel Corporation 3 | # 4 | # SPDX-License-Identifier: Apache License 2.0 5 | set -e 6 | set -o pipefail 7 | 8 | make setup-integration-tests 9 | 10 | exec ./pp test/test_runner.py "$@" 11 | -------------------------------------------------------------------------------- /test/test_dev_env.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # Copyright © 2023 Intel Corporation 3 | # 4 | # SPDX-License-Identifier: Apache License 2.0 5 | set -e 6 | set -o pipefail 7 | 8 | . scripts/launch/setup_env.sh "${SIGOPT_SERVER_CONFIG_DIR:-./config/development/}" 9 | ./scripts/launch/compose.sh build test-runner 10 | ./scripts/launch/compose.sh run --rm --publish=5900:5900 test-runner python test/test_runner.py --config-dir "$SIGOPT_SERVER_CONFIG_DIR" "$@" 11 | -------------------------------------------------------------------------------- /test/unit_tests.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # Copyright © 2023 Intel Corporation 3 | # 4 | # SPDX-License-Identifier: Apache License 2.0 5 | set -e 6 | set -o pipefail 7 | export OMP_NUM_THREADS=1 8 | export OPENBLAS_NUM_THREADS=1 9 | export MKL_NUM_THREADS=1 10 | export VECLIB_MAXIMUM_THREADS=1 11 | export NUMEXPR_NUM_THREADS=1 12 | exec ./pp test/unit_test_runner.py "$@" 13 | -------------------------------------------------------------------------------- /tools/crosshair/main.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # Copyright © 2023 Intel Corporation 3 | # 4 | # SPDX-License-Identifier: Apache License 2.0 5 | import crosshair.main 6 | 7 | 8 | crosshair.main.DEFAULT_OPTIONS.enabled = False 9 | 10 | if __name__ == "__main__": 11 | crosshair.main.main() 12 | -------------------------------------------------------------------------------- /tools/dead-code/web_resources.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | # Copyright © 2022 Intel Corporation 3 | # 4 | # SPDX-License-Identifier: Apache License 2.0 5 | 6 | import argparse 7 | import os 8 | 9 | 10 | parser = argparse.ArgumentParser() 11 | parser.add_argument("webpack_args", nargs=argparse.REMAINDER) 12 | 13 | if __name__ == "__main__": 14 | args = parser.parse_args() 15 | os.execvp( 16 | "yarn", 17 | [ 18 | "yarn", 19 | "-s", 20 | "webpack", 21 | "--config=web/js/webpack/unused_code.config.babel.js", 22 | *args.webpack_args, 23 | ], 24 | ) 25 | -------------------------------------------------------------------------------- /tools/protobuf/compile.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # Copyright © 2023 Intel Corporation 3 | # 4 | # SPDX-License-Identifier: Apache License 2.0 5 | set -e 6 | set -o pipefail 7 | 8 | ARGS=() 9 | if which protoc-gen-mypy &>/dev/null; then 10 | ARGS=( --mypy_out=src/python ) 11 | fi 12 | 13 | mkdir -p src/python 14 | 15 | find src/protobuf/zigopt/protobuf/gen -name '*.proto' -print0 | xargs -0 \ 16 | protoc \ 17 | -I=src/protobuf \ 18 | -I=/usr/local/include \ 19 | --python_out=src/python \ 20 | "${ARGS[@]}" 21 | -------------------------------------------------------------------------------- /tools/secure/generate_random_string.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # Copyright © 2023 Intel Corporation 3 | # 4 | # SPDX-License-Identifier: Apache License 2.0 5 | set -e 6 | # no_pipefail 7 | 8 | COUNT="${1:-48}" 9 | 10 | docker pull --quiet busybox >/dev/null 11 | docker run -i --rm busybox sh <,./?' ( 12 |