pub fn parse_header(&self, py: Python<'_>) -> PyResult<Py<PyAny>> {
        let settings = ParserInputs {
            real_name_to_og_name: AHashMap::default(),
            wanted_players: vec![],
            wanted_player_props: vec![],
            wanted_other_props: vec![],
            wanted_prop_states: AHashMap::default(),
            wanted_events: vec![],
            parse_ents: false,
            wanted_ticks: vec![],
            parse_projectiles: false,
            parse_grenades: false,
            only_header: true,
            list_props: false,
            only_convars: false,
            huffman_lookup_table: &self.huf,
            order_by_steamid: false,
            fallback_bytes: None,
        };
        let mut parser = FirstPassParser::new(&settings);
        let output = match parser.parse_header_only(&self.mmap) {
            Ok(output) => output,
            Err(e) => return Err(Exception::new_err(format!("{e}"))),
        };
        Ok(output.to_object(py))
    }
Parses header message (different from the first 16 bytes of the file)
Should have the following fields:

"addons", "server_name", "demo_file_stamp", "network_protocol",
"map_name", "fullpackets_version", "allow_clientside_entities",
"allow_clientside_particles", "demo_version_name", "demo_version_guid",
"client_name", "game_directory"
src/python/src/lib.rs