annotate rust/hg-cpython/src/filepatterns.rs @ 43697:dc4e74d0ef96

py3: send bytes from Rust-created warning patterns Python code expects bytes in both Python 2 and Python 3, so we should send bytes. Differential Revision: https://phab.mercurial-scm.org/D7454
author Rapha?l Gom?s <rgomes@octobus.net>
date Mon, 18 Nov 2019 17:37:59 +0100
parents 7a01778bc7b7
children f79377f24487
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
42328
94f3a73b6672 rust-filepatterns: add `rust-cpython` bindings for `filepatterns`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 41693
diff changeset
1 // filepatterns.rs
40965
5532823e8c18 rust-cpython: start cpython crate bindings
Georges Racinet <gracinet@anybox.fr>
parents:
diff changeset
2 //
42328
94f3a73b6672 rust-filepatterns: add `rust-cpython` bindings for `filepatterns`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 41693
diff changeset
3 // Copyright 2019, Georges Racinet <gracinet@anybox.fr>,
94f3a73b6672 rust-filepatterns: add `rust-cpython` bindings for `filepatterns`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 41693
diff changeset
4 // Raphaël Gomès <rgomes@octobus.net>
40965
5532823e8c18 rust-cpython: start cpython crate bindings
Georges Racinet <gracinet@anybox.fr>
parents:
diff changeset
5 //
5532823e8c18 rust-cpython: start cpython crate bindings
Georges Racinet <gracinet@anybox.fr>
parents:
diff changeset
6 // This software may be used and distributed according to the terms of the
5532823e8c18 rust-cpython: start cpython crate bindings
Georges Racinet <gracinet@anybox.fr>
parents:
diff changeset
7 // GNU General Public License version 2 or any later version.
5532823e8c18 rust-cpython: start cpython crate bindings
Georges Racinet <gracinet@anybox.fr>
parents:
diff changeset
8
42328
94f3a73b6672 rust-filepatterns: add `rust-cpython` bindings for `filepatterns`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 41693
diff changeset
9 //! Bindings for the `hg::filepatterns` module provided by the
94f3a73b6672 rust-filepatterns: add `rust-cpython` bindings for `filepatterns`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 41693
diff changeset
10 //! `hg-core` crate. From Python, this will be seen as `rustext.filepatterns`
42841
ce6797ef6eab rust: apply more formatting fixes
Yuya Nishihara <yuya@tcha.org>
parents: 42634
diff changeset
11 //! and can be used as replacement for the the pure `filepatterns` Python
ce6797ef6eab rust: apply more formatting fixes
Yuya Nishihara <yuya@tcha.org>
parents: 42634
diff changeset
12 //! module.
41188
006c9ce486fa rust-cpython: bindings for MissingAncestors
Georges Racinet <georges.racinet@octobus.net>
parents: 41187
diff changeset
13 //!
42609
326fdce22fb2 rust: switch hg-core and hg-cpython to rust 2018 edition
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42437
diff changeset
14 use crate::exceptions::{PatternError, PatternFileError};
41053
d9f439fcdb4c rust-cpython: binding for AncestorsIterator
Georges Racinet <gracinet@anybox.fr>
parents: 40965
diff changeset
15 use cpython::{
43697
dc4e74d0ef96 py3: send bytes from Rust-created warning patterns
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42957
diff changeset
16 PyBytes, PyDict, PyModule, PyObject, PyResult, PyTuple, Python, ToPyObject,
41053
d9f439fcdb4c rust-cpython: binding for AncestorsIterator
Georges Racinet <gracinet@anybox.fr>
parents: 40965
diff changeset
17 };
42957
7a01778bc7b7 rust-hgpath: replace all paths and filenames with HgPath/HgPathBuf
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42841
diff changeset
18 use hg::{
7a01778bc7b7 rust-hgpath: replace all paths and filenames with HgPath/HgPathBuf
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42841
diff changeset
19 build_single_regex, read_pattern_file, utils::files::get_path_from_bytes,
7a01778bc7b7 rust-hgpath: replace all paths and filenames with HgPath/HgPathBuf
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42841
diff changeset
20 LineNumber, PatternTuple,
7a01778bc7b7 rust-hgpath: replace all paths and filenames with HgPath/HgPathBuf
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42841
diff changeset
21 };
7a01778bc7b7 rust-hgpath: replace all paths and filenames with HgPath/HgPathBuf
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42841
diff changeset
22 use std::path::PathBuf;
41053
d9f439fcdb4c rust-cpython: binding for AncestorsIterator
Georges Racinet <gracinet@anybox.fr>
parents: 40965
diff changeset
23
42328
94f3a73b6672 rust-filepatterns: add `rust-cpython` bindings for `filepatterns`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 41693
diff changeset
24 /// Rust does not like functions with different return signatures.
94f3a73b6672 rust-filepatterns: add `rust-cpython` bindings for `filepatterns`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 41693
diff changeset
25 /// The 3-tuple version is always returned by the hg-core function,
94f3a73b6672 rust-filepatterns: add `rust-cpython` bindings for `filepatterns`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 41693
diff changeset
26 /// the (potential) conversion is handled at this level since it is not likely
94f3a73b6672 rust-filepatterns: add `rust-cpython` bindings for `filepatterns`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 41693
diff changeset
27 /// to have any measurable impact on performance.
94f3a73b6672 rust-filepatterns: add `rust-cpython` bindings for `filepatterns`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 41693
diff changeset
28 ///
94f3a73b6672 rust-filepatterns: add `rust-cpython` bindings for `filepatterns`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 41693
diff changeset
29 /// The Python implementation passes a function reference for `warn` instead
94f3a73b6672 rust-filepatterns: add `rust-cpython` bindings for `filepatterns`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 41693
diff changeset
30 /// of a boolean that is used to emit warnings while parsing. The Rust
94f3a73b6672 rust-filepatterns: add `rust-cpython` bindings for `filepatterns`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 41693
diff changeset
31 /// implementation chooses to accumulate the warnings and propagate them to
94f3a73b6672 rust-filepatterns: add `rust-cpython` bindings for `filepatterns`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 41693
diff changeset
32 /// Python upon completion. See the `readpatternfile` function in `match.py`
94f3a73b6672 rust-filepatterns: add `rust-cpython` bindings for `filepatterns`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 41693
diff changeset
33 /// for more details.
94f3a73b6672 rust-filepatterns: add `rust-cpython` bindings for `filepatterns`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 41693
diff changeset
34 fn read_pattern_file_wrapper(
94f3a73b6672 rust-filepatterns: add `rust-cpython` bindings for `filepatterns`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 41693
diff changeset
35 py: Python,
42437
9609430d3625 rust-filepatterns: use bytes instead of String
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42328
diff changeset
36 file_path: PyObject,
42328
94f3a73b6672 rust-filepatterns: add `rust-cpython` bindings for `filepatterns`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 41693
diff changeset
37 warn: bool,
94f3a73b6672 rust-filepatterns: add `rust-cpython` bindings for `filepatterns`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 41693
diff changeset
38 source_info: bool,
94f3a73b6672 rust-filepatterns: add `rust-cpython` bindings for `filepatterns`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 41693
diff changeset
39 ) -> PyResult<PyTuple> {
42957
7a01778bc7b7 rust-hgpath: replace all paths and filenames with HgPath/HgPathBuf
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42841
diff changeset
40 let bytes = file_path.extract::<PyBytes>(py)?;
7a01778bc7b7 rust-hgpath: replace all paths and filenames with HgPath/HgPathBuf
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42841
diff changeset
41 let path = get_path_from_bytes(bytes.data(py));
7a01778bc7b7 rust-hgpath: replace all paths and filenames with HgPath/HgPathBuf
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42841
diff changeset
42 match read_pattern_file(path, warn) {
42328
94f3a73b6672 rust-filepatterns: add `rust-cpython` bindings for `filepatterns`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 41693
diff changeset
43 Ok((patterns, warnings)) => {
94f3a73b6672 rust-filepatterns: add `rust-cpython` bindings for `filepatterns`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 41693
diff changeset
44 if source_info {
42437
9609430d3625 rust-filepatterns: use bytes instead of String
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42328
diff changeset
45 let itemgetter = |x: &PatternTuple| {
9609430d3625 rust-filepatterns: use bytes instead of String
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42328
diff changeset
46 (PyBytes::new(py, &x.0), x.1, PyBytes::new(py, &x.2))
9609430d3625 rust-filepatterns: use bytes instead of String
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42328
diff changeset
47 };
9609430d3625 rust-filepatterns: use bytes instead of String
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42328
diff changeset
48 let results: Vec<(PyBytes, LineNumber, PyBytes)> =
9609430d3625 rust-filepatterns: use bytes instead of String
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42328
diff changeset
49 patterns.iter().map(itemgetter).collect();
42634
0247601869ba rust-filepatterns: fix type of warnings tuple to (bytes, bytes)
Yuya Nishihara <yuya@tcha.org>
parents: 42609
diff changeset
50 return Ok((results, warnings_to_py_bytes(py, &warnings))
0247601869ba rust-filepatterns: fix type of warnings tuple to (bytes, bytes)
Yuya Nishihara <yuya@tcha.org>
parents: 42609
diff changeset
51 .to_py_object(py));
42328
94f3a73b6672 rust-filepatterns: add `rust-cpython` bindings for `filepatterns`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 41693
diff changeset
52 }
42437
9609430d3625 rust-filepatterns: use bytes instead of String
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42328
diff changeset
53 let itemgetter = |x: &PatternTuple| PyBytes::new(py, &x.0);
9609430d3625 rust-filepatterns: use bytes instead of String
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42328
diff changeset
54 let results: Vec<PyBytes> =
42328
94f3a73b6672 rust-filepatterns: add `rust-cpython` bindings for `filepatterns`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 41693
diff changeset
55 patterns.iter().map(itemgetter).collect();
42634
0247601869ba rust-filepatterns: fix type of warnings tuple to (bytes, bytes)
Yuya Nishihara <yuya@tcha.org>
parents: 42609
diff changeset
56 Ok(
0247601869ba rust-filepatterns: fix type of warnings tuple to (bytes, bytes)
Yuya Nishihara <yuya@tcha.org>
parents: 42609
diff changeset
57 (results, warnings_to_py_bytes(py, &warnings))
0247601869ba rust-filepatterns: fix type of warnings tuple to (bytes, bytes)
Yuya Nishihara <yuya@tcha.org>
parents: 42609
diff changeset
58 .to_py_object(py),
0247601869ba rust-filepatterns: fix type of warnings tuple to (bytes, bytes)
Yuya Nishihara <yuya@tcha.org>
parents: 42609
diff changeset
59 )
41053
d9f439fcdb4c rust-cpython: binding for AncestorsIterator
Georges Racinet <gracinet@anybox.fr>
parents: 40965
diff changeset
60 }
42328
94f3a73b6672 rust-filepatterns: add `rust-cpython` bindings for `filepatterns`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 41693
diff changeset
61 Err(e) => Err(PatternFileError::pynew(py, e)),
41053
d9f439fcdb4c rust-cpython: binding for AncestorsIterator
Georges Racinet <gracinet@anybox.fr>
parents: 40965
diff changeset
62 }
d9f439fcdb4c rust-cpython: binding for AncestorsIterator
Georges Racinet <gracinet@anybox.fr>
parents: 40965
diff changeset
63 }
40965
5532823e8c18 rust-cpython: start cpython crate bindings
Georges Racinet <gracinet@anybox.fr>
parents:
diff changeset
64
42634
0247601869ba rust-filepatterns: fix type of warnings tuple to (bytes, bytes)
Yuya Nishihara <yuya@tcha.org>
parents: 42609
diff changeset
65 fn warnings_to_py_bytes(
0247601869ba rust-filepatterns: fix type of warnings tuple to (bytes, bytes)
Yuya Nishihara <yuya@tcha.org>
parents: 42609
diff changeset
66 py: Python,
42957
7a01778bc7b7 rust-hgpath: replace all paths and filenames with HgPath/HgPathBuf
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42841
diff changeset
67 warnings: &[(PathBuf, Vec<u8>)],
43697
dc4e74d0ef96 py3: send bytes from Rust-created warning patterns
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42957
diff changeset
68 ) -> Vec<(PyBytes, PyBytes)> {
42634
0247601869ba rust-filepatterns: fix type of warnings tuple to (bytes, bytes)
Yuya Nishihara <yuya@tcha.org>
parents: 42609
diff changeset
69 warnings
0247601869ba rust-filepatterns: fix type of warnings tuple to (bytes, bytes)
Yuya Nishihara <yuya@tcha.org>
parents: 42609
diff changeset
70 .iter()
42957
7a01778bc7b7 rust-hgpath: replace all paths and filenames with HgPath/HgPathBuf
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42841
diff changeset
71 .map(|(path, syn)| {
7a01778bc7b7 rust-hgpath: replace all paths and filenames with HgPath/HgPathBuf
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42841
diff changeset
72 (
43697
dc4e74d0ef96 py3: send bytes from Rust-created warning patterns
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42957
diff changeset
73 PyBytes::new(py, &path.to_string_lossy().as_bytes()),
42957
7a01778bc7b7 rust-hgpath: replace all paths and filenames with HgPath/HgPathBuf
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42841
diff changeset
74 PyBytes::new(py, syn),
7a01778bc7b7 rust-hgpath: replace all paths and filenames with HgPath/HgPathBuf
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42841
diff changeset
75 )
7a01778bc7b7 rust-hgpath: replace all paths and filenames with HgPath/HgPathBuf
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42841
diff changeset
76 })
42634
0247601869ba rust-filepatterns: fix type of warnings tuple to (bytes, bytes)
Yuya Nishihara <yuya@tcha.org>
parents: 42609
diff changeset
77 .collect()
0247601869ba rust-filepatterns: fix type of warnings tuple to (bytes, bytes)
Yuya Nishihara <yuya@tcha.org>
parents: 42609
diff changeset
78 }
0247601869ba rust-filepatterns: fix type of warnings tuple to (bytes, bytes)
Yuya Nishihara <yuya@tcha.org>
parents: 42609
diff changeset
79
42328
94f3a73b6672 rust-filepatterns: add `rust-cpython` bindings for `filepatterns`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 41693
diff changeset
80 fn build_single_regex_wrapper(
94f3a73b6672 rust-filepatterns: add `rust-cpython` bindings for `filepatterns`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 41693
diff changeset
81 py: Python,
42437
9609430d3625 rust-filepatterns: use bytes instead of String
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42328
diff changeset
82 kind: PyObject,
9609430d3625 rust-filepatterns: use bytes instead of String
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42328
diff changeset
83 pat: PyObject,
9609430d3625 rust-filepatterns: use bytes instead of String
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42328
diff changeset
84 globsuffix: PyObject,
9609430d3625 rust-filepatterns: use bytes instead of String
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42328
diff changeset
85 ) -> PyResult<PyBytes> {
42328
94f3a73b6672 rust-filepatterns: add `rust-cpython` bindings for `filepatterns`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 41693
diff changeset
86 match build_single_regex(
42437
9609430d3625 rust-filepatterns: use bytes instead of String
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42328
diff changeset
87 kind.extract::<PyBytes>(py)?.data(py),
9609430d3625 rust-filepatterns: use bytes instead of String
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42328
diff changeset
88 pat.extract::<PyBytes>(py)?.data(py),
9609430d3625 rust-filepatterns: use bytes instead of String
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42328
diff changeset
89 globsuffix.extract::<PyBytes>(py)?.data(py),
42328
94f3a73b6672 rust-filepatterns: add `rust-cpython` bindings for `filepatterns`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 41693
diff changeset
90 ) {
42437
9609430d3625 rust-filepatterns: use bytes instead of String
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42328
diff changeset
91 Ok(regex) => Ok(PyBytes::new(py, &regex)),
42328
94f3a73b6672 rust-filepatterns: add `rust-cpython` bindings for `filepatterns`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 41693
diff changeset
92 Err(e) => Err(PatternError::pynew(py, e)),
41114
b31a41f24864 rust-cpython: binding for LazyAncestors
Georges Racinet <gracinet@anybox.fr>
parents: 41053
diff changeset
93 }
42328
94f3a73b6672 rust-filepatterns: add `rust-cpython` bindings for `filepatterns`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 41693
diff changeset
94 }
41188
006c9ce486fa rust-cpython: bindings for MissingAncestors
Georges Racinet <georges.racinet@octobus.net>
parents: 41187
diff changeset
95
42328
94f3a73b6672 rust-filepatterns: add `rust-cpython` bindings for `filepatterns`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 41693
diff changeset
96 pub fn init_module(py: Python, package: &str) -> PyResult<PyModule> {
94f3a73b6672 rust-filepatterns: add `rust-cpython` bindings for `filepatterns`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 41693
diff changeset
97 let dotted_name = &format!("{}.filepatterns", package);
94f3a73b6672 rust-filepatterns: add `rust-cpython` bindings for `filepatterns`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 41693
diff changeset
98 let m = PyModule::new(py, dotted_name)?;
41188
006c9ce486fa rust-cpython: bindings for MissingAncestors
Georges Racinet <georges.racinet@octobus.net>
parents: 41187
diff changeset
99
40965
5532823e8c18 rust-cpython: start cpython crate bindings
Georges Racinet <gracinet@anybox.fr>
parents:
diff changeset
100 m.add(py, "__package__", package)?;
5532823e8c18 rust-cpython: start cpython crate bindings
Georges Racinet <gracinet@anybox.fr>
parents:
diff changeset
101 m.add(
5532823e8c18 rust-cpython: start cpython crate bindings
Georges Racinet <gracinet@anybox.fr>
parents:
diff changeset
102 py,
5532823e8c18 rust-cpython: start cpython crate bindings
Georges Racinet <gracinet@anybox.fr>
parents:
diff changeset
103 "__doc__",
42328
94f3a73b6672 rust-filepatterns: add `rust-cpython` bindings for `filepatterns`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 41693
diff changeset
104 "Patterns files parsing - Rust implementation",
40965
5532823e8c18 rust-cpython: start cpython crate bindings
Georges Racinet <gracinet@anybox.fr>
parents:
diff changeset
105 )?;
42328
94f3a73b6672 rust-filepatterns: add `rust-cpython` bindings for `filepatterns`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 41693
diff changeset
106 m.add(
94f3a73b6672 rust-filepatterns: add `rust-cpython` bindings for `filepatterns`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 41693
diff changeset
107 py,
94f3a73b6672 rust-filepatterns: add `rust-cpython` bindings for `filepatterns`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 41693
diff changeset
108 "build_single_regex",
94f3a73b6672 rust-filepatterns: add `rust-cpython` bindings for `filepatterns`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 41693
diff changeset
109 py_fn!(
94f3a73b6672 rust-filepatterns: add `rust-cpython` bindings for `filepatterns`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 41693
diff changeset
110 py,
94f3a73b6672 rust-filepatterns: add `rust-cpython` bindings for `filepatterns`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 41693
diff changeset
111 build_single_regex_wrapper(
42437
9609430d3625 rust-filepatterns: use bytes instead of String
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42328
diff changeset
112 kind: PyObject,
9609430d3625 rust-filepatterns: use bytes instead of String
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42328
diff changeset
113 pat: PyObject,
9609430d3625 rust-filepatterns: use bytes instead of String
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42328
diff changeset
114 globsuffix: PyObject
42328
94f3a73b6672 rust-filepatterns: add `rust-cpython` bindings for `filepatterns`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 41693
diff changeset
115 )
94f3a73b6672 rust-filepatterns: add `rust-cpython` bindings for `filepatterns`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 41693
diff changeset
116 ),
94f3a73b6672 rust-filepatterns: add `rust-cpython` bindings for `filepatterns`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 41693
diff changeset
117 )?;
94f3a73b6672 rust-filepatterns: add `rust-cpython` bindings for `filepatterns`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 41693
diff changeset
118 m.add(
94f3a73b6672 rust-filepatterns: add `rust-cpython` bindings for `filepatterns`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 41693
diff changeset
119 py,
94f3a73b6672 rust-filepatterns: add `rust-cpython` bindings for `filepatterns`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 41693
diff changeset
120 "read_pattern_file",
94f3a73b6672 rust-filepatterns: add `rust-cpython` bindings for `filepatterns`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 41693
diff changeset
121 py_fn!(
94f3a73b6672 rust-filepatterns: add `rust-cpython` bindings for `filepatterns`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 41693
diff changeset
122 py,
94f3a73b6672 rust-filepatterns: add `rust-cpython` bindings for `filepatterns`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 41693
diff changeset
123 read_pattern_file_wrapper(
42437
9609430d3625 rust-filepatterns: use bytes instead of String
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42328
diff changeset
124 file_path: PyObject,
42328
94f3a73b6672 rust-filepatterns: add `rust-cpython` bindings for `filepatterns`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 41693
diff changeset
125 warn: bool,
94f3a73b6672 rust-filepatterns: add `rust-cpython` bindings for `filepatterns`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 41693
diff changeset
126 source_info: bool
94f3a73b6672 rust-filepatterns: add `rust-cpython` bindings for `filepatterns`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 41693
diff changeset
127 )
94f3a73b6672 rust-filepatterns: add `rust-cpython` bindings for `filepatterns`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 41693
diff changeset
128 ),
94f3a73b6672 rust-filepatterns: add `rust-cpython` bindings for `filepatterns`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 41693
diff changeset
129 )?;
42437
9609430d3625 rust-filepatterns: use bytes instead of String
Rapha?l Gom?s <rgomes@octobus.net>
parents: 42328
diff changeset
130 m.add(py, "PatternError", py.get_type::<PatternError>())?;
40965
5532823e8c18 rust-cpython: start cpython crate bindings
Georges Racinet <gracinet@anybox.fr>
parents:
diff changeset
131 let sys = PyModule::import(py, "sys")?;
5532823e8c18 rust-cpython: start cpython crate bindings
Georges Racinet <gracinet@anybox.fr>
parents:
diff changeset
132 let sys_modules: PyDict = sys.get(py, "modules")?.extract(py)?;
5532823e8c18 rust-cpython: start cpython crate bindings
Georges Racinet <gracinet@anybox.fr>
parents:
diff changeset
133 sys_modules.set_item(py, dotted_name, &m)?;
42328
94f3a73b6672 rust-filepatterns: add `rust-cpython` bindings for `filepatterns`
Rapha?l Gom?s <rgomes@octobus.net>
parents: 41693
diff changeset
134
40965
5532823e8c18 rust-cpython: start cpython crate bindings
Georges Racinet <gracinet@anybox.fr>
parents:
diff changeset
135 Ok(m)
5532823e8c18 rust-cpython: start cpython crate bindings
Georges Racinet <gracinet@anybox.fr>
parents:
diff changeset
136 }