Validator

Validator

The mission is in Blocked Mode. Access to the solutions is blocked for a day or two (even after you share your own), until we'll have enough solutions for you to check. All users who've solved the mission will get the notifications about their opening.

This mission was inspired by Raymond Hettinger's talk at the 4th annual PyBay conference.
This is the second mission related to his talk. The first mission can be seen by clicking here.

Data validation is a check process that confirms that type and value of the input (in our case) data matches the specification. In the mission, you need to create LogLine class which uses input data passing as an argument for its instances initialization. The class should have the next attributes: id, name, status and error. In order to retrieve the attribute values the get() method should be implemented. When initializing a class instance, it is required to validate the data, which must meet the following requirements:

  • input data type - string;
  • input string contains "id", "name" and "status" (in the certain order), separated by whitespaces, not less, not more;
  • id value should allow its conversion to an int, 0 <= id <= 1000;
  • len(name) should be not less than 2, not more than 20, any characters, except whitespace;
  • status should one of ["active", "idle", "shutdown"].

If the data type and value are successfully validated during a class instance initialization, its attributes id, name и status should have respective values. The value of the error attr should be "passed data is valid".

Example of the class instance initiated with the valid data:

log = LogLine("123 search active")
log.get("error") == "passed data is valid"
log.get("id") == 123
log.get("name") == "search"
log.get("status") == "active"
    

If data type or value do not pass validation during a class instance initialization, its attributes id, name и status values should be None. The value of the error attribute may be:

  • the input data is not an instance of a string - "wrong input type";
  • in the passed string more or less than 3 space-separated elements - "wrong input value";
  • the first element of the passed string (id) cannot be converted to an integer - "wrong id type";
  • 0 > id or id > 1000 - "wrong id value";
  • length...
The order in which the possible values of the error attribute are listed corresponds to the order in which the data should be validated. It is not necessary to record all validation errors - if any error occurs, validation can be interrupted and the passed data can be considered invalid. If you want to track all the errors in the passed data when solving a task for some reason, the
You should be an authorized user in order to see the full description and start solving this mission.
28