Comments (12)
Yeah I think we all want a higher level experience. The only questions are what features, what API, and how to structure the code.
After more thoughts, I'm wondering if the double-package scheme is optimal, and if we shouldn't rather have everything in here with different Python namespaces, so that the switch to a code generator would be easier when they'll release an OpenAPI specification file. That would also make more people work on a single codebase, which is a good way to increase the overall bus factor.
Maybe we could put all the current code in a notion_client.base
module (or "sdk", or "core"), which would always stay the equivalent of the JS SDK, and write some nice wrappers around it in the first-level package, just like I've made for sftpgo-client.
What do you guys think?
from notion-sdk-py.
I think at the very least we should move them to separate modules. In so far as my WIP PR, I'll continue to work on it as if it was to be integrated with this repo. I'll move it to a module called "lib". This should allow development to continue on it whilst we make a decision for separability going forward.
I'm probably more in favor of a single-repo, dual-module structure. I think in terms of the lifecycle and maintenance of the code itself one is better than two (e.g. less configs, setups, .Github/
). I suspect most of the end users would prefer to use library calls instead of api calls.
The counter to this is correctly, probably just bloat. One could imagine the library code being rather large, so in use cases where people want to make a simple or single Notion call, the overhead of a large package with both client and lib is excessive.
But as I said, I'll continue the lib work in a separate module as that allows us time to consider the options and makes both solutions easy to implement.
from notion-sdk-py.
Yeah I did write a comment in favor of a single repository, and it looks like we all agree, so let's go for it. :)
from notion-sdk-py.
Sounds good. I'll have a PR up before the end of the weekend 23/5
from notion-sdk-py.
btw I agree with @ramnes that we should develop further, not stay in Js SDK. The api level we support should follow the official api announcement, but we will be able to support additional functions such as watching record in notion-py. The priority is to follow our library as much as possible, similar to js :)
from notion-sdk-py.
Did you guys finally decide to make a new lib on top of notion-sdk-py or modify notion-sdk-py ?
from notion-sdk-py.
Yeah I really want this too, but I'm torn between keeping the library API as close as possible to the javascript SDK, or making it higher level, i.e. in the lines of notion-py. I was thinking that maybe we could keep this library quite bare and write another one based on it, with much more batteries included, just like botocore and boto3 for example. What do you think?
from notion-sdk-py.
I can't see that hurting, especially to keep more minimal python integrations, for example, less bloated. I'll start a new repo tomorrow (GMT+10) and use your library as the underlying connection.
from notion-sdk-py.
as the name is "sdk", it should be a complete toolkit. The current project is the "core" or "raw", we need high-level features on top of this. I don't like the policy of being close to the js lib.
Telethon has a core, that does raw RPC methods, and a client library on top of it, that provides a friendly pythonic interface.
I don't have any prior experience, writing such API wrappers, but I am in favor of a single repo. I am very curious to know what @ramnes thinks.
from notion-sdk-py.
Guys, how can we use this new work ? Have to wait the release, I presume ? Thanks !
from notion-sdk-py.
As another option, I've started a "higher level" module that builds on the SDK. That would allow the core to stay as close to the official SDK as possible and provide another level of abstraction for those who want it.
If you are interested, check out notional.
from notion-sdk-py.
Let's put this on hold and use notional as a pilot. :)
from notion-sdk-py.
Related Issues (20)
- can't find properties of "Remind"
- Sample query doesn't work, return empty result HOT 4
- [error] AttributeError: 'str' object has no attribute 'logger' HOT 2
- How to read the `block` text?
- Type hints HOT 2
- Logging configuration does not work HOT 2
- notion_client does not work in a class under multiprocessing HOT 2
- notion.databases.create: Is it possible to rearrange database fields according to some defined order? HOT 2
- Using asyncio for notion.pages.create requests HOT 1
- httpx 0.25.x is not compatible with notion client: "TypeError: ConnectionPool.__init__() got an unexpected keyword argument 'socket_options'" HOT 4
- Image upload error when create a new notion page HOT 1
- Alternative for `DatabasesEndpoint.list()` HOT 1
- Create database entry with `select` property HOT 1
- Deleting an icon or a cover is not possible.
- Switch to Ruff HOT 1
- iterate_paginated_api and api_endpoints#query seems to be broken in 2.2.0 HOT 3
- notion.blocks.append not accessible HOT 1
- Database query malformed schema HOT 1
- Wrong response when querying database rollup field with ascending/descending sort HOT 2
- Add Type Hints to Response and Arguments of a function HOT 1
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 notion-sdk-py.