MCPcopy Create free account
hub / github.com/LaihoE/Python-demoparser / parse_events

Method parse_events

src/lib.rs:150–203  ·  view source on GitHub ↗
(
        &self,
        py: Python<'_>,
        event_name: String,
        py_kwargs: Option<&PyDict>,
    )

Source from the content-addressed store, hash-verified

148 }
149 #[args(py_kwargs = "**")]
150 pub fn parse_events(
151 &self,
152 py: Python<'_>,
153 event_name: String,
154 py_kwargs: Option<&PyDict>,
155 ) -> PyResult<Py<PyAny>> {
156 let (rounds, wanted_props) = parse_kwargs_event(py_kwargs);
157 let real_props = rm_user_friendly_names(&wanted_props);
158 let unk_props = check_validity_props(&real_props);
159 if !unk_props.is_empty() {
160 return Err(PyKeyError::new_err(format!(
161 "Unknown fields: {:?}",
162 unk_props
163 )));
164 }
165 let parse_props = !wanted_props.is_empty() || rounds;
166 let parser = Demo::new(
167 self.path.clone(),
168 parse_props,
169 vec![],
170 vec![],
171 real_props,
172 event_name,
173 false,
174 false,
175 false,
176 9999999,
177 wanted_props,
178 );
179 match parser {
180 Err(e) => Err(PyFileNotFoundError::new_err(format!(
181 "Couldnt read demo file. Error: {}",
182 e
183 ))),
184 Ok(mut parser) => {
185 let _: Header = parser.parse_demo_header();
186
187 let _ = parser.start_parsing(&vec!["m_iMVPs".to_owned()]);
188 let mut game_evs: Vec<FxHashMap<String, PyObject>> = Vec::new();
189
190 // Create Hashmap with <string, pyobject> to be able to convert to python dict
191 for ge in parser.game_events {
192 let mut hm: FxHashMap<String, PyObject> = FxHashMap::default();
193 let tuples = ge.to_py_tuples(py);
194 for (k, v) in tuples {
195 hm.insert(k, v);
196 }
197 game_evs.push(hm);
198 }
199 let dict = pyo3::Python::with_gil(|py| game_evs.to_object(py));
200 Ok(dict)
201 }
202 }
203 }
204
205 #[args(py_kwargs = "**")]
206 pub fn parse_ticks(

Callers 13

gen_events_testsFunction · 0.95
parseFunction · 0.95
coordinatesFunction · 0.95
parseFunction · 0.95
parseFunction · 0.95
util_dmgFunction · 0.95
coordinatesFunction · 0.95
test_eventsMethod · 0.80
team_flashbang.pyFile · 0.80
all_names.pyFile · 0.80
find_epic_kill.pyFile · 0.80
he_damage.pyFile · 0.80

Calls 6

parse_kwargs_eventFunction · 0.85
rm_user_friendly_namesFunction · 0.85
check_validity_propsFunction · 0.85
parse_demo_headerMethod · 0.80
start_parsingMethod · 0.80
to_py_tuplesMethod · 0.80

Tested by 2

gen_events_testsFunction · 0.76
test_eventsMethod · 0.64