Repository: pydantic/pydantic

Issue:
`__post_init_post_parse__` is incorrectly passed keyword arguments when no `__post_init__` is defined
### Initial Checks

- [X] I have searched GitHub for a duplicate issue and I'm sure this is something new
- [X] I have searched Google & StackOverflow for a solution and couldn't find anything
- [X] I have read and followed [the docs](https://pydantic-docs.helpmanual.io) and still think this is a bug
- [X] I am confident that the issue is with pydantic  (not my code, or another library in the ecosystem like [FastAPI](https://fastapi.tiangolo.com) or [mypy](https://mypy.readthedocs.io/en/stable))


### Description

when a `__post_init_post_parse__` method is defined on a `dataclass` without a `__post_init__`, it incorrectly passes keyword args to it, when the args are not annotated with `InitVar` as specified in [the docs](https://pydantic-docs.helpmanual.io/usage/dataclasses/#initialize-hooks)

### Example Code

```Python
from pydantic.dataclasses import dataclass


@dataclass
class Foo:
    a: int

    # uncomment this and the error goes away
    # def __post_init__(self):
    #     ...

    def __post_init_post_parse__(self): # TypeError: Foo.__post_init_post_parse__() got an unexpected keyword argument 'a'
        ...


a = Foo(a=1)
```


### Python, Pydantic & OS Version
this issue seems to have been introduced after the 1.9.1 release. this occurred after installing the latest commit from master:

```
pip uninstall pydantic
pip install git+https://github.com/samuelcolvin/pydantic.git@a69136d2096e327ed48954a298c775dceb1551d1
```

```Text
pydantic version: 1.9.0
            pydantic compiled: False
                 install path: C:\Users\chungus\AppData\Local\pypoetry\Cache\virtualenvs\project-e01-Hfn1-py3.10\Lib\site-packages\pydantic
               python version: 3.10.6 (tags/v3.10.6:9c7b4bd, Aug  1 2022, 21:53:49) [MSC v.1932 64 bit (AMD64)]
                     platform: Windows-10-10.0.19042-SP0
     optional deps. installed: ['typing-extensions']
```


### Affected Components

- [ ] [Compatibility between releases](https://pydantic-docs.helpmanual.io/changelog/)
- [ ] [Data validation/parsing](https://pydantic-docs.helpmanual.io/usage/models/#basic-model-usage)
- [ ] [Data serialization](https://pydantic-docs.helpmanual.io/usage/exporting_models/) - `.dict()` and `.json()`
- [ ] [JSON Schema](https://pydantic-docs.helpmanual.io/usage/schema/)
- [X] [Dataclasses](https://pydantic-docs.helpmanual.io/usage/dataclasses/)
- [ ] [Model Config](https://pydantic-docs.helpmanual.io/usage/model_config/)
- [ ] [Field Types](https://pydantic-docs.helpmanual.io/usage/types/) - adding or changing a particular data type
- [ ] [Function validation decorator](https://pydantic-docs.helpmanual.io/usage/validation_decorator/)
- [ ] [Generic Models](https://pydantic-docs.helpmanual.io/usage/models/#generic-models)
- [ ] [Other Model behaviour](https://pydantic-docs.helpmanual.io/usage/models/) - `construct()`, pickling, private attributes, ORM mode
- [ ] [Settings Management](https://pydantic-docs.helpmanual.io/usage/settings/)
- [ ] [Plugins](https://pydantic-docs.helpmanual.io/) and integration with other tools - mypy, FastAPI, python-devtools, Hypothesis, VS Code, PyCharm, etc.


Discussion:
I can confirm the error. It seems we have the problem because [we update the initvars_and_values by kwargs](https://github.com/samuelcolvin/pydantic/blob/a69136d2096e327ed48954a298c775dceb1551d1/pydantic/dataclasses.py#L263) that I am not sure is the right behavior or not.

@samuelcolvin what do you think?

https://github.com/samuelcolvin/pydantic/blob/a69136d2096e327ed48954a298c775dceb1551d1/pydantic/dataclasses.py#L263

Resolving patch:
diff --git a/pydantic/dataclasses.py b/pydantic/dataclasses.py
--- a/pydantic/dataclasses.py
+++ b/pydantic/dataclasses.py
@@ -310,8 +310,7 @@ def new_init(self: 'Dataclass', *args: Any, **kwargs: Any) -> None:
                             # set arg value by default
                             initvars_and_values[f.name] = args[i]
                         except IndexError:
-                            initvars_and_values[f.name] = f.default
-                initvars_and_values.update(kwargs)
+                            initvars_and_values[f.name] = kwargs.get(f.name, f.default)
 
                 self.__post_init_post_parse__(**initvars_and_values)
 


Test patch:
diff --git a/tests/test_dataclasses.py b/tests/test_dataclasses.py
--- a/tests/test_dataclasses.py
+++ b/tests/test_dataclasses.py
@@ -600,6 +600,17 @@ def __post_init_post_parse__(self, base_path):
     assert PathDataPostInitPostParse('world', base_path='/hello').path == Path('/hello/world')
 
 
+def test_post_init_post_parse_without_initvars():
+    @pydantic.dataclasses.dataclass
+    class Foo:
+        a: int
+
+        def __post_init_post_parse__(self):
+            ...
+
+    Foo(a=1)
+
+
 def test_classvar():
     @pydantic.dataclasses.dataclass
     class TestClassVar: