Skip to content

Conversation

@stevengj
Copy link
Member

Now that o.foo mirrors Python, we also want o[foo] to mirror Python. Unfortunately, PyCall currently makes o[integer] in Julia act like o[integer-1] in Python, to emulate 1-based access. This PR deprecates 1-based indexing of PyObject so that in PyCall 2.0 we can switch to 0-based indexing.

@stevengj stevengj mentioned this pull request Jan 23, 2019
5 tasks
@stevengj stevengj merged commit 1f56ad7 into master Jan 24, 2019
@stevengj stevengj deleted the deprecate_getindex branch January 24, 2019 01:55
@carstenbauer
Copy link
Contributor

Naively, to have to mentally switch between 0 and 1-based indexing depending on whether I'm accessing a Julia or Python object seems like a big inconvenience. Maybe I misunderstand though. Could you elaborate why you want to switch to 0-based indexing? Isn't consistent 1-based indexing just as good - and more user friendly?

@stevengj
Copy link
Member Author

Because o[foo] will soon be equivalent to o[foo] in Python for all foo, not just integers. Imagine a Python dictionary, for example. Once we do that, it will be weird to modify foo only if foo is an integer.

Auto-conversion will still translate a Python list to a 1-based Julia array (or PyVector). But if you have a raw PyObject then I think it should mimic Python.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants