@@ -310,22 +310,28 @@ def _compute_poetry_hash(pyproject): # type: (MutableMapping[str, Any]) -> str
310
310
project_data = pyproject .get ("project" , {})
311
311
poetry_data = pyproject .get ("tool" , {}).get ("poetry" , {})
312
312
313
+ # legacy_keys are the original (pre poetry 2) concept, and should be in
314
+ # the relevant_content even if their value is None as long as it is not a poetry 2 config.
313
315
legacy_keys = ["dependencies" , "source" , "extras" , "dev-dependencies" ]
314
- # relevant_keys are the original concept, and they should always be in
315
- # the relevant_content even if their value is None.
316
- # group is a new key since poetry 1.2, and we must include it only
316
+ # group is a new key since poetry 1.2, and must be included
317
317
# if pyproject.toml contains it. Including it always would break
318
318
# backward compatibility.
319
319
# See: https://github.com/python-poetry/poetry/blob/4a07b5e0243bb8879dd6725cb901d9fa0f6eb182/src/poetry/packages/locker.py#L278-L293
320
320
relevant_keys = [* legacy_keys , "group" ]
321
321
relevant_project_keys = ["requires-python" , "dependencies" , "optional-dependencies" ]
322
322
323
- relevant_project_content = {k : project_data .get (k ) for k in relevant_project_keys if project_data .get (k )}
324
- relevant_poetry_content = {k : poetry_data .get (k ) for k in relevant_keys if poetry_data .get (k ) or (k in legacy_keys and not relevant_project_content )}
323
+ relevant_project_content = {k : project_data [k ] for k in relevant_project_keys if project_data .get (k )}
324
+ relevant_poetry_content = {}
325
+ for key in relevant_keys :
326
+ value = poetry_data .get (key )
327
+ # Set legacy keys as None for backwards compatibility to older poetry configs
328
+ if not value and (key not in legacy_keys or relevant_project_content ):
329
+ continue
330
+ relevant_poetry_content [key ] = value
325
331
326
332
relevant_content = relevant_poetry_content
327
333
if relevant_project_content :
328
- # project is a new concept since poetry 2.0 and must be used if new format is used
334
+ # project is introduced as the new format in poetry 2.0 and must be used when configured.
329
335
# Always using the new format would break backward compatibility.
330
336
# See: https://github.com/python-poetry/poetry/blob/6f6fd7012983a2e749c6030c1f5f155fd4397058/src/poetry/packages/locker.py#L266-L302
331
337
relevant_content = {
0 commit comments