diff --git a/Tests/test_imagecms.py b/Tests/test_imagecms.py index 953731215..e549f0922 100644 --- a/Tests/test_imagecms.py +++ b/Tests/test_imagecms.py @@ -435,39 +435,6 @@ def test_extended_information(): assert p.xcolor_space == "RGB " -def test_deprecations(): - skip_missing() - o = ImageCms.getOpenProfile(SRGB) - p = o.profile - - def helper_deprecated(attr, expected): - result = pytest.warns(DeprecationWarning, getattr, p, attr) - assert result == expected - - # p.color_space - helper_deprecated("color_space", "RGB") - - # p.pcs - helper_deprecated("pcs", "XYZ") - - # p.product_copyright - helper_deprecated( - "product_copyright", "Copyright International Color Consortium, 2009" - ) - - # p.product_desc - helper_deprecated("product_desc", "sRGB IEC61966-2-1 black scaled") - - # p.product_description - helper_deprecated("product_description", "sRGB IEC61966-2-1 black scaled") - - # p.product_manufacturer - helper_deprecated("product_manufacturer", "") - - # p.product_model - helper_deprecated("product_model", "IEC 61966-2-1 Default RGB Colour Space - sRGB") - - def test_profile_typesafety(): """ Profile init type safety diff --git a/docs/deprecations.rst b/docs/deprecations.rst index af8fc7527..b5ba00e40 100644 --- a/docs/deprecations.rst +++ b/docs/deprecations.rst @@ -49,16 +49,23 @@ PILLOW_VERSION constant It was initially removed in Pillow 7.0.0, but brought back in 7.1.0 to give projects more time to upgrade. +Removed features +---------------- + +Deprecated features are only removed in major releases after an appropriate +period of deprecation has passed. + ImageCms.CmsProfile attributes ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. deprecated:: 3.2.0 +.. versionremoved:: 8.0.0 -Some attributes in ``ImageCms.CmsProfile`` are deprecated. From 6.0.0, they issue a +Some attributes in ``ImageCms.CmsProfile`` have been removed. From 6.0.0, they issued a ``DeprecationWarning``: ======================== =============================== -Deprecated Use instead +Removed Use instead ======================== =============================== ``color_space`` Padded ``xcolor_space`` ``pcs`` Padded ``connection_space`` @@ -69,12 +76,6 @@ Deprecated Use instead ``product_model`` Unicode ``model`` ======================== =============================== -Removed features ----------------- - -Deprecated features are only removed in major releases after an appropriate -period of deprecation has passed. - Python 2.7 ~~~~~~~~~~ diff --git a/src/_imagingcms.c b/src/_imagingcms.c index 7f23d5964..cba41ec90 100644 --- a/src/_imagingcms.c +++ b/src/_imagingcms.c @@ -223,25 +223,6 @@ cms_transform_dealloc(CmsTransformObject* self) /* -------------------------------------------------------------------- */ /* internal functions */ -static const char* -findICmode(cmsColorSpaceSignature cs) -{ - switch (cs) { - case cmsSigXYZData: return "XYZ"; - case cmsSigLabData: return "LAB"; - case cmsSigLuvData: return "LUV"; - case cmsSigYCbCrData: return "YCbCr"; - case cmsSigYxyData: return "YXY"; - case cmsSigRgbData: return "RGB"; - case cmsSigGrayData: return "L"; - case cmsSigHsvData: return "HSV"; - case cmsSigHlsData: return "HLS"; - case cmsSigCmykData: return "CMYK"; - case cmsSigCmyData: return "CMY"; - default: return ""; /* other TBA */ - } -} - static cmsUInt32Number findLCMStype(char* PILmode) { @@ -956,92 +937,12 @@ static struct PyMethodDef cms_profile_methods[] = { {NULL, NULL} /* sentinel */ }; -static PyObject* -_profile_getattr(CmsProfileObject* self, cmsInfoType field) -{ - // UNDONE -- check that I'm getting the right fields on these. - // return PyUnicode_DecodeFSDefault(cmsTakeProductName(self->profile)); - //wchar_t buf[256]; -- UNDONE need wchar_t for unicode version. - char buf[256]; - cmsUInt32Number written; - written = cmsGetProfileInfoASCII(self->profile, - field, - "en", - "us", - buf, - 256); - if (written) { - return PyUnicode_FromString(buf); - } - // UNDONE suppressing error here by sending back blank string. - return PyUnicode_FromString(""); -} - -static PyObject* -cms_profile_getattr_product_desc(CmsProfileObject* self, void* closure) -{ - PyErr_WarnEx(PyExc_DeprecationWarning, - "product_desc is deprecated. Use Unicode profile_description instead.", 1); - // description was Description != 'Copyright' || or "%s - %s" (manufacturer, model) in 1.x - return _profile_getattr(self, cmsInfoDescription); -} - -/* use these four for the individual fields. - */ -static PyObject* -cms_profile_getattr_product_description(CmsProfileObject* self, void* closure) -{ - PyErr_WarnEx(PyExc_DeprecationWarning, - "product_description is deprecated. Use Unicode profile_description instead.", 1); - return _profile_getattr(self, cmsInfoDescription); -} - -static PyObject* -cms_profile_getattr_product_model(CmsProfileObject* self, void* closure) -{ - PyErr_WarnEx(PyExc_DeprecationWarning, - "product_model is deprecated. Use Unicode model instead.", 1); - return _profile_getattr(self, cmsInfoModel); -} - -static PyObject* -cms_profile_getattr_product_manufacturer(CmsProfileObject* self, void* closure) -{ - PyErr_WarnEx(PyExc_DeprecationWarning, - "product_manufacturer is deprecated. Use Unicode manufacturer instead.", 1); - return _profile_getattr(self, cmsInfoManufacturer); -} - -static PyObject* -cms_profile_getattr_product_copyright(CmsProfileObject* self, void* closure) -{ - PyErr_WarnEx(PyExc_DeprecationWarning, - "product_copyright is deprecated. Use Unicode copyright instead.", 1); - return _profile_getattr(self, cmsInfoCopyright); -} - static PyObject* cms_profile_getattr_rendering_intent(CmsProfileObject* self, void* closure) { return PyLong_FromLong(cmsGetHeaderRenderingIntent(self->profile)); } -static PyObject* -cms_profile_getattr_pcs(CmsProfileObject* self, void* closure) -{ - PyErr_WarnEx(PyExc_DeprecationWarning, - "pcs is deprecated. Use padded connection_space instead.", 1); - return PyUnicode_DecodeFSDefault(findICmode(cmsGetPCS(self->profile))); -} - -static PyObject* -cms_profile_getattr_color_space(CmsProfileObject* self, void* closure) -{ - PyErr_WarnEx(PyExc_DeprecationWarning, - "color_space is deprecated. Use padded xcolor_space instead.", 1); - return PyUnicode_DecodeFSDefault(findICmode(cmsGetColorSpace(self->profile))); -} - /* New-style unicode interfaces. */ static PyObject* cms_profile_getattr_copyright(CmsProfileObject* self, void* closure) @@ -1149,14 +1050,12 @@ cms_profile_getattr_device_class(CmsProfileObject* self, void* closure) return _profile_read_int_as_string(cmsGetDeviceClass(self->profile)); } -/* Duplicate of pcs, but uninterpreted. */ static PyObject* cms_profile_getattr_connection_space(CmsProfileObject* self, void* closure) { return _profile_read_int_as_string(cmsGetPCS(self->profile)); } -/* Duplicate of color_space, but uninterpreted. */ static PyObject* cms_profile_getattr_xcolor_space(CmsProfileObject* self, void* closure) { @@ -1458,15 +1357,6 @@ cms_profile_getattr_icc_viewing_condition (CmsProfileObject* self, void* closure static struct PyGetSetDef cms_profile_getsetters[] = { - /* Compatibility interfaces. */ - { "product_desc", (getter) cms_profile_getattr_product_desc }, - { "product_description", (getter) cms_profile_getattr_product_description }, - { "product_manufacturer", (getter) cms_profile_getattr_product_manufacturer }, - { "product_model", (getter) cms_profile_getattr_product_model }, - { "product_copyright", (getter) cms_profile_getattr_product_copyright }, - { "pcs", (getter) cms_profile_getattr_pcs }, - { "color_space", (getter) cms_profile_getattr_color_space }, - /* New style interfaces. */ { "rendering_intent", (getter) cms_profile_getattr_rendering_intent }, { "creation_date", (getter) cms_profile_getattr_creation_date }, @@ -1485,7 +1375,6 @@ static struct PyGetSetDef cms_profile_getsetters[] = { { "header_model", (getter) cms_profile_getattr_header_model }, { "device_class", (getter) cms_profile_getattr_device_class }, { "connection_space", (getter) cms_profile_getattr_connection_space }, - /* Similar to color_space, but with full 4-letter signature (including trailing whitespace). */ { "xcolor_space", (getter) cms_profile_getattr_xcolor_space }, { "profile_id", (getter) cms_profile_getattr_profile_id }, { "is_matrix_shaper", (getter) cms_profile_getattr_is_matrix_shaper },