Adam Reichold
ca7d90dcf3
Replace IterNextOutput by autoref-based specialization to allow returning arbitrary values
2023-12-20 09:56:16 +01:00
Tpt
0752942c3f
Duration: drops truncation warning
2023-12-20 08:57:26 +01:00
Tpt
8b614745cf
Adds std::duration::Duration from/to Python conversions
2023-12-20 08:57:26 +01:00
Adam Reichold
ee54132ff6
Merge pull request #3671 from davidhewitt/dh/downcast-error-split
...
Add `Py2` variants of `PyDowncastError`
2023-12-19 21:31:38 +00:00
David Hewitt
1451418ee4
Add `Py2` variants of `PyDowncastError`
2023-12-19 20:59:57 +00:00
David Hewitt
54ba6e82ca
Merge pull request #3651 from davidhewitt/bytes2
...
implement `PyBytesMethods` and `PyByteArrayMethods`
2023-12-19 19:56:16 +00:00
David Hewitt
35f7f1a78c
use Py2Borrowed to make PyBytesMethods slightly nicer
2023-12-19 19:02:23 +00:00
Adam Reichold
8bb64377b8
Merge pull request #3638 from PyO3/call-op-bool
...
Try harder by looking for a __bool__ magic method when extracing bool values from Python objects.
2023-12-19 18:52:55 +00:00
Adam Reichold
4177dfcc81
Apply __bool__ conversion only to numpy.bool_ to avoid false positives.
2023-12-19 18:55:28 +01:00
Adam Reichold
57002d2389
Align error message when no method __bool__ is defined with CPython's general style.
2023-12-19 18:55:28 +01:00
Adam Reichold
3e10d64fa2
Avoid attribute lookup overhead for __bool__ if the unlimited API is available.
2023-12-19 18:55:28 +01:00
Adam Reichold
8133aaa5d8
Try harder by looking for a __bool__ magic method when extracing bool values from Python objects.
...
I decided to not implement the full protocol for truth value testing [1] as it
seems confusing in the context of function arguments if basically any instance
of custom class or non-empty collection turns into `true`.
[1] https://docs.python.org/3/library/stdtypes.html#truth
2023-12-19 18:55:28 +01:00
David Hewitt
e727640ef3
Merge pull request #3664 from Tpt/chrono-abi3
...
Chrono: compatibility with abi3
2023-12-19 17:53:30 +00:00
David Hewitt
c5dce0172b
implement `PyBytesMethods` and `PyByteArrayMethods`
2023-12-19 17:26:52 +00:00
Adam Reichold
68f417fb1c
Defend against mutable type objects when extracting their full name.
2023-12-19 16:51:24 +01:00
Adam Reichold
416d3c488f
Rename name to qualname and full_name to name to better match Python
2023-12-19 16:51:24 +01:00
Adam Reichold
2fdd52003e
Add PyType::full_name which is tp_name and has an abi3 fallback.
2023-12-19 15:47:21 +01:00
Tpt
d7eac6527b
Chrono: compatibility with abi3
2023-12-19 14:53:14 +01:00
David Hewitt
1dca87972a
Merge pull request #3662 from Tpt/chrono-test
...
Chrono: makes test independent of datetime C-API
2023-12-19 08:26:21 +00:00
Tpt
0d2387e858
Chrono: makes FromPyObject impl on DateTime generic
...
ToPyObject was already generic
2023-12-18 20:12:30 +01:00
Tpt
7705181049
Chrono: makes test independent of datetime C-API
2023-12-18 17:12:39 +01:00
Adam Reichold
ced97f80d1
Transition is_true to is_truthy to clarify that the test is not based on identity with or equality to the True singleton.
2023-12-16 14:04:37 +01:00
David Hewitt
867a273afc
Merge pull request #3648 from Tpt/timezone-constructor
...
Adds internal timezone_from_offset function
2023-12-15 16:12:32 +00:00
Tpt
dcaed199c7
Adds internal timezone_from_offset function
...
It allows to build conversions from chrono without direct access to the C API
2023-12-15 17:00:25 +01:00
David Hewitt
d7adc74ba5
implement `PyBoolMethods`
2023-12-15 14:39:04 +00:00
David Hewitt
97cf9b834c
Merge pull request #3653 from davidhewitt/native-type-source
...
Add `AsRefSource` to `PyNativeType`.
2023-12-14 22:33:49 +00:00
David Hewitt
ef8532b175
Add `AsRefSource` to `PyNativeType`.
2023-12-14 18:35:06 +00:00
Adam Reichold
d1b4b9e7d4
Merge pull request #3650 from davidhewitt/float2
...
implement `PyFloatMethods`
2023-12-14 18:07:32 +00:00
David Hewitt
8a7c5002bd
rename `floatob.rs` to `float.rs`
2023-12-14 17:14:17 +00:00
David Hewitt
8bdae345f3
implement `PyFloatMethods`
2023-12-14 17:12:06 +00:00
David Hewitt
015f028589
hold onto module name properly in `PyCFunction::internal_new`
2023-12-14 16:23:53 +00:00
David Hewitt
82ac801be4
introduce traits to make ffi ptr handling cleaner
2023-12-14 13:00:45 +00:00
David Hewitt
ac4ee2841b
implement `PySequenceMethods`
2023-12-14 13:00:45 +00:00
messense
c21a84d999
Add support for extracting Rust set types from `frozenset`
2023-12-07 20:25:31 +08:00
David Hewitt
07726aefc4
Merge pull request #3609 from wyfo/async_receiver
...
feat: allow async methods to accept `&self`/`&mut self`
2023-12-07 07:38:25 +00:00
Joseph Perez
f34c70c2da
feat: allow async methods to accept `&self`/`&mut self`
2023-12-07 07:42:10 +01:00
Adam Reichold
4baf0235c3
Merge pull request #3616 from neachdainn/3615-gilprotected-pyvisit
...
Enable `GILProtected` access via `PyVisit`
2023-12-05 20:43:38 +00:00
Nathan Kent
3249feb85c
Enable `GILProtected` access via `PyVisit`
...
Closes #3615
This simply adds a new method which uses the existence of a `PyVisit`
object as proof that the GIL is held instead of a `Python` object. This
allows `GILProtected` to be used in instances where contained Python
objects need to participate in garbage collection. Usage in this
situation should be valid since no Python calls are made and this does
not provide any additional mechanism for accessing a `Python` object.
2023-12-05 11:10:00 -08:00
David Hewitt
ed87637ebb
replace `PyTryFrom` by splitting `PyTypeInfo`
2023-12-05 08:01:30 +03:00
David Hewitt
16ae0e2efe
Merge pull request #3608 from wyfo/remove_futures
...
refactor: drop futures_util dependency
2023-12-04 19:17:43 +00:00
Joseph Perez
2ca9f59d6f
refactor: drop futures_util dependency
2023-12-04 18:56:34 +01:00
David Hewitt
e8f852bce7
Merge pull request #3599 from wyfo/coroutine_cancel
...
feat: add `coroutine::CancelHandle`
2023-12-04 12:44:36 +00:00
Joseph Perez
8a674c2bd3
feat: add `coroutine::CancelHandle`
2023-12-04 07:46:51 +01:00
Adam Reichold
e6457c5e99
Use portable-atomic for targets which lack 64-bit atomics used to check interpreter ID.
...
I chose to make the dependency mandatory instead of optional as portable-atomic
itself just forwards to the native atomics when they are available so making
that choice part of our build system is not really necessary. Personally, I was
unable to perceive any noticeable compile-time hit from adding it.
2023-12-02 07:57:00 +01:00
Alex Gaynor
dd6e0339d3
Refactor create_type_object so that most of the code is monomorphic
...
In pyca/cryptography this function is the #1 source of lines of generated LLVM IR, because it is duplicated 42x (and growing!). By rewriting it so most of the logic is monomorphic, we reduce the generated LLVM IR for this function by 4x.
2023-11-28 20:09:34 -05:00
David Hewitt
5c6d49084f
remove all functionality deprecated in 0.19
2023-11-27 22:02:19 +00:00
David Hewitt
d8002c4b2b
Merge pull request #3588 from wyfo/coroutine_name
...
feat: add coroutine `__name__`/`__qualname__`
2023-11-26 09:23:29 +00:00
Joseph Perez
781b9e3983
feat: add coroutine `__name__`/`__qualname__` and not-awaited warning
2023-11-25 21:51:20 +01:00
Adam Reichold
1203921d5c
Merge pull request #3456 from aldanor/feature/either
...
Add conversion support for `either::Either`
2023-11-25 09:37:49 +00:00
Adam Reichold
81bc838acd
Merge pull request #3577 from davidhewitt/none-typeinfo
...
Implement `PyTypeInfo` for `PyEllipsis`, `PyNone`, and `PyNotImplemented`
2023-11-25 09:36:43 +00:00
David Hewitt
9f66846238
Merge pull request #3595 from davidhewitt/ok-wrap
...
refactor `OkWrap` to not call `.into_py(py)`
2023-11-25 05:43:54 +00:00
David Hewitt
cd8526ecc6
Implement `PyTypeInfo` for `PyEllipsis`, `PyNone`, and `PyNotImplemented`
2023-11-24 22:31:39 +00:00
David Hewitt
bead83f4b0
docs: fixup docs for smallvec feature
2023-11-24 22:11:40 +00:00
Ivan Smirnov
a75464ee26
add conversion support for `either::Either`
2023-11-24 22:09:34 +00:00
David Hewitt
c814078866
refactor `OkWrap` to not call `.into_py(py)`
2023-11-24 10:41:08 +00:00
Joseph Perez
627841f1e2
feat: support `async fn` in macros with coroutine implementation
2023-11-22 20:25:36 +01:00
David Hewitt
7b07d6d21b
Merge pull request #3578 from davidhewitt/typed-helpers
...
Change return types of `py.None()`, `py.NotImplemented()` and `py.Ellipsis()` to typed singletons
2023-11-20 07:07:12 +00:00
David Hewitt
bd0174aa5d
Change return types of `py.None()`, `py.NotImplemented()` and `py.Ellipsis()` to typed singletons
2023-11-17 16:16:19 +00:00
David Hewitt
a9305ab389
ci: move lints to new 1.74 cargo.toml tables
2023-11-17 15:41:52 +00:00
Joseph Perez
1fd4090bd4
refactor: remove useless `unsafe` in `get_mut`
2023-10-29 13:50:36 +01:00
Joseph Perez
bb1cc93797
feat: add `take` and `into_inner` methods to `GILOnceCell`
2023-10-29 08:33:04 +01:00
David Hewitt
572a27d2d3
ci: fix nightly unused import warnings
2023-10-25 23:30:14 +01:00
David Hewitt
d895734499
change `PyDict::from_sequence` to take just `&PyAny`
2023-10-20 11:59:26 +01:00
David Hewitt
2ca8e573a4
remove comparison to rust-cpython
2023-10-15 22:03:24 +01:00
David Hewitt
f12f928bd5
Merge pull request #3514 from messense/memoryview
...
Add `PyMemoryView` type
2023-10-15 15:08:50 +00:00
David Hewitt
aa28cec893
Merge pull request #3507 from orhun/feat/support_smallvec_conversion
...
Add support for `SmallVec` in conversion traits (#3440 )
2023-10-15 14:43:55 +00:00
messense
f4e64aadef
Add test cases for new `TryFrom` impls
2023-10-15 21:53:31 +08:00
messense
d4ed66fff0
Add `TryFrom` impls for `PyByteArray` and `PyMemoryView`
2023-10-15 17:39:01 +08:00
messense
5b94241bd7
Add `PyMemoryView` type
2023-10-15 17:32:09 +08:00
Orhun Parmaksız
31acf0dc6f
Add an entry to features table in lib
2023-10-13 13:35:30 +03:00
David Hewitt
cac95f31c7
add Py2 as an internal API for optimization and dogfooding
2023-10-13 08:10:37 +02:00
Orhun Parmaksız
dfeae473e5
Add support for `SmallVec` in conversion traits ( #3440 )
2023-10-11 17:14:23 +03:00
David Hewitt
e1d4173827
Fix bug in default implementation of `__ne__`
2023-10-11 09:48:06 +01:00
David Hewitt
76bf521ed0
Merge pull request #3505 from davidhewitt/deprecate_dunder_new
...
deprecate undocumented `#[__new__]` form of `#[new]`
2023-10-10 21:35:10 +00:00
David Hewitt
6c90325a1c
deprecate undocumented `#[__new__]` form of `#[new]`
2023-10-10 08:47:03 +01:00
David Hewitt
c0b5004cfa
Merge pull request #3455 from davidhewitt/normalized-exceptions
...
also use `PyErr::SetObject` on Python versions before 3.12
2023-10-10 07:44:39 +00:00
mejrs
6ca573b9d0
Update clippy
2023-10-06 23:31:06 +02:00
David Hewitt
2daddb4734
unify 3.12 and pre-3.12 exception handling pathways
2023-09-30 23:27:27 +01:00
David Hewitt
f335f42197
Merge pull request #3446 from davidhewitt/relax-import-check
...
relax multiple-import check to only prevent subinterpreters
2023-09-29 16:35:31 +00:00
David Hewitt
b9e9859082
Merge pull request #3478 from mejrs/auto
...
Don't let auto trait syntax bleed through on stable Rust
2023-09-29 16:35:05 +00:00
mejrs
0c8ab98760
move it into the inline module.
2023-09-29 17:22:27 +02:00
David Hewitt
1a349c2eb7
adjust cfgs for windows 3.9
2023-09-29 14:23:18 +01:00
David Hewitt
50cb41dd0b
Merge pull request #3458 from davidhewitt/truncate-leap-seconds
...
truncate leap seconds on `chrono` to `datetime` conversions
2023-09-29 11:47:27 +00:00
David Hewitt
4b5ff05721
Merge pull request #3471 from davidhewitt/normalized-exceptions-2
...
always normalize exceptions before raising
2023-09-28 20:27:18 +00:00
mejrs
d0d4b9d3fb
Dont let auto trait syntax bleed through on stable
2023-09-28 12:26:09 +02:00
David Hewitt
0459532f69
truncate leap seconds on `chrono` to `datetime` conversions
2023-09-24 20:28:43 +01:00
David Hewitt
673c45aac3
Merge pull request #3470 from davidhewitt/tests-capture-warnings
...
add `assert_warnings` test helper
2023-09-24 13:09:01 +00:00
David Hewitt
1e8833e15e
always normalize exceptions before raising
2023-09-24 13:38:23 +01:00
David Hewitt
7d486bb72a
tests/common.rs -> src/tests/common.rs
2023-09-24 13:34:53 +01:00
David Hewitt
42f9cd4476
Merge pull request #3469 from davidhewitt/chrono-tidy-up
...
refactor chrono implementation to be more DRY
2023-09-24 09:32:43 +00:00
David Hewitt
f691a68b46
Merge pull request #3472 from davidhewitt/normalized-exceptions-3
...
unify 3.12 / non-3.12 error handling branches
2023-09-23 21:45:25 +00:00
David Hewitt
d089c92680
unify 3.12 / non-3.12 error handling branches
2023-09-23 22:18:59 +01:00
David Hewitt
97ee5967e0
increase test coverage of `chrono` feature
2023-09-23 13:51:38 +01:00
David Hewitt
20378a607b
Merge pull request #3466 from davidhewitt/docs-only-prs
...
docs: skip changelog check for docs-only PRs
2023-09-23 12:26:37 +00:00
David Hewitt
c8f82be32c
add assert_warnings test helper
2023-09-23 13:14:18 +01:00
David Hewitt
ccc22a905d
allow invalid_from_utf8 lint in tests
2023-09-23 12:54:53 +01:00
David Hewitt
2d61a73b02
refactor chrono implementation to be more DRY
2023-09-23 12:46:45 +01:00
David Hewitt
f17e703167
return existing module on Python 3.9 and up
2023-09-23 11:13:39 +01:00
David Hewitt
1338020511
relax multiple-import check to only prevent subinterpreters
2023-09-23 11:13:39 +01:00
David Hewitt
5798caf1f8
better `Some`-wrapping for default arguments
2023-09-21 21:14:44 +01:00
David Hewitt
1ec3c5a4fd
ci: adjust tests to avoid chrono panics
2023-09-21 08:34:45 +01:00
David Hewitt
bcb01049cc
Merge pull request #3404 from davidhewitt/fix-dealloc
...
call PyObject_GC_Untrack before deallocating
2023-09-11 05:18:34 +00:00
David Hewitt
932c5c7061
workaround BaseException issue on Python versions before 3.11
2023-09-10 22:16:17 +02:00
David Hewitt
e28403e772
call PyObject_GC_Untrack before deallocating
2023-09-09 22:29:58 +01:00
David Hewitt
8ddfef04bc
add detail to documentation for `PyDict::get_item`
2023-09-09 12:23:06 +01:00
David Hewitt
8a60540e25
amend code for `PyDict::get_item` change
2023-09-09 12:23:06 +01:00
David Hewitt
16728c4da2
move PyDict::get_item_with_error to PyDict::get_item
2023-09-09 12:23:06 +01:00
David Hewitt
f0f15edc4e
remove some redundant explicit doc links
2023-09-08 15:36:24 +01:00
David Hewitt
e67b283b25
Merge pull request #3358 from alex/ptr-unsafe-trait
...
fixes #3325 -- mark `AsPyPointer` as `unsafe trait`
2023-09-04 05:05:56 +00:00
David Hewitt
4c46d81afd
simplify thread checker implementation
2023-09-03 14:15:26 +01:00
David Hewitt
9e089a5538
fix chrono deprecation warnings
2023-09-02 20:55:53 +01:00
Ryan Lowe
b3cf61cea6
add types for built-in singletons
2023-08-26 08:57:34 -04:00
David Hewitt
a5d0a16b21
ci: updates for Rust 1.72
2023-08-25 12:30:34 +01:00
Adam Reichold
12183ad3ed
Merge pull request #3379 from iliya-malecki/main
...
BigInt speedup
2023-08-19 12:09:28 +00:00
David Hewitt
9604957c72
further refactor num-bigint conversion
2023-08-18 22:27:47 +01:00
Adam Reichold
94f15679ab
Merge pull request #3402 from Tpt/io-err-unwrap
...
Unwrap the underlying PyErr when converting an io::Error back to a PyErr
2023-08-18 16:56:53 +00:00
David Hewitt
15388fd53b
Merge pull request #3401 from messense/fix-issue-3400
...
Fix memory leak in `PyTypeBuilder::build`
2023-08-18 14:28:36 +00:00
Alex Gaynor
df5aa77800
fixes #3325 -- mark `AsPyPointer` as `unsafe trait`
2023-08-18 10:16:34 -04:00
Tpt
6d8e8b302f
Unwrap the underlying PyErr when converting an io::Error back to a PyErr
...
Exposes it directly instead of loosing all information outside the message
2023-08-18 15:56:25 +02:00
messense
2dc1e9a2b7
Fix memory leak in `PyTypeBuilder::build`
2023-08-18 21:13:13 +08:00
David Hewitt
c03c787a91
Merge pull request #3393 from alex/drop-other-trait
...
Remove usage of `AsPyPointer` in `IntoPy<PyObject>` trait implementation
2023-08-18 12:58:07 +00:00
David Hewitt
7f32ed96db
Merge pull request #3396 from Tpt/IntoInnerError
...
Uses io::Error code when converting io::IntoInnerError to PyErr
2023-08-18 08:27:35 +00:00
Tpt
1062f244ea
Pick a relevant ErrorKind when building an io::Error from a OSError subclass
2023-08-17 18:33:51 +02:00
Tpt
7c366cb930
Uses io::Error code when converting io::IntoInnerError to PyErr
2023-08-17 18:25:36 +02:00
Alex Gaynor
9f1b56b659
Remove usage of `AsPyPointer` in `IntoPy<PyObject>` trait implementation
2023-08-17 07:05:52 -04:00
Iliya Malecki
d1f0561036
added speedy BigInt extraction
2023-08-17 08:15:50 +01:00
Alex Gaynor
c259e77ca2
Remove usage of `AsPyPointer` in traits for convergint to PyObject
...
Refs #3358
2023-08-16 07:03:57 -04:00
Alex Gaynor
1a904a7429
Migrate `PyIterator::from_object` and `PyByteArray::from` from `AsPyPointer` to `&PyAny`
2023-08-15 18:03:56 -04:00
Alex Gaynor
5061b501a9
Remove IntoPyPointer
...
it wasn't used in any public APIs following #3359
2023-08-14 16:28:20 -04:00
David Hewitt
a541925f00
Merge pull request #3359 from davidhewitt/py-pointer-methods
...
add as_ptr and into_ptr inherent methods
2023-08-11 19:50:22 +00:00
David Hewitt
8031794f2a
Merge pull request #3378 from GoldsteinE/implicit-builtins
...
add `__builtins__` to globals in `py.run()` if they're missing
2023-08-11 14:11:31 +00:00
Goldstein
0be94a5442
add `__builtins__` to globals in `py.run()` if they're missing
...
Python code doesn't like to run without `__builtins__`, so adding them
if missing seems to be a good idea. Also that's what CPython >3.10 does.
See https://github.com/python/cpython/pull/24564
Resolves #3370
2023-08-11 15:48:05 +03:00
David Hewitt
64adab1a76
add as_ptr and into_ptr inherent methods
2023-08-11 10:49:42 +01:00
Tpt
1e5a49557d
Makes PathBuf FromPyObject implementation work on all os.PathLike
...
PyOS_FSPath is in abi3-py36
2023-08-08 22:15:56 +02:00
Adam Reichold
a371fbe4f8
Implement DoubleEndedIterator for PyListIterator by caching the length while still validating it before access.
2023-08-07 21:37:50 +02:00
Adam Reichold
4ce3e9649f
Implement DoubleEndedIterator for PyTupleIterator
2023-08-07 21:37:50 +02:00
David Hewitt
ef43731993
update tests of refcounting to use a non-immortal object
2023-07-30 15:37:06 +01:00
David Hewitt
4e957e8bd4
update object.h definitions for Python 3.12
2023-07-30 15:37:06 +01:00
Juniper Tyree
16fe7a83a7
Add a PySlice::full() constructor for ::
2023-07-29 07:39:47 +00:00
David Hewitt
e2c88d5a4e
optimize `float` -> `f64` conversions on non-abi3
2023-07-28 20:45:37 +01:00
David Hewitt
34881fc952
add PyAny::downcast_exact
2023-07-28 15:11:56 +01:00
David Hewitt
a15614844d
add PyErr::display
2023-07-24 22:14:55 +01:00
David Hewitt
ab078258d1
fix exception handling on Python 3.12
2023-07-19 22:33:25 +01:00
Zak Stucke
f2b7e86e2e
Prevent traceback loss on conversion to and from PyErr
2023-07-19 12:07:41 +03:00
David Hewitt
2e2dde910a
Preserve panic message after exception is normalized
2023-07-18 22:20:41 +01:00
David Hewitt
421e13a89c
Merge pull request #3323 from davidhewitt/pyerr-simplification
...
merge PyErr internal states for simplicity
2023-07-17 21:46:39 +00:00
David Hewitt
2d1b8e02a8
merge PyErr internal states for simplicity
2023-07-17 22:21:28 +01:00
David Hewitt
e5a7400f24
Merge pull request #3319 from davidhewitt/used-underscore-binding
...
clippy: deny / fix used-underscope-binding lint
2023-07-16 20:53:56 +00:00
David Hewitt
45ff25cd2a
clippy: deny / fix used-underscope-binding lint
2023-07-16 20:49:45 +01:00
David Hewitt
6f30215566
collect arrays of objects prior to filling tuple in fixed-size conversions
2023-07-16 20:17:02 +01:00
Adam Reichold
65312b43b2
Merge pull request #3312 from davidhewitt/opt-baseexception
...
optimize is_instance for PyBaseException
2023-07-14 16:37:24 +00:00
David Hewitt
f39dd52cf9
remove concept of "normalize" from PyErr docs
2023-07-14 13:20:48 +01:00
David Hewitt
92b724f64f
normalize exception in `PyErr::matches` and `PyErr::get_type`
2023-07-14 13:18:30 +01:00
David Hewitt
b65cbb958b
ci: updates for rust 1.71
2023-07-14 12:10:37 +01:00
David Hewitt
272997555e
optimize is_instance for PyBaseException
2023-07-11 21:48:46 +01:00
Adam Reichold
ff78b92e77
Start adding a performance section to the guide.
2023-07-09 14:32:59 +02:00
Adam Reichold
bd7aed4b12
Add implementation of Iterator::size_hint for PyIterator
...
When the Python iterator backing `PyIterator` has a `__length_hint__` special
method, we can use this as a lower bound for Rust's `Iterator::size_hint` to
e.g. support pre-allocation of collections.
This is implemented using `PyObject_LengthHint` which is not available in the
stable ABI and hence so is `Iterator::size_hint`. This should be fine since this
is an optimization in any case and the stable ABI is expected to have slightly
worse performance overall.
2023-07-09 10:16:20 +02:00
David Hewitt
81c0328d91
use concrete inner for `PyErr:matches`
2023-07-04 21:03:24 +01:00
David Hewitt
76f3a395ef
move `unsafe` block inside `error_on_minusone` calls
2023-07-04 21:03:24 +01:00
David Hewitt
43477a8e30
use error_on_minusone in more cases
2023-07-04 21:03:24 +01:00
David Hewitt
7613f65c89
apply conventions for ffi calls
2023-07-04 21:03:24 +01:00
David Hewitt
bf2f441567
prefer inner / _private naming
2023-07-04 21:03:24 +01:00
Adam Reichold
54ab9090be
Merge pull request #3269 from grantslatton/timezone-conversion-bugfix
...
Fix fixed offset timezone conversion bug.
2023-07-04 18:22:13 +00:00
Alex Gaynor
0b78bb851e
Allow `#[new]` to return existing instances
...
fixes #2384
2023-07-02 19:57:53 -04:00
Adam Reichold
e006b34b5e
Apparently, PySet_Add does not steal a reference, hence we should not forget to clean up ours.
2023-07-02 20:43:43 +02:00
David Hewitt
135535e668
Merge pull request #3280 from davidhewitt/option-to-tz
...
clarify ownership of opt_to_pyobj helper function
2023-06-28 21:23:33 +00:00
Adam Reichold
afc1d4cc42
Merge pull request #3281 from davidhewitt/set-discard
...
handle exceptions properly in `PySet::discard`
2023-06-28 17:09:01 +00:00
David Hewitt
b7d391d994
clarify ownership of opt_to_pyobj helper function
2023-06-28 08:54:56 +01:00
David Hewitt
c0b9502c0e
handle exceptions properly in `PySet::discard`
2023-06-28 08:54:06 +01:00
David Hewitt
4867ef8dd3
stop suppressing unrelated exceptions in `PyAny::hasattr`
2023-06-27 23:20:22 +01:00
David Hewitt
20f909c97f
refactor `PyDict::get_item[_with_error]` implementations
2023-06-25 20:13:52 +01:00
David Hewitt
db91642bae
add `PyDict::get_item_with_error` for PyPy
2023-06-25 19:26:08 +01:00
Grant Slatton
b1e7ed8a58
Fix fixed offset timezone conversion bug.
...
See https://github.com/PyO3/pyo3/issues/3267
2023-06-25 11:06:46 -07:00
Adam Reichold
4afa994449
Mark Python::with_pool as safe on stable.
2023-06-21 09:12:10 +02:00
Adam Reichold
d7e147509b
Add Python::with_pool as a safer alternative to Python::new_pool.
2023-06-21 08:05:19 +02:00
mejrs
686f5eb0ad
Simplify doctests macro
2023-06-19 18:12:01 +02:00
Adam Reichold
5eed73f1c0
Rework pyobject_native_type_info! to expect callables
...
Most native types have static type objects which just need to be turned into a
pointer using addr_of_mut!, but sometimes like for exceptions we do call a
function which lazily initializes a type object.
This makes the pyobject_native_type_info! macro expect callable and passes it
the GIL token so that we do not need to call Python::assume_gil_acquired. The
case of static type objects is handled by the
pyobject_native_static_type_object! helper macro.
2023-06-19 10:30:03 +02:00
Adam Reichold
42bbd52e15
Keep the dynamic borrow checking enabled for debug builds.
2023-06-18 15:38:37 +02:00
Adam Reichold
96ad57d783
We already carefully handle re-entrancy for OWNED_OBJECTS, so let's avoid the runtime checking overhead.
2023-06-18 15:25:46 +02:00
Adam Reichold
85d5b6ee77
Drop reference pool's dirty flag is the additional cost does not outweigh the improvement compared to locking an uncontented mutex.
2023-06-18 15:25:46 +02:00
Adam Reichold
cbead1f437
Fix two left-over usages of cfg(addr_of).
2023-06-17 19:35:50 +02:00
Luca Trevisani
ab7a65cbb5
Improve `PyModule::from_code` examples
2023-06-16 23:45:49 +02:00
Adam Reichold
ba0c7e15b3
Merge pull request #3156 from adriangb/frozenset-ops
...
Add `PyFrozenSetBuilder`
2023-06-14 06:06:32 +00:00
David Hewitt
4f3fcdbf0f
remove all functionality deprecated in PyO3 0.18
2023-06-13 22:27:43 +01:00
Adrian Garcia Badaracco
a28641af68
Add `PyFrozenSetBuilder`
2023-06-13 15:59:35 -05:00
Adam Reichold
a053489c8b
Merge pull request #2709 from davidhewitt/py3.12
...
ci: add Python 3.12-dev jobs
2023-06-12 08:59:35 +00:00
Adam Reichold
b110466c57
Merge pull request #3221 from davidhewitt/msrv-tidy-ups
...
docs: remove unneeded cfg, fixup internal banner
2023-06-12 06:33:48 +00:00
David Hewitt
199261f436
Merge pull request #3197 from mhils/ipaddr
...
Add `IpAddr` <-> `ipaddress.IPv(4/6)Address` conversion
2023-06-12 04:00:43 +00:00
David Hewitt
621898b07d
ci: add Python 3.12-dev jobs
2023-06-11 21:57:17 +01:00
David Hewitt
7fd59455b1
ci: pool can be dirty from other threads
2023-06-11 21:52:23 +01:00
David Hewitt
46942b9a14
docs: remove workarounds for `#[doc = concat!(...)]` following msrv bump
2023-06-08 21:04:49 +01:00
Maximilian Hils
980f05a88e
Add `IpAddr` <-> `ipaddress.IPv(4/6)Address` conversion
2023-06-08 13:17:45 +02:00
Adam Reichold
0d30bb7d3d
Bump Rust edition to 2021 and make current Clippy happy.
2023-06-07 21:15:38 +02:00
bors[bot]
e1f028f3e5
Merge #3209
...
3209: Remove the conditional compilation flags which are made redundant by the MSRV bump r=davidhewitt a=adamreichold
Co-authored-by: Adam Reichold <adam.reichold@t-online.de>
2023-06-05 14:09:05 +00:00
Adam Reichold
eb04f54683
Remove cfg min_const_generics made unnecessary by MSRV bump.
2023-06-05 09:42:40 +02:00
Adam Reichold
f7bd6ce224
Remove cfg option_insert made unnecessary by MSRV bump.
2023-06-05 09:37:13 +02:00
bors[bot]
dbf7b233aa
Merge #3203
...
3203: support ordering magic methods for `#[pyclass]` r=adamreichold a=davidhewitt
Closes #2089
This adds `__lt__`, `__le__`, `__eq__`, `__ne__`, `__gt__`, and `__ge__` as per the Python implementations of what we call `__richcmp__`.
There's a UI test confirming that the user cannot implement split forms and `__richcmp__` simultaneously.
There's also a benchmark comparing implementing these split methods against using `__richcmp__`. I couldn't see a meaningful performance difference, so I'm tempted to deprecate `__richcmp__`, given that's not a magic method which exists in Python. Potentially we can provide options such as the opt-in `#[pyclass(eq, ord)]` to avoid boilerplate for people who don't want to implement six different methods.
Co-authored-by: David Hewitt <1939362+davidhewitt@users.noreply.github.com>
2023-06-05 07:13:23 +00:00
David Hewitt
5bc3e6f15e
fix clippy warnings uncovered by msrv bump
2023-06-05 07:08:27 +01:00
Adam Reichold
5738edfdd4
Bump MSRV to 1.56
2023-06-04 23:02:30 +01:00
David Hewitt
8850d5d384
support ordering magic methods for `#[pyclass]`
2023-06-04 13:58:18 +01:00