Comments (4)
Can you explain more about what you mean here? I don't see how fastcore.utils.Tuple
"shadows" typing.Tuple
. They have the same class name, but they are in different modules. typing.Tuple
is still available as typing.Tuple
, so it's not shadowed, AFAICT. You can still from typing import Tuple
if you wish.
fastcore.utils.Tuple
is not intended to be a replacement for typing.Tuple
.
IIUC, what you're really saying is that fastai shouldn't name a class with the same name as a class in stdlib. I'm not sure if there's really a justification for that rule, in general.
I'm quite possibly missing something though, so please do let us know more about what specific concerns you have.
from fastcore.
@jph00, thanks for the response. I should have clarified this better:
In [1]:
from fastai2.basics import *
In [2]:
Tuple
Out [2]:
fastcore.utils.Tuple
IIUC, what you're really saying is that fastai shouldn't name a class with the same name as a class in stdlib. I'm not sure if there's really a justification for that rule, in general.
I agree that typing.Tuple
is not automatically shadowed, and that it is easy to import typing.Tuple
explicitly. But this kind of error is surprising, it could be avoided.
I'm suggesting that since fastai encourages the import *
style, it should be extra careful about default exporting names that conflict with stdlib (or other common data science libraries).
(Just as a separate data point, I've been bitten similarly recently where I had a function named one_hot
and then something changed -- either I did another import *
or pulled master, or I ran cells in a different order than before -- but fastai2's one_hot
was shadowing mine and it took some time to figure that out. I realize that this is a natural risk of import *
that you've probably considered, that fastai can't avoid naming things like one_hot
, but it makes for a slightly more frustrating developer experience.)
from fastcore.
Thanks for pointing this out. Now renamed to fastuple
.
from fastcore.
Thanks, I appreciate you taking the time to fix this (and everything else you do with fastai!).
from fastcore.
Related Issues (20)
- `patch(cls_method=True)` not supporting subclasses correctly
- [question] Best way to update user-agent used in net.py/urlretrieve?
- shouldn't `rnum_methods` and `inum_methods` be set in `fastuple`?
- Wrong behavior of test_eq comparing sequences with trailing Nones
- Cant directly use `@patch_to` to redefine a class constructor HOT 1
- Single predictions list index out of range in foundation.py HOT 1
- `call_parse` example missing default value for `upper`
- j-faria HOT 1
- NameError: name 'union2tuple' is not defined HOT 1
- Allow docments to work with async function definitions
- `L` is not JSON-serializable HOT 3
- `@call_parse`: Keyword only arguments help-msg not showing in help
- `call_parse` defaults to False for any boolean argument, regardless of the actual default specified in the function HOT 1
- Expand docscrape to support more numpy sections HOT 2
- patch / patch_to doesn't work with inheritance
- issue in patch decorator when worker with abstract classes
- remember to check out GhApi
- Using delegates on a method breaks TypeDispatch HOT 1
- explode_types() feeds retain_type() with surprising arguments.
- Why does this package require `pip`? HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from fastcore.