Modify

Ticket #173 (closed defect: invalid)

Opened 3 years ago

Last modified 2 days ago

Python regular expression named groups breaks (?) pyyaml

Reported by: anonymous Owned by: xi
Priority: normal Component: pyyaml
Severity: normal Keywords:
Cc:

Description

I'm using pyyaml 3.09 in Python 2.6.5 on Ubuntu 10.04 LTS.

I have a yaml file I used for configuration of a web server (tornado), and the section of my file causing issues looks like this:

RequestHandlers:
  # [ path, handler class, [whitelist] ]
   - [/stats, myapp.core.Stats, [127.0.0.1, 10.0.0.0/8]]
   - [r'/(?P<id>.*)', myapp.core.Foo, [127.0.0.1, 192.168.0.0/16]]
   - [/.*, myapp.core.MainHandler, []]

When this gets loaded, pyyaml yells at me. Here's a python interpreter session:

============================================

Python 2.6.5 (r265:79063, Apr 16 2010, 13:09:56) 
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import yaml
>>> stream = open('etc/subzero.yaml')
>>> config = yaml.load(stream)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "build/bdist.linux-i686/egg/yaml/__init__.py", line 58, in load
    
  File "build/bdist.linux-i686/egg/yaml/constructor.py", line 42, in get_single_data
  File "build/bdist.linux-i686/egg/yaml/composer.py", line 36, in get_single_node
  File "build/bdist.linux-i686/egg/yaml/composer.py", line 55, in compose_document
  File "build/bdist.linux-i686/egg/yaml/composer.py", line 84, in compose_node
  File "build/bdist.linux-i686/egg/yaml/composer.py", line 133, in compose_mapping_node
  File "build/bdist.linux-i686/egg/yaml/composer.py", line 82, in compose_node
  File "build/bdist.linux-i686/egg/yaml/composer.py", line 111, in compose_sequence_node
  File "build/bdist.linux-i686/egg/yaml/composer.py", line 82, in compose_node
  File "build/bdist.linux-i686/egg/yaml/composer.py", line 110, in compose_sequence_node
  File "build/bdist.linux-i686/egg/yaml/parser.py", line 93, in check_event
  File "build/bdist.linux-i686/egg/yaml/parser.py", line 479, in parse_flow_sequence_entry
yaml.parser.ParserError: while parsing a flow sequence
  in "etc/myapp.yaml", line 35, column 5
expected ',' or ']', but got '?'
  in "etc/myapp.yaml", line 35, column 10

============================================

Line 35 is:

   - [r'/(?P<id>.*)', myapp.core.Foo, [127.0.0.1, 192.168.0.0/16]]

I'm wondering why it's choking here. Disabling this line causes everything to work perfectly well. The question mark is a special case in YAML, but (I thought) only when it's accompanied by a space. I don't recall ever needing to escape anything inside of a yaml file, but I tried escaping the '?'. Not sure what to try next. If I double-quote like "r'/(?P<id>.*)'" then it'll be a double-quoted string on the other end of the load as well, which doesn't help me.

Clue hereby solicited.

Attachments

Change History

comment:1 Changed 3 years ago by xi

Why do you use the r prefix? It's not supported by YAML the way it is interpreted by Python, instead you'll get a literal string "r'/(?P<id>.*)'". '/(?P<id>.*)' should work just fine, you can even use backslashes without escaping them.

comment:2 Changed 3 years ago by xi

  • Status changed from new to closed
  • Resolution set to invalid

comment:3 Changed 2 days ago by maskodok <galihadiputro87@…>

The only thing more I could hope for is documentation of all these features (other than reading through the code).  Cipto Junaedy Is this in process? Can I help? About  Unit Link Terbaik di Indonesia Commonwealth Life Investra Link

View

Add a comment

Modify Ticket

Change Properties
<Author field>
Action
as closed
The resolution will be deleted. Next status will be 'reopened'
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.