# ly.server package

## Module contents

A package implementing an HTTP server to process LilyPond input code.

## Submodules

## ly.server.command module

The commands that are available to the command line.

class `ly.server.command.``abs2rel`

  Bases: `ly.server.command._edit_command`

  convert absolute music to relative

  `edit`(opts, cursor)

class `ly.server.command.``highlight`

  Bases: `ly.server.command._export_command`

  convert source to syntax colored HTML.

  `export`(opts, cursor, exports)

class `ly.server.command.``indent`

  Bases: `ly.server.command._edit_command`

  run the indenter

  `edit`(opts, cursor)
  `indenter`(opts)

    Get a ly.indent.Indenter initialized with our options.

class `ly.server.command.``language`

  Bases: `ly.server.command._info_command`

  retrieve language from document

  `get_info`(info)

class `ly.server.command.``mode`

  Bases: `ly.server.command._info_command`

  retrieve mode from document

  `get_info`(info)

class `ly.server.command.``musicxml`

  Bases: `ly.server.command._export_command`

  convert source to MusicXML

  `export`(opts, cursor, exports)

class `ly.server.command.``reformat`

  Bases: `ly.server.command.indent`

  reformat the document

  `edit`(opts, cursor)

class `ly.server.command.``rel2abs`

  Bases: `ly.server.command._edit_command`

  convert relative music to absolute

  `edit`(opts, cursor)

class `ly.server.command.``set_variable`(arg)

  Bases: `ly.server.command._command`

  set a configuration variable to a value

  `run`(opts, data)

class `ly.server.command.``translate`(language)

  Bases: `ly.server.command._edit_command`

  translate pitch names

  `edit`(opts, cursor)

class `ly.server.command.``transpose`(arg)

  Bases: `ly.server.command._edit_command`

  transpose music

  `edit`(opts, cursor)

class `ly.server.command.``version`

  Bases: `ly.server.command._info_command`

  retrieve version from document

  `get_info`(info)

## ly.server.handler module

HTTP request handler

class `ly.server.handler.``RequestHandler`(request, client_address, server)

  Bases: `BaseHTTPServer.BaseHTTPRequestHandler`

  `create_command`(cmd)

    Parse one command from the JSON data, plus optionally some commands to set variables. Returns an array with command._command instances. Raises exceptions upon faulty data.

  `do_POST`()

    A POST request is expected to contain the task to be executed as a JSON object in the request body. The POST handler (currently) ignores the URL.

  `process_json_request`(request)

    Configure the action(s) to be taken, based on the JSON object. Raise errors when the JSON object can’t be properly understood. Run the commands and return a string (from cursor.text() ).

  `process_options`(opts)

    Instantiate a copy of the default options and update with the given opts

  `read_json_request`()

    Returns the message body parsed to a dictionary from JSON data. Raises - RuntimeWarning when no JSON data is present - ValueError when JSON parsing fails

## ly.server.main module

The entry point for the ‘ly-server’ command.

`ly.server.main.``die`(message)

  Exit with message to STDERR. In ly-server this should only be called upon startup, not while processing requests. Then the error should be sent back to the client.

`ly.server.main.``main`()

`ly.server.main.``parse_command_line`()

  Returns a two-tuple(server_opts, cmd_opts)

  server_opts is a ServerOptions instance configuring the server behaviour cmd_opts is an Options instance with default options for future command executions triggered by HTTP requests.

  Also performs error handling and may exit on certain circumstances.

`ly.server.main.``usage`()

  Print usage info.

`ly.server.main.``usage_short`()

  Print short usage info.

`ly.server.main.``version`()

  Print version info.

## ly.server.options module

Options configuring the commands’ behaviour

class `ly.server.options.``Options`

  Bases: `object`

  Store all the startup options and their defaults.

  `set_variable`(name, value)

class `ly.server.options.``ServerOptions`

  Bases: `object`

  Options configuring the server itself, not the individual commands