mirror of
				https://github.com/python-pillow/Pillow.git
				synced 2025-11-04 09:57:43 +03:00 
			
		
		
		
	Fix 'BytesWarning: Comparison between bytes and string' in PdfDict
When bytes warnings are enabled with the '-b' argument, the PdfDict class would emit a warning. https://docs.python.org/3/using/cmdline.html#miscellaneous-options > -b > > Issue a warning when comparing bytes or bytearray with str or bytes > with int. Object attributes are always type str, so can safely encode them without a type check. Observe: $ python3 >>> o = object() >>> setattr(o, b'foo', b'bar') Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: attribute name must be string, not 'bytes'
This commit is contained in:
		
							parent
							
								
									b62ff510aa
								
							
						
					
					
						commit
						c41ec5b115
					
				| 
						 | 
					@ -269,18 +269,13 @@ class PdfDict(UserDict):
 | 
				
			||||||
            else:
 | 
					            else:
 | 
				
			||||||
                self.__dict__[key] = value
 | 
					                self.__dict__[key] = value
 | 
				
			||||||
        else:
 | 
					        else:
 | 
				
			||||||
            if isinstance(key, str):
 | 
					            self[key.encode("us-ascii")] = value
 | 
				
			||||||
                key = key.encode("us-ascii")
 | 
					 | 
				
			||||||
            self[key] = value
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def __getattr__(self, key):
 | 
					    def __getattr__(self, key):
 | 
				
			||||||
        try:
 | 
					        try:
 | 
				
			||||||
            value = self[key]
 | 
					            value = self[key.encode("us-ascii")]
 | 
				
			||||||
        except KeyError:
 | 
					        except KeyError:
 | 
				
			||||||
            try:
 | 
					            raise AttributeError(key)
 | 
				
			||||||
                value = self[key.encode("us-ascii")]
 | 
					 | 
				
			||||||
            except KeyError:
 | 
					 | 
				
			||||||
                raise AttributeError(key)
 | 
					 | 
				
			||||||
        if isinstance(value, bytes):
 | 
					        if isinstance(value, bytes):
 | 
				
			||||||
            value = decode_text(value)
 | 
					            value = decode_text(value)
 | 
				
			||||||
        if key.endswith("Date"):
 | 
					        if key.endswith("Date"):
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user