
GITHUB . COM {
}
Detected CMS Systems:
- Wordpress (2 occurrences)
Title:
support for built-in `dataclass` breaks pickle Β· Issue #2111 Β· pydantic/pydantic
Description:
Checks I added a descriptive title to this issue I have searched (google, github) for similar issues and couldn't find anything I have read and followed the docs and still think this is a bug B...
Website Age:
17 years and 8 months (reg. 2007-10-09).
Matching Content Categories {π}
- Dating & Relationships
- Education
- Telecommunications
Content Management System {π}
What CMS is github.com built with?
Github.com operates using WORDPRESS.
Traffic Estimate {π}
What is the average monthly size of github.com audience?
ππ Tremendous Traffic: 10M - 20M visitors per month
Based on our best estimate, this website will receive around 10,653,780 visitors per month in the current month.
check SE Ranking
check Ahrefs
check Similarweb
check Ubersuggest
check Semrush
How Does Github.com Make Money? {πΈ}
Subscription Packages {π³}
We've located a dedicated page on github.com that might include details about subscription plans or recurring payments. We identified it based on the word pricing in one of its internal links. Below, you'll find additional estimates for its monthly recurring revenues.How Much Does Github.com Make? {π°}
Subscription Packages {π³}
Prices on github.com are in US Dollars ($).
They range from $4.00/month to $21.00/month.
We estimate that the site has approximately 5,316,107 paying customers.
The estimated monthly recurring revenue (MRR) is $22,327,651.
The estimated annual recurring revenues (ARR) are $267,931,808.
Wordpress Themes and Plugins {π¨}
What WordPress theme does this site use?
It is strange but we were not able to detect any theme on the page.
What WordPress plugins does this website use?
It is strange but we were not able to detect any plugins on the page.
Keywords {π}
pickle, pydantic, builtin, class, issue, support, dataclass, bug, import, dataclasses, sign, added, picklingerror, maina, mentioned, breaks, aimestereo, github, output, builtindataclass, fix, samuelcolvin, navigation, issues, pull, requests, actions, security, closed, docs, python, version, clang, prettywood, printpickledumps, pydanticmodelbuiltindataclassbuiltindataclassvalue, traceback, recent, call, module, mainbuiltindataclass, object, classes, related, verified, type, projects, milestone, footer, skip,
Topics {βοΈ}
6/envs/feed/lib/python3 b1bb6e0 samuelcolvin added personal information support import pydantic comment metadata assignees aimestereo mentioned similar issues dataclass class builtindataclass pydantic convert built pydantic version support pickle /users/aimestereo/ pydantic v1 python docs pydantic context pickle problem class serializeddataclass added descriptive title pyenv/versions/3 ['typing-extensions'] recent call converts buit dataclasses projects milestone milestone relationships sign built_in_dataclass=builtindataclass intermediate classes issue type projects pydantic dataclass v1 pickle ' pickle github output picklingerror __main__ builtindataclass built_in_dataclass pydanticmodel print classes = type type built skip
Payment Methods {π}
- Braintree
Questions {β}
- Already have an account?
Schema {πΊοΈ}
DiscussionForumPosting:
context:https://schema.org
headline:support for built-in `dataclass` breaks pickle
articleBody:### Checks
* [x] I added a descriptive title to this issue
* [x] I have searched (google, github) for similar issues 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
<!-- Sorry to sound so draconian, but every second saved replying to issues is time spend improving pydantic :-) -->
# Bug
Output of `python -c "import pydantic.utils; print(pydantic.utils.version_info())"`:
```
pydantic version: 1.7.2
pydantic compiled: True
install path: /Users/aimestereo/.pyenv/versions/3.7.6/envs/feed/lib/python3.7/site-packages/pydantic
python version: 3.7.6 (default, Jan 30 2020, 16:07:03) [Clang 11.0.0 (clang-1100.0.33.17)]
platform: Darwin-19.6.0-x86_64-i386-64bit
optional deps. installed: ['typing-extensions']
```
<!-- or if you're using pydantic prior to v1.3, manually include: OS, python version and pydantic version -->
<!-- Please read the [docs](https://pydantic-docs.helpmanual.io/) and search through issues to
confirm your bug hasn't already been reported. -->
<!-- Where possible please include a self-contained code snippet describing your bug: -->
thanks to @PrettyWood 1.7 Introduced cool [support of built-in dataclass](https://github.com/samuelcolvin/pydantic/pull/1817). But in our project this broke pickle
```py
import pickle
import dataclasses
import pydantic
@dataclasses.dataclass
class BuiltInDataclass:
value: int
class PydanticModel(pydantic.BaseModel):
built_in_dataclass: BuiltInDataclass
print(pickle.dumps(
PydanticModel(built_in_dataclass=BuiltInDataclass(value=0))
))
```
output:
```
---------------------------------------------------------------------------
PicklingError Traceback (most recent call last)
<ipython-input-14-7d67a44cf353> in <module>
15
16 print(pickle.dumps(
---> 17 PydanticModel(built_in_dataclass=BuiltInDataclass(value=0))
18 ))
PicklingError: Can't pickle <class '__main__.BuiltInDataclass'>: it's not the same object as __main__.BuiltInDataclass
```
---
For better understanding here's an issue of pickle outside of pydantic context. This is an old pickle problem, when different classes have the same name, simple way to reproduce:
```
import pickle
class A: pass
# this is an analogy of how pydantic convert built-in dataclass
B = type(A.__name__, (A,), {})
print(A)
# <class '__main__.A'>
print(B)
# <class '__main__.A'>
pickle.dumps(A)
# b'\x80\x03c__main__\nA\nq\x00.'
pickle.dumps(B)
# error
```
output
```
---------------------------------------------------------------------------
PicklingError Traceback (most recent call last)
<ipython-input-2-b97d2c67736c> in <module>
10
11 print(pickle.dumps(A))
---> 12 print(pickle.dumps(B))
PicklingError: Can't pickle <class '__main__.A'>: it's not the same object as __main__.A
```
---
As a result we can't use this feature, we're stick to intermediate classes that converts buit-in dataclasses to pydantic:
```
class SerializedDataclass(pydantic.BaseModel):
# copy/paste of all fields from built-in dataclass
value: float
```
author:
url:https://github.com/aimestereo
type:Person
name:aimestereo
datePublished:2020-11-10T13:04:03.000Z
interactionStatistic:
type:InteractionCounter
interactionType:https://schema.org/CommentAction
userInteractionCount:0
url:https://github.com/2111/pydantic/issues/2111
context:https://schema.org
headline:support for built-in `dataclass` breaks pickle
articleBody:### Checks
* [x] I added a descriptive title to this issue
* [x] I have searched (google, github) for similar issues 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
<!-- Sorry to sound so draconian, but every second saved replying to issues is time spend improving pydantic :-) -->
# Bug
Output of `python -c "import pydantic.utils; print(pydantic.utils.version_info())"`:
```
pydantic version: 1.7.2
pydantic compiled: True
install path: /Users/aimestereo/.pyenv/versions/3.7.6/envs/feed/lib/python3.7/site-packages/pydantic
python version: 3.7.6 (default, Jan 30 2020, 16:07:03) [Clang 11.0.0 (clang-1100.0.33.17)]
platform: Darwin-19.6.0-x86_64-i386-64bit
optional deps. installed: ['typing-extensions']
```
<!-- or if you're using pydantic prior to v1.3, manually include: OS, python version and pydantic version -->
<!-- Please read the [docs](https://pydantic-docs.helpmanual.io/) and search through issues to
confirm your bug hasn't already been reported. -->
<!-- Where possible please include a self-contained code snippet describing your bug: -->
thanks to @PrettyWood 1.7 Introduced cool [support of built-in dataclass](https://github.com/samuelcolvin/pydantic/pull/1817). But in our project this broke pickle
```py
import pickle
import dataclasses
import pydantic
@dataclasses.dataclass
class BuiltInDataclass:
value: int
class PydanticModel(pydantic.BaseModel):
built_in_dataclass: BuiltInDataclass
print(pickle.dumps(
PydanticModel(built_in_dataclass=BuiltInDataclass(value=0))
))
```
output:
```
---------------------------------------------------------------------------
PicklingError Traceback (most recent call last)
<ipython-input-14-7d67a44cf353> in <module>
15
16 print(pickle.dumps(
---> 17 PydanticModel(built_in_dataclass=BuiltInDataclass(value=0))
18 ))
PicklingError: Can't pickle <class '__main__.BuiltInDataclass'>: it's not the same object as __main__.BuiltInDataclass
```
---
For better understanding here's an issue of pickle outside of pydantic context. This is an old pickle problem, when different classes have the same name, simple way to reproduce:
```
import pickle
class A: pass
# this is an analogy of how pydantic convert built-in dataclass
B = type(A.__name__, (A,), {})
print(A)
# <class '__main__.A'>
print(B)
# <class '__main__.A'>
pickle.dumps(A)
# b'\x80\x03c__main__\nA\nq\x00.'
pickle.dumps(B)
# error
```
output
```
---------------------------------------------------------------------------
PicklingError Traceback (most recent call last)
<ipython-input-2-b97d2c67736c> in <module>
10
11 print(pickle.dumps(A))
---> 12 print(pickle.dumps(B))
PicklingError: Can't pickle <class '__main__.A'>: it's not the same object as __main__.A
```
---
As a result we can't use this feature, we're stick to intermediate classes that converts buit-in dataclasses to pydantic:
```
class SerializedDataclass(pydantic.BaseModel):
# copy/paste of all fields from built-in dataclass
value: float
```
author:
url:https://github.com/aimestereo
type:Person
name:aimestereo
datePublished:2020-11-10T13:04:03.000Z
interactionStatistic:
type:InteractionCounter
interactionType:https://schema.org/CommentAction
userInteractionCount:0
url:https://github.com/2111/pydantic/issues/2111
Person:
url:https://github.com/aimestereo
name:aimestereo
url:https://github.com/aimestereo
name:aimestereo
InteractionCounter:
interactionType:https://schema.org/CommentAction
userInteractionCount:0
interactionType:https://schema.org/CommentAction
userInteractionCount:0
External Links {π}(3)
Analytics and Tracking {π}
- Site Verification - Google
Libraries {π}
- Clipboard.js
- D3.js
- Lodash
- Underscore.js
Emails and Hosting {βοΈ}
Mail Servers:
- aspmx.l.google.com
- alt1.aspmx.l.google.com
- alt2.aspmx.l.google.com
- alt3.aspmx.l.google.com
- alt4.aspmx.l.google.com
Name Servers:
- dns1.p08.nsone.net
- dns2.p08.nsone.net
- dns3.p08.nsone.net
- dns4.p08.nsone.net
- ns-1283.awsdns-32.org
- ns-1707.awsdns-21.co.uk
- ns-421.awsdns-52.com
- ns-520.awsdns-01.net