# How to specify dependencies: PEP 508 strings or a table in TOML?

**URL:** <https://discuss.python.org/t/how-to-specify-dependencies-pep-508-strings-or-a-table-in-toml/5243>\
**Category:** Packaging\
**Created:** [September 17, 2020, 7:25pm UTC](https://discuss.python.org/t/how-to-specify-dependencies-pep-508-strings-or-a-table-in-toml/5243 "2020-09-17T19:25:21Z")\
**Posts on this page:** 1\
**Showing post:** 21

<div class="post-metadata">

**Author:** ![sdispater](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/sdispater/32/1527_2.png) [@sdispater](https://discuss.python.org/u/sdispater)\
**Post date:** [September 18, 2020, 5:02pm UTC](https://discuss.python.org/t/how-to-specify-dependencies-pep-508-strings-or-a-table-in-toml/5243/21 "2020-09-18T17:02:01Z")

</div>

Yes, the reason why I started Poetry was to build a single tool to manage Python projects. However, some of its features are only possible thanks to its own metadata format, that are not restricted by the limitation of the existing specifications and tools. One example that comes to mind is the ability to specify a source of installation for a specific package via the `source` keyword:

```auto
[tool.poetry.dependencies]
requests = {"version" = "^2.24.0", source = "my-custom-index"}

[[tool.poetry.source]]
name = "my-custom-index"
url = "https://example.com/simple/"
secondary = true

```

So even with PEP 633 there would be a lot of work and the need to remove or completely redesign features for Poetry to support it. However PEP 633 would ease this transition because Poetry already is able to programmatically manipulate `pyproject.toml` file which is harder with PEP 631 because dependencies are just one big string without concepts separation.

---

_[View the full topic](https://discuss.python.org/t/how-to-specify-dependencies-pep-508-strings-or-a-table-in-toml/5243)._
