Skip to content

Commit c50b558

Browse files
Deprecated some "dict" methods on data structs
1 parent 3b852be commit c50b558

File tree

14 files changed

+258
-10
lines changed

14 files changed

+258
-10
lines changed

CHANGELOG.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@ Changes in v0.18.0:
3636
8/ Add data() method to exiv2.PreviewImage, deprecate pData() method.
3737
9/ BasicIo.read (& readOrThrow) now extract count from the buffer size.
3838
10/ Invalidate data iterators if data is deleted. (Requires swig >= 4.4)
39+
11/ Add __members__ attribute to exiv2 "data" structure types.
40+
12/ Deprecated keys(), values(), and items() methods and iterator of exiv2
41+
"data" structure types.
3942

4043
Changes in v0.17.5:
4144
1/ Binary wheels incorporate libexiv2 v0.28.7.

src/interface/shared/struct_dict.i

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,17 +174,31 @@ static PyObject* %mangle(struct_type)___members___get(struct_type*) {
174174
%fragment("items_struct");
175175
PyObject* __members__ const;
176176
PyObject* keys() {
177+
// Deprecated since 2025-09-11
178+
PyErr_WarnEx(PyExc_DeprecationWarning,
179+
"Please use __members__ to get the struct member names", 1);
177180
return %mangle(struct_type)___members___get(self);
178181
}
179182
PyObject* values(PyObject* py_self) {
183+
// Deprecated since 2025-09-11
184+
PyErr_WarnEx(PyExc_DeprecationWarning,
185+
"Please use __members__ to get the struct member names"
186+
" and getattr to get values from names", 1);
180187
init_info_%mangle(struct_type)();
181188
return values_struct(info_%mangle(struct_type), py_self);
182189
}
183190
PyObject* items(PyObject* py_self) {
191+
// Deprecated since 2025-09-11
192+
PyErr_WarnEx(PyExc_DeprecationWarning,
193+
"Please use __members__ to get the struct member names"
194+
" and getattr to get values from names", 1);
184195
init_info_%mangle(struct_type)();
185196
return items_struct(info_%mangle(struct_type), py_self);
186197
}
187198
static PyObject* __iter__() {
199+
// Deprecated since 2025-09-11
200+
PyErr_WarnEx(PyExc_DeprecationWarning,
201+
"Please iterate over the __members__ attribute", 1);
188202
init_info_%mangle(struct_type)();
189203
PyObject* seq = keys_struct(info_%mangle(struct_type));
190204
PyObject* result = PySeqIter_New(seq);

src/swig-0_27_7/datasets_wrap.cxx

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4480,17 +4480,31 @@ SWIGINTERNINLINE PyObject*
44804480
}
44814481

44824482
SWIGINTERN PyObject *Exiv2_DataSet_keys(Exiv2::DataSet *self){
4483+
// Deprecated since 2025-09-11
4484+
PyErr_WarnEx(PyExc_DeprecationWarning,
4485+
"Please use __members__ to get the struct member names", 1);
44834486
return Exiv2_DataSet___members___get(self);
44844487
}
44854488
SWIGINTERN PyObject *Exiv2_DataSet_values(Exiv2::DataSet *self,PyObject *py_self){
4489+
// Deprecated since 2025-09-11
4490+
PyErr_WarnEx(PyExc_DeprecationWarning,
4491+
"Please use __members__ to get the struct member names"
4492+
" and getattr to get values from names", 1);
44864493
init_info_Exiv2_DataSet();
44874494
return values_struct(info_Exiv2_DataSet, py_self);
44884495
}
44894496
SWIGINTERN PyObject *Exiv2_DataSet_items(Exiv2::DataSet *self,PyObject *py_self){
4497+
// Deprecated since 2025-09-11
4498+
PyErr_WarnEx(PyExc_DeprecationWarning,
4499+
"Please use __members__ to get the struct member names"
4500+
" and getattr to get values from names", 1);
44904501
init_info_Exiv2_DataSet();
44914502
return items_struct(info_Exiv2_DataSet, py_self);
44924503
}
44934504
SWIGINTERN PyObject *Exiv2_DataSet___iter__(){
4505+
// Deprecated since 2025-09-11
4506+
PyErr_WarnEx(PyExc_DeprecationWarning,
4507+
"Please iterate over the __members__ attribute", 1);
44944508
init_info_Exiv2_DataSet();
44954509
PyObject* seq = keys_struct(info_Exiv2_DataSet);
44964510
PyObject* result = PySeqIter_New(seq);

src/swig-0_27_7/preview_wrap.cxx

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5548,17 +5548,31 @@ SWIGINTERNINLINE PyObject*
55485548
}
55495549

55505550
SWIGINTERN PyObject *Exiv2_PreviewProperties_keys(Exiv2::PreviewProperties *self){
5551+
// Deprecated since 2025-09-11
5552+
PyErr_WarnEx(PyExc_DeprecationWarning,
5553+
"Please use __members__ to get the struct member names", 1);
55515554
return Exiv2_PreviewProperties___members___get(self);
55525555
}
55535556
SWIGINTERN PyObject *Exiv2_PreviewProperties_values(Exiv2::PreviewProperties *self,PyObject *py_self){
5557+
// Deprecated since 2025-09-11
5558+
PyErr_WarnEx(PyExc_DeprecationWarning,
5559+
"Please use __members__ to get the struct member names"
5560+
" and getattr to get values from names", 1);
55545561
init_info_Exiv2_PreviewProperties();
55555562
return values_struct(info_Exiv2_PreviewProperties, py_self);
55565563
}
55575564
SWIGINTERN PyObject *Exiv2_PreviewProperties_items(Exiv2::PreviewProperties *self,PyObject *py_self){
5565+
// Deprecated since 2025-09-11
5566+
PyErr_WarnEx(PyExc_DeprecationWarning,
5567+
"Please use __members__ to get the struct member names"
5568+
" and getattr to get values from names", 1);
55585569
init_info_Exiv2_PreviewProperties();
55595570
return items_struct(info_Exiv2_PreviewProperties, py_self);
55605571
}
55615572
SWIGINTERN PyObject *Exiv2_PreviewProperties___iter__(){
5573+
// Deprecated since 2025-09-11
5574+
PyErr_WarnEx(PyExc_DeprecationWarning,
5575+
"Please iterate over the __members__ attribute", 1);
55625576
init_info_Exiv2_PreviewProperties();
55635577
PyObject* seq = keys_struct(info_Exiv2_PreviewProperties);
55645578
PyObject* result = PySeqIter_New(seq);

src/swig-0_27_7/properties_wrap.cxx

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4511,17 +4511,31 @@ static PyObject* items_struct(struct_info& info, PyObject* obj) {
45114511
};
45124512

45134513
SWIGINTERN PyObject *Exiv2_XmpPropertyInfo_keys(Exiv2::XmpPropertyInfo *self){
4514+
// Deprecated since 2025-09-11
4515+
PyErr_WarnEx(PyExc_DeprecationWarning,
4516+
"Please use __members__ to get the struct member names", 1);
45144517
return Exiv2_XmpPropertyInfo___members___get(self);
45154518
}
45164519
SWIGINTERN PyObject *Exiv2_XmpPropertyInfo_values(Exiv2::XmpPropertyInfo *self,PyObject *py_self){
4520+
// Deprecated since 2025-09-11
4521+
PyErr_WarnEx(PyExc_DeprecationWarning,
4522+
"Please use __members__ to get the struct member names"
4523+
" and getattr to get values from names", 1);
45174524
init_info_Exiv2_XmpPropertyInfo();
45184525
return values_struct(info_Exiv2_XmpPropertyInfo, py_self);
45194526
}
45204527
SWIGINTERN PyObject *Exiv2_XmpPropertyInfo_items(Exiv2::XmpPropertyInfo *self,PyObject *py_self){
4528+
// Deprecated since 2025-09-11
4529+
PyErr_WarnEx(PyExc_DeprecationWarning,
4530+
"Please use __members__ to get the struct member names"
4531+
" and getattr to get values from names", 1);
45214532
init_info_Exiv2_XmpPropertyInfo();
45224533
return items_struct(info_Exiv2_XmpPropertyInfo, py_self);
45234534
}
45244535
SWIGINTERN PyObject *Exiv2_XmpPropertyInfo___iter__(){
4536+
// Deprecated since 2025-09-11
4537+
PyErr_WarnEx(PyExc_DeprecationWarning,
4538+
"Please iterate over the __members__ attribute", 1);
45254539
init_info_Exiv2_XmpPropertyInfo();
45264540
PyObject* seq = keys_struct(info_Exiv2_XmpPropertyInfo);
45274541
PyObject* result = PySeqIter_New(seq);
@@ -4551,17 +4565,31 @@ static PyObject* pointer_to_list(Exiv2::XmpPropertyInfo* ptr) {
45514565
};
45524566

45534567
SWIGINTERN PyObject *Exiv2_XmpNsInfo_keys(Exiv2::XmpNsInfo *self){
4568+
// Deprecated since 2025-09-11
4569+
PyErr_WarnEx(PyExc_DeprecationWarning,
4570+
"Please use __members__ to get the struct member names", 1);
45544571
return Exiv2_XmpNsInfo___members___get(self);
45554572
}
45564573
SWIGINTERN PyObject *Exiv2_XmpNsInfo_values(Exiv2::XmpNsInfo *self,PyObject *py_self){
4574+
// Deprecated since 2025-09-11
4575+
PyErr_WarnEx(PyExc_DeprecationWarning,
4576+
"Please use __members__ to get the struct member names"
4577+
" and getattr to get values from names", 1);
45574578
init_info_Exiv2_XmpNsInfo();
45584579
return values_struct(info_Exiv2_XmpNsInfo, py_self);
45594580
}
45604581
SWIGINTERN PyObject *Exiv2_XmpNsInfo_items(Exiv2::XmpNsInfo *self,PyObject *py_self){
4582+
// Deprecated since 2025-09-11
4583+
PyErr_WarnEx(PyExc_DeprecationWarning,
4584+
"Please use __members__ to get the struct member names"
4585+
" and getattr to get values from names", 1);
45614586
init_info_Exiv2_XmpNsInfo();
45624587
return items_struct(info_Exiv2_XmpNsInfo, py_self);
45634588
}
45644589
SWIGINTERN PyObject *Exiv2_XmpNsInfo___iter__(){
4590+
// Deprecated since 2025-09-11
4591+
PyErr_WarnEx(PyExc_DeprecationWarning,
4592+
"Please iterate over the __members__ attribute", 1);
45654593
init_info_Exiv2_XmpNsInfo();
45664594
PyObject* seq = keys_struct(info_Exiv2_XmpNsInfo);
45674595
PyObject* result = PySeqIter_New(seq);

src/swig-0_27_7/tags_wrap.cxx

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4510,17 +4510,31 @@ SWIGINTERNINLINE PyObject*
45104510
}
45114511

45124512
SWIGINTERN PyObject *Exiv2_GroupInfo_keys(Exiv2::GroupInfo *self){
4513+
// Deprecated since 2025-09-11
4514+
PyErr_WarnEx(PyExc_DeprecationWarning,
4515+
"Please use __members__ to get the struct member names", 1);
45134516
return Exiv2_GroupInfo___members___get(self);
45144517
}
45154518
SWIGINTERN PyObject *Exiv2_GroupInfo_values(Exiv2::GroupInfo *self,PyObject *py_self){
4519+
// Deprecated since 2025-09-11
4520+
PyErr_WarnEx(PyExc_DeprecationWarning,
4521+
"Please use __members__ to get the struct member names"
4522+
" and getattr to get values from names", 1);
45164523
init_info_Exiv2_GroupInfo();
45174524
return values_struct(info_Exiv2_GroupInfo, py_self);
45184525
}
45194526
SWIGINTERN PyObject *Exiv2_GroupInfo_items(Exiv2::GroupInfo *self,PyObject *py_self){
4527+
// Deprecated since 2025-09-11
4528+
PyErr_WarnEx(PyExc_DeprecationWarning,
4529+
"Please use __members__ to get the struct member names"
4530+
" and getattr to get values from names", 1);
45204531
init_info_Exiv2_GroupInfo();
45214532
return items_struct(info_Exiv2_GroupInfo, py_self);
45224533
}
45234534
SWIGINTERN PyObject *Exiv2_GroupInfo___iter__(){
4535+
// Deprecated since 2025-09-11
4536+
PyErr_WarnEx(PyExc_DeprecationWarning,
4537+
"Please iterate over the __members__ attribute", 1);
45244538
init_info_Exiv2_GroupInfo();
45254539
PyObject* seq = keys_struct(info_Exiv2_GroupInfo);
45264540
PyObject* result = PySeqIter_New(seq);
@@ -4559,17 +4573,31 @@ SWIG_From_short (short value)
45594573
}
45604574

45614575
SWIGINTERN PyObject *Exiv2_TagInfo_keys(Exiv2::TagInfo *self){
4576+
// Deprecated since 2025-09-11
4577+
PyErr_WarnEx(PyExc_DeprecationWarning,
4578+
"Please use __members__ to get the struct member names", 1);
45624579
return Exiv2_TagInfo___members___get(self);
45634580
}
45644581
SWIGINTERN PyObject *Exiv2_TagInfo_values(Exiv2::TagInfo *self,PyObject *py_self){
4582+
// Deprecated since 2025-09-11
4583+
PyErr_WarnEx(PyExc_DeprecationWarning,
4584+
"Please use __members__ to get the struct member names"
4585+
" and getattr to get values from names", 1);
45654586
init_info_Exiv2_TagInfo();
45664587
return values_struct(info_Exiv2_TagInfo, py_self);
45674588
}
45684589
SWIGINTERN PyObject *Exiv2_TagInfo_items(Exiv2::TagInfo *self,PyObject *py_self){
4590+
// Deprecated since 2025-09-11
4591+
PyErr_WarnEx(PyExc_DeprecationWarning,
4592+
"Please use __members__ to get the struct member names"
4593+
" and getattr to get values from names", 1);
45694594
init_info_Exiv2_TagInfo();
45704595
return items_struct(info_Exiv2_TagInfo, py_self);
45714596
}
45724597
SWIGINTERN PyObject *Exiv2_TagInfo___iter__(){
4598+
// Deprecated since 2025-09-11
4599+
PyErr_WarnEx(PyExc_DeprecationWarning,
4600+
"Please iterate over the __members__ attribute", 1);
45734601
init_info_Exiv2_TagInfo();
45744602
PyObject* seq = keys_struct(info_Exiv2_TagInfo);
45754603
PyObject* result = PySeqIter_New(seq);

src/swig-0_27_7/value_wrap.cxx

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6628,17 +6628,31 @@ static PyObject* items_struct(struct_info& info, PyObject* obj) {
66286628
};
66296629

66306630
SWIGINTERN PyObject *Exiv2_DateValue_Date_keys(Exiv2::DateValue::Date *self){
6631+
// Deprecated since 2025-09-11
6632+
PyErr_WarnEx(PyExc_DeprecationWarning,
6633+
"Please use __members__ to get the struct member names", 1);
66316634
return Exiv2_DateValue_Date___members___get(self);
66326635
}
66336636
SWIGINTERN PyObject *Exiv2_DateValue_Date_values(Exiv2::DateValue::Date *self,PyObject *py_self){
6637+
// Deprecated since 2025-09-11
6638+
PyErr_WarnEx(PyExc_DeprecationWarning,
6639+
"Please use __members__ to get the struct member names"
6640+
" and getattr to get values from names", 1);
66346641
init_info_Exiv2_DateValue_Date();
66356642
return values_struct(info_Exiv2_DateValue_Date, py_self);
66366643
}
66376644
SWIGINTERN PyObject *Exiv2_DateValue_Date_items(Exiv2::DateValue::Date *self,PyObject *py_self){
6645+
// Deprecated since 2025-09-11
6646+
PyErr_WarnEx(PyExc_DeprecationWarning,
6647+
"Please use __members__ to get the struct member names"
6648+
" and getattr to get values from names", 1);
66386649
init_info_Exiv2_DateValue_Date();
66396650
return items_struct(info_Exiv2_DateValue_Date, py_self);
66406651
}
66416652
SWIGINTERN PyObject *Exiv2_DateValue_Date___iter__(){
6653+
// Deprecated since 2025-09-11
6654+
PyErr_WarnEx(PyExc_DeprecationWarning,
6655+
"Please iterate over the __members__ attribute", 1);
66426656
init_info_Exiv2_DateValue_Date();
66436657
PyObject* seq = keys_struct(info_Exiv2_DateValue_Date);
66446658
PyObject* result = PySeqIter_New(seq);
@@ -6666,17 +6680,31 @@ static PyObject* Exiv2_TimeValue_Time___members___get(Exiv2::TimeValue::Time*) {
66666680
};
66676681

66686682
SWIGINTERN PyObject *Exiv2_TimeValue_Time_keys(Exiv2::TimeValue::Time *self){
6683+
// Deprecated since 2025-09-11
6684+
PyErr_WarnEx(PyExc_DeprecationWarning,
6685+
"Please use __members__ to get the struct member names", 1);
66696686
return Exiv2_TimeValue_Time___members___get(self);
66706687
}
66716688
SWIGINTERN PyObject *Exiv2_TimeValue_Time_values(Exiv2::TimeValue::Time *self,PyObject *py_self){
6689+
// Deprecated since 2025-09-11
6690+
PyErr_WarnEx(PyExc_DeprecationWarning,
6691+
"Please use __members__ to get the struct member names"
6692+
" and getattr to get values from names", 1);
66726693
init_info_Exiv2_TimeValue_Time();
66736694
return values_struct(info_Exiv2_TimeValue_Time, py_self);
66746695
}
66756696
SWIGINTERN PyObject *Exiv2_TimeValue_Time_items(Exiv2::TimeValue::Time *self,PyObject *py_self){
6697+
// Deprecated since 2025-09-11
6698+
PyErr_WarnEx(PyExc_DeprecationWarning,
6699+
"Please use __members__ to get the struct member names"
6700+
" and getattr to get values from names", 1);
66766701
init_info_Exiv2_TimeValue_Time();
66776702
return items_struct(info_Exiv2_TimeValue_Time, py_self);
66786703
}
66796704
SWIGINTERN PyObject *Exiv2_TimeValue_Time___iter__(){
6705+
// Deprecated since 2025-09-11
6706+
PyErr_WarnEx(PyExc_DeprecationWarning,
6707+
"Please iterate over the __members__ attribute", 1);
66806708
init_info_Exiv2_TimeValue_Time();
66816709
PyObject* seq = keys_struct(info_Exiv2_TimeValue_Time);
66826710
PyObject* result = PySeqIter_New(seq);

src/swig-0_28_7/datasets_wrap.cxx

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4480,17 +4480,31 @@ SWIGINTERNINLINE PyObject*
44804480
}
44814481

44824482
SWIGINTERN PyObject *Exiv2_DataSet_keys(Exiv2::DataSet *self){
4483+
// Deprecated since 2025-09-11
4484+
PyErr_WarnEx(PyExc_DeprecationWarning,
4485+
"Please use __members__ to get the struct member names", 1);
44834486
return Exiv2_DataSet___members___get(self);
44844487
}
44854488
SWIGINTERN PyObject *Exiv2_DataSet_values(Exiv2::DataSet *self,PyObject *py_self){
4489+
// Deprecated since 2025-09-11
4490+
PyErr_WarnEx(PyExc_DeprecationWarning,
4491+
"Please use __members__ to get the struct member names"
4492+
" and getattr to get values from names", 1);
44864493
init_info_Exiv2_DataSet();
44874494
return values_struct(info_Exiv2_DataSet, py_self);
44884495
}
44894496
SWIGINTERN PyObject *Exiv2_DataSet_items(Exiv2::DataSet *self,PyObject *py_self){
4497+
// Deprecated since 2025-09-11
4498+
PyErr_WarnEx(PyExc_DeprecationWarning,
4499+
"Please use __members__ to get the struct member names"
4500+
" and getattr to get values from names", 1);
44904501
init_info_Exiv2_DataSet();
44914502
return items_struct(info_Exiv2_DataSet, py_self);
44924503
}
44934504
SWIGINTERN PyObject *Exiv2_DataSet___iter__(){
4505+
// Deprecated since 2025-09-11
4506+
PyErr_WarnEx(PyExc_DeprecationWarning,
4507+
"Please iterate over the __members__ attribute", 1);
44944508
init_info_Exiv2_DataSet();
44954509
PyObject* seq = keys_struct(info_Exiv2_DataSet);
44964510
PyObject* result = PySeqIter_New(seq);

src/swig-0_28_7/preview_wrap.cxx

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5591,17 +5591,31 @@ SWIGINTERNINLINE PyObject*
55915591
}
55925592

55935593
SWIGINTERN PyObject *Exiv2_PreviewProperties_keys(Exiv2::PreviewProperties *self){
5594+
// Deprecated since 2025-09-11
5595+
PyErr_WarnEx(PyExc_DeprecationWarning,
5596+
"Please use __members__ to get the struct member names", 1);
55945597
return Exiv2_PreviewProperties___members___get(self);
55955598
}
55965599
SWIGINTERN PyObject *Exiv2_PreviewProperties_values(Exiv2::PreviewProperties *self,PyObject *py_self){
5600+
// Deprecated since 2025-09-11
5601+
PyErr_WarnEx(PyExc_DeprecationWarning,
5602+
"Please use __members__ to get the struct member names"
5603+
" and getattr to get values from names", 1);
55975604
init_info_Exiv2_PreviewProperties();
55985605
return values_struct(info_Exiv2_PreviewProperties, py_self);
55995606
}
56005607
SWIGINTERN PyObject *Exiv2_PreviewProperties_items(Exiv2::PreviewProperties *self,PyObject *py_self){
5608+
// Deprecated since 2025-09-11
5609+
PyErr_WarnEx(PyExc_DeprecationWarning,
5610+
"Please use __members__ to get the struct member names"
5611+
" and getattr to get values from names", 1);
56015612
init_info_Exiv2_PreviewProperties();
56025613
return items_struct(info_Exiv2_PreviewProperties, py_self);
56035614
}
56045615
SWIGINTERN PyObject *Exiv2_PreviewProperties___iter__(){
5616+
// Deprecated since 2025-09-11
5617+
PyErr_WarnEx(PyExc_DeprecationWarning,
5618+
"Please iterate over the __members__ attribute", 1);
56055619
init_info_Exiv2_PreviewProperties();
56065620
PyObject* seq = keys_struct(info_Exiv2_PreviewProperties);
56075621
PyObject* result = PySeqIter_New(seq);

0 commit comments

Comments
 (0)