aws / aws/chalice

Is it possible to use a private repository with chalices requirements.txt?

Open
#1,937 3 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
11.1k
Forks
1k
Avg merge
1d 22h
Merged PRs (30d)
2

Description

I have this private repo that I made with the `poetry` python library. I can pip install said repo on my local device just fine, but now I want to make a `chalice` app that has dependencies on my private repo, and I am running into some issues.

My requirements.txt file currently looks like this

> requests
> fastjsonschema
> boto3
> git+https://gitlab.com//.git@master#egg=

When I use `chalice deploy`, I am prompted for my gitlab username and password. After typing it in, I get this error

```
Traceback (most recent call last):
File "/home//PycharmProjects//venv/lib/python3.8/site-packages/chalice/cli/__init__.py", line 636, in main
return cli(obj={})
File "/home//PycharmProjects//venv/lib/python3.8/site-packages/click/core.py", line 1130, in __call__
return self.main(*args, **kwargs)
File "/home//PycharmProjects//venv/lib/python3.8/site-packages/click/core.py", line 1055, in main
rv = self.invoke(ctx)
File "/home//PycharmProjects//venv/lib/python3.8/site-packages/click/core.py", line 1657, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/home//PycharmProjects//venv/lib/python3.8/site-packages/click/core.py", line 1404, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/home//PycharmProjects//venv/lib/python3.8/site-packages/click/core.py", line 760, in invoke
return __callback(*args, **kwargs)
File "/home//PycharmProjects//venv/lib/python3.8/site-packages/click/decorators.py", line 26, in new_func
return f(get_current_context(), *args, **kwargs)
File "/home//PycharmProjects//venv/lib/python3.8/site-packages/chalice/cli/__init__.py", line 189, in deploy
deployed_values = d.deploy(config, chalice_stage_name=stage)
File "/home//PycharmProjects//venv/lib/python3.8/site-packages/chalice/deploy/deployer.py", line 376, in deploy
return self._deploy(config, chalice_stage_name)
File "/home//PycharmProjects//venv/lib/python3.8/site-packages/chalice/deploy/deployer.py", line 386, in _deploy
self._build_stage.execute(config, resources)
File "/home//PycharmProjects//venv/lib/python3.8/site-packages/chalice/deploy/deployer.py", line 652, in execute
step.handle(config, resource)
File "/home//PycharmProjects//venv/lib/python3.8/site-packages/chalice/deploy/deployer.py", line 419, in handle
handler(config, resource)
File "/home//PycharmProjects//venv/lib/python3.8/site-packages/chalice/deploy/deployer.py", line 453, in handle_deploymentpackage
zip_filename = self._packager.create_deployment_package(
File "/home//PycharmProjects//venv/lib/python3.8/site-packages/chalice/deploy/packager.py", line 299, in create_deployment_package
self._build_python_dependencies(python_version,
File "/home//PycharmProjects//venv/lib/python3.8/site-packages/chalice/deploy/packager.py", line 277, in _build_python_dependencies
self._dependency_builder.build_site_packages(
File "/home//PycharmProjects//venv/lib/python3.8/site-packages/chalice/deploy/packager.py", line 783, in build_site_packages
wheels, packages_without_wheels = self._download_dependencies(
File "/home//PycharmProjects//venv/lib/python3.8/site-packages/chalice/deploy/packager.py", line 636, in _download_dependencies
deps = self._download_all_dependencies(
File "/home//PycharmProjects//venv/lib/python3.8/site-packages/chalice/deploy/packager.py", line 567, in _download_all_dependencies
deps = {Package(directory, filename) for filename
File "/home//PycharmProjects//venv/lib/python3.8/site-packages/chalice/deploy/packager.py", line 567, in
deps = {Package(directory, filename) for filename
File "/home//PycharmProjects//venv/lib/python3.8/site-packages/chalice/deploy/packager.py", line 800, in __init__
self._name, self._version = self._calculate_name_and_version()
File "/home//PycharmProjects//venv/lib/python3.8/site-packages/chalice/deploy/packager.py", line 860, in _calculate_name_and_version
name, version = info_fetcher.get_package_name_and_version(
File "/home//PycharmProjects//venv/lib/python3.8/site-packages/chalice/deploy/packager.py", line 944, in get_package_name_and_version
pkg_info_filepath = self._get_pkg_info_filepath(package_dir)
File "/home//PycharmProjects//venv/lib/python3.8/site-packages/chalice/deploy/packager.py", line 925, in _get_pkg_info_filepath
raise UnsupportedPackageError(self._osutils.basename(package_dir))
chalice.deploy.packager.UnsupportedPackageError: Unable to retrieve name/version for package:
```

Obviously there is an unsupported package error, but I am unsure if this is because I am making a mistake myself, or if what I am doing is not a feature of chalice. Any ideas? Also, if anyone would like to suggest an alternative approach to accomplish what I am trying to do, I am all ears!

Thanks your your time!

Contributor guide

Open the contributing guide

Research direction

Start with chalice/deploy/packager.py, especially the dependency builder and Package metadata handling shown in the traceback. Reproduce the failure with the provided requirements.txt and chalice deploy command. Done means a private GitLab Poetry package can be resolved and included in the deployment package without UnsupportedPackageError.

Written by the indexing model from the issue text.

Assessment

Tech stack
aws, python
Domain
backend, cloud
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.