Paul Ganssle
a271ba9ed9
Use unified implementation for ffi::datetime
...
In the future we can make ffi::object, ffi::pycapsule, etc as
crate-public, but importing the specific symbols is a light touch way to
do this.
2018-08-21 18:33:32 -04:00
Paul Ganssle
3357fabb35
Remove 'Component' from ComponentAccess Traits
2018-08-21 18:33:32 -04:00
Paul Ganssle
003351ba61
Get rid of unwrap_py! macro
2018-08-21 18:33:32 -04:00
Paul Ganssle
f68d0932f4
Unwrap PyDateTime_CAPI function fields
...
Because the PyDateTime_CAPI is always accessed via a lazy-initialized
static reference, it is not necessary to handle the case where the
functions on the C struct have not been initialized.
2018-08-21 18:33:32 -04:00
Paul Ganssle
bcc27bd522
Change datetime constructors to use Rust Option
...
This makes it cleaner to call PyTime::new and PyDateTime::new from Rust
without needing to retrieve a Python None.
2018-08-21 18:33:32 -04:00
Paul Ganssle
09ee50d4ca
Add tests for datetime overflow behavior
...
It *should* be safe to cast u32 to i32 in the case of the Py{Date}{Time}
constructors, because any unsigned values that would overflow would
raise an error anyway.
This adds tests to ensure that this is the case - they currently fail on
Python <3.6 because of a known issue with the Python C API.
2018-08-21 18:33:31 -04:00
Paul Ganssle
bcc42315ff
Inline parameter typecasts
...
Clippy complains about the one-letter variables, but it's preferable to
do the typecasts in-line anyway.
2018-08-21 18:33:31 -04:00
Paul Ganssle
94bd0d7b6d
Relax constraints on PyDateTimeAPI initialization
...
As noted in the comments, using call_once to initialize the
PyDateTimeAPI singleton is causing deadlocks with the GIL; these
deadlocks can be avoided by falling back on CPython's own locking
behavior.
2018-08-21 18:33:28 -04:00
konstin
b0f0a44284
Exclude example
2018-08-22 00:02:37 +02:00
konstin
771d59b913
Fix another bunch of clippy lints
2018-08-21 23:51:13 +02:00
konstin
9dd6bb0d2c
Get rid of broken workspaces
2018-08-21 23:44:26 +02:00
konstin
ced632b357
kcov seems to broken
2018-08-21 23:41:57 +02:00
Paul Ganssle
12c20a75d9
Move datetime interface to exclusively use functions
2018-08-21 14:29:36 -04:00
Paul Ganssle
ee658de1fb
Run rustfmt after datetime changes
...
Most of the datetime related changes were made before pyo3 switched to
using rustfmt, so I ran rustfmt only on the final commit to make it
easier to rewrite history as necessary (for fixups and whatnot).
2018-08-21 14:29:36 -04:00
Paul Ganssle
7fc1dae238
Add rustapi_module tests to CI
2018-08-21 14:29:36 -04:00
Paul Ganssle
996c2baec8
Add preliminary Python 2 support to datetime bindings
...
The bounds checking tests are xfail because the datetime "fast path"
constructor didn't do bounds checking until bpo-29100 was resolved in
CPython commit b67f0967386a9c90411, which was merged for Python 3.6.
This functionality should be simple to backport to earlier versions in a
future commit.
BPO issue:
https://bugs.python.org/issue29100
CPython commit:
b67f096738
2018-08-21 14:29:36 -04:00
Paul Ganssle
cd6f7295a1
Add type checking FFI bindings
2018-08-21 14:29:36 -04:00
Paul Ganssle
f701bccbdf
Add PyTime component accessors
2018-08-21 14:29:36 -04:00
Paul Ganssle
ecf3aaafb2
Add PyDateTime component accessors
2018-08-21 14:29:35 -04:00
Paul Ganssle
0b39452276
Add accessors to PyDateTime_Date
2018-08-21 14:29:35 -04:00
Paul Ganssle
08e7e0f55a
Add PyDelta component accessors
...
Adds the PyDateTime_DELTA_GET_{comp} accessors and bindings to them in
the PyDelta object.
2018-08-21 14:29:35 -04:00
Paul Ganssle
149a13cbfa
Fix how the test rustapi_module is built
2018-08-21 14:29:35 -04:00
Paul Ganssle
cca8eb43d6
Add gitignore to rustapi_module
2018-08-21 14:29:35 -04:00
Paul Ganssle
d67d2c4265
Update rustapi_module to new macro methods
2018-08-21 14:29:35 -04:00
Paul Ganssle
f47697e2b5
Refactor pyobject_* macros
...
See 8c26020015
for general change.
2018-08-21 14:29:35 -04:00
Paul Ganssle
f5e0785654
Add time_with_fold
2018-08-21 14:29:35 -04:00
Paul Ganssle
c49bbe4549
Add PyDateTime::from_timestamp
2018-08-21 14:29:34 -04:00
Paul Ganssle
7256bc85b7
Add PyDate::from_timestamp
2018-08-21 14:29:34 -04:00
Paul Ganssle
e8d6a4bcc0
Version qualify PyDateTimeAPI
2018-08-21 14:29:34 -04:00
Paul Ganssle
ee85940579
Add new requirements-dev.txt file
2018-08-21 14:29:34 -04:00
Paul Ganssle
8d781cb03f
Add datetime.timedelta
2018-08-21 14:29:34 -04:00
Paul Ganssle
f45362943d
Add datetime.time
2018-08-21 14:29:34 -04:00
Paul Ganssle
d7b90c1b3a
Add datetime.datetime and switch to PyResult<Py<T>>
2018-08-21 14:29:34 -04:00
Paul Ganssle
52a64a9240
Add rustapi_module test
2018-08-21 14:29:34 -04:00
Paul Ganssle
496b879525
Add objects/datetime.rs
2018-08-21 14:29:33 -04:00
Paul Ganssle
2b74cdbd57
Add initial bindings for datetime.h
2018-08-21 14:29:31 -04:00
konstin
82129c70b4
Added an explenation that the GIL can temporarily be released even while holding a GILGuard
2018-08-20 22:56:24 +02:00
konstin
db4a2d9017
Get rid of the pyobject_extract macro
2018-08-20 22:53:43 +02:00
konstin
9cadbd11de
v0.4.1
2018-08-20 14:34:34 +02:00
konstin
991a8b94d2
More nightly fixes
2018-08-19 20:42:17 +02:00
konstin
b12b65cfae
Cleanup
2018-08-19 20:06:47 +02:00
konstin
7ebbbe41db
Merge pull request #203 from kngwyu/upd
...
Update spin
2018-08-19 20:03:49 +02:00
kngwyu
ff2871f325
Remove unnecessary feature gates from doc tests
2018-08-14 18:29:15 +09:00
kngwyu
d2210f8a7e
Update spin
2018-08-14 18:20:14 +09:00
konstin
d0ed68414a
Many small improvements
2018-08-04 19:56:59 +02:00
konstin
55d0917419
travis debug
2018-08-04 19:14:41 +02:00
konstin
b7dc0ad695
v0.4.0
2018-07-30 23:10:50 +02:00
konstin
fe8a719ee1
Rustfmt all the things ✔️
2018-07-30 23:05:10 +02:00
konstin
83db765889
Refactoring
2018-07-30 22:56:25 +02:00
konstin
d9d1650fc4
Fix #197 - Remove tuple to dict conversions
2018-07-30 22:52:36 +02:00