python-poetry / tomlkit

Style-preserving TOML library for Python
MIT License
693 stars 98 forks source link

Difference in whitespace in dot notation disappears #291

Open eugenesvk opened 1 year ago

eugenesvk commented 1 year ago

upd: or maybe it's because

https://github.com/sdispater/tomlkit/issues/255#issuecomment-1407551898

Copy and reassign breaks the structure

Then the question is how to avoid breaking the structure on copy

I'm using whitespace to vertically align some toml config and when editing said config with your great library noticed that alignment disappears, below is a small repro

content = """
[keys.a]
#    ↓ this whitespace disappears
[keys .'a'.'c']
  'd'   = 'e'
"""
def testtoml():
  from tomlkit import dumps
  from tomlkit import parse
  doc = parse(content)
  for mode in doc["keys"]: # self to self shouldn't change anything?
    doc["keys"][mode] = doc["keys"][mode]
  assert dumps(doc) == doc
  # print(dumps(doc))
testtoml()

It seems that the latter whitespace matches the first encountered in [keys.a] (if I add whitespace to [keys.a] then it propagates to further as well

Is it possible to preserve the difference in whitespace so that editing wouldn't "import" whitespace from upper keys, but retain its own?

(tested this on a master branch of your library)