2019-06-04

Nuevos features de slowbreak

Estuve laburando en slowbreak, mi biblioteca para conectarse a servers de las bolsas de todo el mundo, y tiene algunas mejoras. Acá se las cuento:

  • Utilidades para leer y escribir valores. En el protocolo fix, y slowbreak, el valor de un campo es una tira de bytes. Para hacer más fácil la lectura y escritura de mensajes agregué métodos al módulo message para transformar esos bytes en valores de python. Son estos:
    • message.from_bool/ message.to_bool para leer y escribir booleanos. En fix el valor true se expresa con esta tira de bytes: b'Y'
    • message.from_int/ message.to_int para leer y escribir enteros.
    • message.from_decimal/ message.to_decimal para leer y escribir instancias de decimal.Decimal. Esto es particularmente importante para manejar los precios de las securities con las que operamos.
    • message.from_str(s, encoding='ascii')/ message.to_str(v, encoding='ascii') para leer y escribir strings. En python3 no podemos tratar a los strings como listas de bytes, así que estos métodos se hacen más importantes. Una cosa a notar es que por default usa 'ascii' como encoding. Eso hace que para la mayoría de las cosas ande de una. Si se conectan a un server que manda caracteres fuera del rango, tienen que consultar la documentación sobre el encoding soportado, ya que no está en la especificación de fix (AFAIK).
    • message.timestamp genera los timestamps en el formato adecuado para fix (tal como se usan en los tags 52 y 60). Sin parámetro genera el timestamp actual (GMT). También recibe un objeto datetime si quieren generar un timestamp de otro momento.
  • Confidencialidad de passwords. Los métodos __repr__ y pprint() de message.Message esconden el valor del tag 554 (password). Eso hace que los logs generados por slowbreak no contengan el password utilizado para conectarse al server.
  • Soporte de nombres para las apps. Las apps tienen el parámetro opcional name para darles nombre, que después se puede usar en el método app_by_name para buscar una aplicación hija con el nombre buscado. Esto hace más fácil trabajar con stacks grandes de aplicaciones.
  • Grupos sin limitación de tags. Ahora slowbreak puede parsear grupos aún cuando no sabemos cuáles son todos los tags que pueden ir incluídos. Solo se requiere el counting_tag y el start_tag. Para indicar este modo, pasen el objeto message.AllInclusive en vez de la lista de tags aceptados.
Como siempre, pueden hacer pip install slowbreak para usarlo. Todas las mejoras están en el último release.

¿Querés conectarte a servers de las bolsas del mundo? Puedo ayudarte. Podés contratarme como consultor y te ayudo a usar slowbreak para operar programáticamente.