Custom Query (132 matches)

Filters
 
Or
 
  
 
Columns

Show under each result:


Results (40 - 42 of 132)

Ticket Resolution Summary Owner Reporter
#48 wontfix yaml.load does not call __init__ of objects xi aymanbahrain@…

Reported by aymanbahrain@…, 7 years ago.

Description

I noticed that my init code is not called when an object is created via yaml.load. Try this one: In this example, fy.secret will raise an error about secret not an attribute of fy object.

import yaml

class Field:
    def __init__(self):
        print 'init called'
        self.secret = 'password'
        
f = Field()

print f.secret

fy = yaml.load(file('fld.yaml', 'r'))
print fy.hide_value               
print fy.secret

have fld.yaml contain:
!!python/object:__main__.Field 
hide_value: true

#49 fixed yaml confused by python float repr() xi cems a.t. lanl.gov

Reported by cems a.t. lanl.gov, 7 years ago.

Description

platform: intel macintosh, python2.5 , latest yaml.

Description: depending on a floats value dump() will output a different representation format. Sometimes it uses a tag format and others a standard float notation depending on the value.

example:

In [160]:dat ="""
float1: 1.0E-8
float2: 1.0E-9
"""

In [165]:t = yaml.load(dat)

In [166]:t
Out[166]:{'float1': 1e-08, 'float2': 1.0000000000000001e-09}

In [167]:yaml.dump(t)
Out[167]:"{float1: !!float '1e-08', float2: 1.0000000000000001e-09}\n"

notice the !!float tag followed by a string.

regression: this appears to be an attempt to compensate for fact that python's string representation of some float values having different formats: that is in python2.5 the repr() of 1.0e-8 is actually 1e-08 (it supresses the decimal point). Since YAML does not recognize floats without the decimal point the dump command adds the float tag. However while the repr() of 1.0E-9 is 1.0000000000000001e-09. which has the decimal point making it legal YAML and it dump avoids the float tag

It seems to me that a more consistent and desirable result would be obtained if dump were to output 1e-8 as 1.0e-8 rather than using the float if one is parsing a yaml file in another language the tagged format of the float can't be read easily. (e.g. consider reading this in fortran or perl without using a yaml lib to read the file.)

#50 fixed ScannerError TypeError xi edemaine@…

Reported by edemaine@…, 7 years ago.

Description

I encountered a small bug in error reporting with the libyaml interface:

## A "real-world" example: mistaken input HTML instead of YAML.
>>> x='<HTML>\n  <HEAD>\n    <STYLE>\n      TABLE { border-collapse: collapse; }\n    </STYLE>\n  </HEAD>\n</HTML>'

>>> yaml.load(x)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/toc/home/edemaine/Packages/lib/python2.6/site-packages/yaml/__init__.py", line 66, in load
    return loader.get_data()
  File "/toc/home/edemaine/Packages/lib/python2.6/site-packages/yaml/constructor.py", line 38, in get_data
    return self.construct_document(self.get_node())
  File "/toc/home/edemaine/Packages/lib/python2.6/site-packages/yaml/composer.py", line 27, in get_node
    return self.compose_document()
  File "/toc/home/edemaine/Packages/lib/python2.6/site-packages/yaml/composer.py", line 37, in compose_document
    self.get_event()
  File "/toc/home/edemaine/Packages/lib/python2.6/site-packages/yaml/parser.py", line 115, in get_event
    self.current_event = self.state()
  File "/toc/home/edemaine/Packages/lib/python2.6/site-packages/yaml/parser.py", line 186, in parse_document_end
    token = self.peek_token()
  File "/toc/home/edemaine/Packages/lib/python2.6/site-packages/yaml/scanner.py", line 128, in peek_token
    self.fetch_more_tokens()
  File "/toc/home/edemaine/Packages/lib/python2.6/site-packages/yaml/scanner.py", line 220, in fetch_more_tokens
    return self.fetch_value()
  File "/toc/home/edemaine/Packages/lib/python2.6/site-packages/yaml/scanner.py", line 579, in fetch_value
    self.get_mark())
yaml.scanner.ScannerError: mapping values are not allowed here
  in "<string>", line 4, column 30:
          TABLE { border-collapse: collapse; }
                                 ^
## great error reporting

>>> yaml.load(x,yaml.CLoader)                                                   Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/toc/home/edemaine/Packages/lib/python2.6/site-packages/yaml/__init__.py", line 66, in load
    return loader.get_data()
  File "/toc/home/edemaine/Packages/lib/python2.6/site-packages/yaml/constructor.py", line 38, in get_data
    return self.construct_document(self.get_node())
  File "_yaml.pyx", line 664, in _yaml.CParser.get_node
  File "_yaml.pyx", line 669, in _yaml.CParser._compose_document
  File "_yaml.pyx", line 848, in _yaml.CParser._parse_next_event
TypeError: exceptions must be strings, classes, or instances, not ScannerError
## not so useful--seems to be a bug

I didn't investigate why ScannerError is considered to be a class in the first case but not the second; perhaps _yaml defines its own ScannerError? type? Should probably just use yaml.scanner.ScannerError instead.

Note: See TracQuery for help on using queries.