diff --git a/poetry/packages/package.py b/poetry/packages/package.py index cb28ef70c7f..4940d6f027a 100644 --- a/poetry/packages/package.py +++ b/poetry/packages/package.py @@ -333,7 +333,9 @@ def add_dependency( develop=constraint.get("develop", True), ) elif "url" in constraint: - dependency = URLDependency(name, constraint["url"], category=category) + dependency = URLDependency( + name, constraint["url"], category=category, optional=optional + ) else: version = constraint["version"] diff --git a/tests/packages/test_package.py b/tests/packages/test_package.py index 510f542f222..54221eca4c8 100644 --- a/tests/packages/test_package.py +++ b/tests/packages/test_package.py @@ -49,3 +49,20 @@ def test_package_add_dependency_vcs_category_default_main(): "poetry", constraint={"git": "https://github.com/python-poetry/poetry.git"} ) assert dependency.category == "main" + + +@pytest.mark.parametrize("category", ["main", "dev"]) +@pytest.mark.parametrize("optional", [True, False]) +def test_package_url_category_optional(category, optional): + package = Package("foo", "0.1.0") + + dependency = package.add_dependency( + "poetry", + constraint={ + "url": "https://github.com/python-poetry/poetry/releases/download/1.0.5/poetry-1.0.5-linux.tar.gz", + "optional": optional, + }, + category=category, + ) + assert dependency.category == category + assert dependency.is_optional() == optional