better-notion 2.1.3__tar.gz → 2.1.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {better_notion-2.1.3 → better_notion-2.1.4}/PKG-INFO +1 -1
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/utils/agents/schemas.py +4 -4
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/utils/agents/workspace.py +56 -53
- {better_notion-2.1.3 → better_notion-2.1.4}/pyproject.toml +1 -1
- {better_notion-2.1.3 → better_notion-2.1.4}/.gitignore +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/LICENSE +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/README.md +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/__init__.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_api/__init__.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_api/client.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_api/collections/__init__.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_api/collections/blocks.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_api/collections/comments.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_api/collections/databases.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_api/collections/pages.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_api/collections/users.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_api/entities/__init__.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_api/entities/block.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_api/entities/comment.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_api/entities/database.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_api/entities/page.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_api/entities/user.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_api/errors.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_api/oauth.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_api/properties/__init__.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_api/properties/base.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_api/properties/checkbox.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_api/properties/date.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_api/properties/email.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_api/properties/number.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_api/properties/phone.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_api/properties/relation.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_api/properties/rich_text.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_api/properties/select.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_api/properties/title.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_api/properties/url.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_api/utils/__init__.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_api/utils/pagination.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_cli/__init__.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_cli/async_typer.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_cli/commands/__init__.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_cli/commands/auth.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_cli/commands/blocks.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_cli/commands/comments.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_cli/commands/config.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_cli/commands/databases.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_cli/commands/pages.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_cli/commands/plugins.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_cli/commands/search.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_cli/commands/update.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_cli/commands/users.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_cli/commands/workspace.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_cli/config.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_cli/display.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_cli/docs/__init__.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_cli/docs/base.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_cli/docs/formatters.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_cli/docs/registry.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_cli/errors.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_cli/main.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_cli/markdown.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_cli/response.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_cli/utils/__init__.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_sdk/__init__.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_sdk/base/__init__.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_sdk/base/entity.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_sdk/cache/__init__.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_sdk/cache/cache.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_sdk/client.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_sdk/managers/__init__.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_sdk/managers/block_manager.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_sdk/managers/comment_manager.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_sdk/managers/database_manager.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_sdk/managers/page_manager.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_sdk/managers/user_manager.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_sdk/models/__init__.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_sdk/models/block.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_sdk/models/blocks/__init__.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_sdk/models/blocks/audio.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_sdk/models/blocks/bookmark.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_sdk/models/blocks/breadcrumb.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_sdk/models/blocks/bullet.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_sdk/models/blocks/callout.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_sdk/models/blocks/code.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_sdk/models/blocks/column.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_sdk/models/blocks/column_list.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_sdk/models/blocks/divider.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_sdk/models/blocks/embed.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_sdk/models/blocks/equation.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_sdk/models/blocks/file.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_sdk/models/blocks/heading.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_sdk/models/blocks/image.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_sdk/models/blocks/numbered.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_sdk/models/blocks/paragraph.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_sdk/models/blocks/pdf.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_sdk/models/blocks/quote.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_sdk/models/blocks/synced_block.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_sdk/models/blocks/table.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_sdk/models/blocks/table_row.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_sdk/models/blocks/template.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_sdk/models/blocks/todo.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_sdk/models/blocks/toggle.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_sdk/models/blocks/video.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_sdk/models/comment.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_sdk/models/database.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_sdk/models/page.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_sdk/models/user.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_sdk/parents/__init__.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_sdk/plugins.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_sdk/properties/__init__.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_sdk/properties/formula.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_sdk/properties/parsers.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_sdk/properties/relation.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_sdk/query/__init__.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_sdk/query/database_query.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_sdk/query/filter_translator.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/plugins/__init__.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/plugins/base.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/plugins/loader.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/plugins/official/__init__.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/plugins/official/agents.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/plugins/official/agents_cli.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/plugins/official/agents_schema.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/plugins/official/agents_sdk/__init__.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/plugins/official/agents_sdk/managers.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/plugins/official/agents_sdk/models.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/plugins/official/agents_sdk/plugin.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/plugins/official/productivity.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/plugins/state.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/utils/__init__.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/utils/agents/__init__.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/utils/agents/auth.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/utils/agents/dependency_resolver.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/utils/agents/metadata.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/utils/agents/project_context.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/utils/agents/rbac.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/utils/agents/state_machine.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/utils/helpers.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/utils/retry.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/better_notion/utils/validators.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/_sdk/base/test_entity.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/_sdk/cache/test_cache.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/_sdk/models/__init__.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/_sdk/models/blocks/test_advanced_blocks.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/_sdk/models/test_block.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/_sdk/models/test_database.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/_sdk/models/test_database_bug.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/_sdk/models/test_page.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/_sdk/models/test_user.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/_sdk/properties/test_formula.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/_sdk/properties/test_parsers.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/_sdk/properties/test_relation.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/_sdk/query/test_database_query.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/_sdk/query/test_filter_translator.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/_sdk/test_client.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/_sdk/test_comment.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/agents/__init__.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/agents/test_auth.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/agents/test_dependency_resolver.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/agents/test_plugin.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/agents/test_project_context.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/agents/test_rbac.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/agents/test_schemas.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/agents/test_state_machine.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/agents/test_workspace.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/cli/__init__.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/cli/test_async_typer.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/cli/test_config.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/cli/test_display.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/cli/test_errors.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/cli/test_main.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/cli/test_pages_commands.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/cli/test_response.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/cli/test_update.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/conftest.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/integration/conftest.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/integration/test_blocks.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/integration/test_databases.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/integration/test_pages.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/integration/test_search.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/integration/test_users.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/plugins/__init__.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/plugins/test_agents_cli.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/plugins/test_agents_sdk_integration.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/plugins/test_agents_sdk_managers.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/plugins/test_agents_sdk_models.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/plugins/test_base.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/plugins/test_loader.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/plugins/test_marketplace.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/plugins/test_plugin_commands_state.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/plugins/test_productivity_plugin.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/plugins/test_state.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/sdk/__init__.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/sdk/test_plugin_system.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/test_metadata.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/test_schema_command.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/unit/test_client.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/unit/test_collections.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/unit/test_entities.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/unit/test_errors.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/unit/test_helpers.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/unit/test_properties.py +0 -0
- {better_notion-2.1.3 → better_notion-2.1.4}/tests/utils/test_retry.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: better-notion
|
|
3
|
-
Version: 2.1.
|
|
3
|
+
Version: 2.1.4
|
|
4
4
|
Summary: A high-level Python SDK for the Notion API with developer experience in mind.
|
|
5
5
|
Project-URL: Homepage, https://github.com/nesalia-inc/better-notion
|
|
6
6
|
Project-URL: Documentation, https://github.com/nesalia-inc/better-notion#readme
|
|
@@ -423,8 +423,10 @@ class TaskSchema:
|
|
|
423
423
|
def get_schema() -> Dict[str, Dict[str, Any]]:
|
|
424
424
|
"""Return Notion database schema for Tasks.
|
|
425
425
|
|
|
426
|
-
Note:
|
|
427
|
-
|
|
426
|
+
Note: The following properties are NOT included here and will be added
|
|
427
|
+
after database creation via database.update():
|
|
428
|
+
- "Dependencies": Self-referential relation (requires database's own ID)
|
|
429
|
+
- "Related Work Issue": Relation to Work Issues (Work Issues created after Tasks)
|
|
428
430
|
"""
|
|
429
431
|
return {
|
|
430
432
|
"Title": PropertyBuilder.title("Title"),
|
|
@@ -462,8 +464,6 @@ class TaskSchema:
|
|
|
462
464
|
SelectOption.option("Low", "blue"),
|
|
463
465
|
],
|
|
464
466
|
),
|
|
465
|
-
# Related Work Issue: Relation to Work Issues (will be updated after database creation)
|
|
466
|
-
"Related Work Issue": PropertyBuilder.relation("Related Work Issue", dual_property=False),
|
|
467
467
|
"Estimated Hours": PropertyBuilder.number("Estimated Hours"),
|
|
468
468
|
"Actual Hours": PropertyBuilder.number("Actual Hours"),
|
|
469
469
|
"Assignee": PropertyBuilder.people("Assignee"),
|
|
@@ -169,6 +169,14 @@ class WorkspaceInitializer:
|
|
|
169
169
|
# Update cross-database relations that require both databases to exist
|
|
170
170
|
await self._update_cross_database_relations()
|
|
171
171
|
|
|
172
|
+
# Add self-referential Dependencies relation to Tasks database
|
|
173
|
+
if "tasks" in self._database_ids:
|
|
174
|
+
await self._update_relation(
|
|
175
|
+
self._database_ids["tasks"],
|
|
176
|
+
"Dependencies",
|
|
177
|
+
self._database_ids["tasks"] # Self-reference
|
|
178
|
+
)
|
|
179
|
+
|
|
172
180
|
# Save workspace metadata
|
|
173
181
|
self.save_database_ids()
|
|
174
182
|
|
|
@@ -249,7 +257,7 @@ class WorkspaceInitializer:
|
|
|
249
257
|
)
|
|
250
258
|
|
|
251
259
|
async def _create_tasks_db(self, parent: Page) -> None:
|
|
252
|
-
"""Create Tasks database with relations to Versions
|
|
260
|
+
"""Create Tasks database with relations to Versions."""
|
|
253
261
|
schema = TaskSchema.get_schema()
|
|
254
262
|
|
|
255
263
|
# Update relations with Versions database ID
|
|
@@ -259,8 +267,6 @@ class WorkspaceInitializer:
|
|
|
259
267
|
"versions"
|
|
260
268
|
]
|
|
261
269
|
|
|
262
|
-
# Tasks reference themselves for dependencies
|
|
263
|
-
# Will be updated after database creation
|
|
264
270
|
db = await self._client.databases.create(
|
|
265
271
|
parent=parent,
|
|
266
272
|
title="Tasks",
|
|
@@ -269,9 +275,6 @@ class WorkspaceInitializer:
|
|
|
269
275
|
|
|
270
276
|
self._database_ids["tasks"] = db.id
|
|
271
277
|
|
|
272
|
-
# Update self-referential relations
|
|
273
|
-
await self._update_self_relations(db.id)
|
|
274
|
-
|
|
275
278
|
# Update Versions database with reverse relation
|
|
276
279
|
await self._add_reverse_relation(
|
|
277
280
|
self._database_ids["versions"],
|
|
@@ -397,42 +400,6 @@ class WorkspaceInitializer:
|
|
|
397
400
|
logger.warning(f"Failed to delete database {database_id}: {str(e)}")
|
|
398
401
|
# Continue with other deletions even if this one fails
|
|
399
402
|
|
|
400
|
-
async def _update_self_relations(self, database_id: str) -> None:
|
|
401
|
-
"""Add self-referential Dependencies relation to Tasks database.
|
|
402
|
-
|
|
403
|
-
The Dependencies property cannot be included in the initial schema
|
|
404
|
-
because it requires the database's own ID. This method adds it
|
|
405
|
-
after the database is created.
|
|
406
|
-
|
|
407
|
-
Args:
|
|
408
|
-
database_id: ID of the Tasks database
|
|
409
|
-
"""
|
|
410
|
-
# Get the current database schema
|
|
411
|
-
db = await self._client.databases.get(database_id)
|
|
412
|
-
schema = db.schema
|
|
413
|
-
|
|
414
|
-
# Add the Dependencies self-referential relation
|
|
415
|
-
# This creates a relation from Tasks to Tasks itself
|
|
416
|
-
schema["Dependencies"] = {
|
|
417
|
-
"relation": {
|
|
418
|
-
"database_id": database_id, # Self-reference
|
|
419
|
-
"type": "dual_property",
|
|
420
|
-
"dual_property": {
|
|
421
|
-
"synced_property_name": "Dependent Tasks",
|
|
422
|
-
"synced_property_type": "relation"
|
|
423
|
-
}
|
|
424
|
-
}
|
|
425
|
-
}
|
|
426
|
-
|
|
427
|
-
# Update the database schema via API
|
|
428
|
-
await self._client._api._request(
|
|
429
|
-
"PATCH",
|
|
430
|
-
f"/databases/{database_id}",
|
|
431
|
-
json={"properties": schema}
|
|
432
|
-
)
|
|
433
|
-
|
|
434
|
-
logger.info(f"Added Dependencies self-referential relation to Tasks database {database_id}")
|
|
435
|
-
|
|
436
403
|
async def _update_cross_database_relations(self) -> None:
|
|
437
404
|
"""Update cross-database relations after all databases are created.
|
|
438
405
|
|
|
@@ -476,7 +443,7 @@ class WorkspaceInitializer:
|
|
|
476
443
|
property_name: str,
|
|
477
444
|
target_database_id: Optional[str],
|
|
478
445
|
) -> None:
|
|
479
|
-
"""
|
|
446
|
+
"""Add or update a relation property to point to the target database.
|
|
480
447
|
|
|
481
448
|
Args:
|
|
482
449
|
database_id: Database to update
|
|
@@ -491,20 +458,56 @@ class WorkspaceInitializer:
|
|
|
491
458
|
db = await self._client.databases.get(database_id)
|
|
492
459
|
schema = db.schema
|
|
493
460
|
|
|
494
|
-
#
|
|
461
|
+
# Add or update the relation property
|
|
462
|
+
# Some properties (like Dependencies, Related Work Issue) are added AFTER
|
|
463
|
+
# database creation, so they may not exist in the initial schema
|
|
495
464
|
if property_name in schema:
|
|
465
|
+
# Property exists, just update the database_id
|
|
496
466
|
schema[property_name]["relation"]["database_id"] = target_database_id
|
|
467
|
+
else:
|
|
468
|
+
# Property doesn't exist, ADD it
|
|
469
|
+
# This handles cases where the property couldn't be in the initial schema
|
|
470
|
+
if property_name == "Dependencies":
|
|
471
|
+
# Self-referential relation
|
|
472
|
+
schema[property_name] = {
|
|
473
|
+
"relation": {
|
|
474
|
+
"database_id": database_id, # Self-reference
|
|
475
|
+
"type": "dual_property",
|
|
476
|
+
"dual_property": {
|
|
477
|
+
"synced_property_name": "Dependent Tasks",
|
|
478
|
+
"synced_property_type": "relation"
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
elif property_name == "Related Work Issue":
|
|
483
|
+
# Relation to Work Issues database
|
|
484
|
+
schema[property_name] = {
|
|
485
|
+
"relation": {
|
|
486
|
+
"database_id": target_database_id,
|
|
487
|
+
"type": "dual_property",
|
|
488
|
+
"dual_property": {
|
|
489
|
+
"synced_property_name": "Related Tasks",
|
|
490
|
+
"synced_property_type": "relation"
|
|
491
|
+
}
|
|
492
|
+
}
|
|
493
|
+
}
|
|
494
|
+
else:
|
|
495
|
+
# Generic relation
|
|
496
|
+
schema[property_name] = {
|
|
497
|
+
"relation": {
|
|
498
|
+
"database_id": target_database_id,
|
|
499
|
+
"dual_property": {}
|
|
500
|
+
}
|
|
501
|
+
}
|
|
497
502
|
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
503
|
+
# Update the database schema via API
|
|
504
|
+
await self._client._api._request(
|
|
505
|
+
"PATCH",
|
|
506
|
+
f"/databases/{database_id}",
|
|
507
|
+
json={"properties": schema}
|
|
508
|
+
)
|
|
504
509
|
|
|
505
|
-
|
|
506
|
-
else:
|
|
507
|
-
logger.warning(f"Property {property_name} not found in database {database_id}")
|
|
510
|
+
logger.info(f"Added/Updated {property_name} relation to {target_database_id}")
|
|
508
511
|
|
|
509
512
|
def save_database_ids(self, path: Optional[Path] = None) -> None:
|
|
510
513
|
"""Save workspace metadata (database IDs and workspace info) to config file.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{better_notion-2.1.3 → better_notion-2.1.4}/better_notion/_sdk/models/blocks/synced_block.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{better_notion-2.1.3 → better_notion-2.1.4}/better_notion/plugins/official/agents_sdk/__init__.py
RENAMED
|
File without changes
|
{better_notion-2.1.3 → better_notion-2.1.4}/better_notion/plugins/official/agents_sdk/managers.py
RENAMED
|
File without changes
|
{better_notion-2.1.3 → better_notion-2.1.4}/better_notion/plugins/official/agents_sdk/models.py
RENAMED
|
File without changes
|
{better_notion-2.1.3 → better_notion-2.1.4}/better_notion/plugins/official/agents_sdk/plugin.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{better_notion-2.1.3 → better_notion-2.1.4}/better_notion/utils/agents/dependency_resolver.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{better_notion-2.1.3 → better_notion-2.1.4}/tests/_sdk/models/blocks/test_advanced_blocks.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|