better-notion 2.1.2__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.2 → better_notion-2.1.4}/PKG-INFO +1 -1
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/utils/agents/schemas.py +7 -5
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/utils/agents/workspace.py +67 -41
- {better_notion-2.1.2 → better_notion-2.1.4}/pyproject.toml +1 -1
- {better_notion-2.1.2 → better_notion-2.1.4}/.gitignore +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/LICENSE +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/README.md +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/__init__.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_api/__init__.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_api/client.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_api/collections/__init__.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_api/collections/blocks.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_api/collections/comments.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_api/collections/databases.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_api/collections/pages.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_api/collections/users.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_api/entities/__init__.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_api/entities/block.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_api/entities/comment.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_api/entities/database.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_api/entities/page.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_api/entities/user.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_api/errors.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_api/oauth.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_api/properties/__init__.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_api/properties/base.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_api/properties/checkbox.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_api/properties/date.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_api/properties/email.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_api/properties/number.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_api/properties/phone.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_api/properties/relation.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_api/properties/rich_text.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_api/properties/select.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_api/properties/title.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_api/properties/url.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_api/utils/__init__.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_api/utils/pagination.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_cli/__init__.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_cli/async_typer.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_cli/commands/__init__.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_cli/commands/auth.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_cli/commands/blocks.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_cli/commands/comments.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_cli/commands/config.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_cli/commands/databases.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_cli/commands/pages.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_cli/commands/plugins.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_cli/commands/search.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_cli/commands/update.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_cli/commands/users.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_cli/commands/workspace.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_cli/config.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_cli/display.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_cli/docs/__init__.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_cli/docs/base.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_cli/docs/formatters.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_cli/docs/registry.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_cli/errors.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_cli/main.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_cli/markdown.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_cli/response.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_cli/utils/__init__.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_sdk/__init__.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_sdk/base/__init__.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_sdk/base/entity.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_sdk/cache/__init__.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_sdk/cache/cache.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_sdk/client.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_sdk/managers/__init__.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_sdk/managers/block_manager.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_sdk/managers/comment_manager.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_sdk/managers/database_manager.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_sdk/managers/page_manager.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_sdk/managers/user_manager.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_sdk/models/__init__.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_sdk/models/block.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_sdk/models/blocks/__init__.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_sdk/models/blocks/audio.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_sdk/models/blocks/bookmark.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_sdk/models/blocks/breadcrumb.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_sdk/models/blocks/bullet.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_sdk/models/blocks/callout.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_sdk/models/blocks/code.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_sdk/models/blocks/column.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_sdk/models/blocks/column_list.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_sdk/models/blocks/divider.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_sdk/models/blocks/embed.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_sdk/models/blocks/equation.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_sdk/models/blocks/file.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_sdk/models/blocks/heading.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_sdk/models/blocks/image.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_sdk/models/blocks/numbered.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_sdk/models/blocks/paragraph.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_sdk/models/blocks/pdf.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_sdk/models/blocks/quote.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_sdk/models/blocks/synced_block.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_sdk/models/blocks/table.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_sdk/models/blocks/table_row.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_sdk/models/blocks/template.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_sdk/models/blocks/todo.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_sdk/models/blocks/toggle.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_sdk/models/blocks/video.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_sdk/models/comment.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_sdk/models/database.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_sdk/models/page.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_sdk/models/user.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_sdk/parents/__init__.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_sdk/plugins.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_sdk/properties/__init__.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_sdk/properties/formula.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_sdk/properties/parsers.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_sdk/properties/relation.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_sdk/query/__init__.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_sdk/query/database_query.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/_sdk/query/filter_translator.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/plugins/__init__.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/plugins/base.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/plugins/loader.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/plugins/official/__init__.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/plugins/official/agents.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/plugins/official/agents_cli.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/plugins/official/agents_schema.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/plugins/official/agents_sdk/__init__.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/plugins/official/agents_sdk/managers.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/plugins/official/agents_sdk/models.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/plugins/official/agents_sdk/plugin.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/plugins/official/productivity.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/plugins/state.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/utils/__init__.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/utils/agents/__init__.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/utils/agents/auth.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/utils/agents/dependency_resolver.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/utils/agents/metadata.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/utils/agents/project_context.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/utils/agents/rbac.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/utils/agents/state_machine.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/utils/helpers.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/utils/retry.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/better_notion/utils/validators.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/_sdk/base/test_entity.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/_sdk/cache/test_cache.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/_sdk/models/__init__.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/_sdk/models/blocks/test_advanced_blocks.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/_sdk/models/test_block.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/_sdk/models/test_database.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/_sdk/models/test_database_bug.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/_sdk/models/test_page.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/_sdk/models/test_user.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/_sdk/properties/test_formula.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/_sdk/properties/test_parsers.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/_sdk/properties/test_relation.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/_sdk/query/test_database_query.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/_sdk/query/test_filter_translator.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/_sdk/test_client.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/_sdk/test_comment.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/agents/__init__.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/agents/test_auth.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/agents/test_dependency_resolver.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/agents/test_plugin.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/agents/test_project_context.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/agents/test_rbac.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/agents/test_schemas.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/agents/test_state_machine.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/agents/test_workspace.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/cli/__init__.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/cli/test_async_typer.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/cli/test_config.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/cli/test_display.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/cli/test_errors.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/cli/test_main.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/cli/test_pages_commands.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/cli/test_response.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/cli/test_update.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/conftest.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/integration/conftest.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/integration/test_blocks.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/integration/test_databases.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/integration/test_pages.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/integration/test_search.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/integration/test_users.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/plugins/__init__.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/plugins/test_agents_cli.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/plugins/test_agents_sdk_integration.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/plugins/test_agents_sdk_managers.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/plugins/test_agents_sdk_models.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/plugins/test_base.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/plugins/test_loader.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/plugins/test_marketplace.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/plugins/test_plugin_commands_state.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/plugins/test_productivity_plugin.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/plugins/test_state.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/sdk/__init__.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/sdk/test_plugin_system.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/test_metadata.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/test_schema_command.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/unit/test_client.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/unit/test_collections.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/unit/test_entities.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/unit/test_errors.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/unit/test_helpers.py +0 -0
- {better_notion-2.1.2 → better_notion-2.1.4}/tests/unit/test_properties.py +0 -0
- {better_notion-2.1.2 → 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
|
|
@@ -421,7 +421,13 @@ class TaskSchema:
|
|
|
421
421
|
|
|
422
422
|
@staticmethod
|
|
423
423
|
def get_schema() -> Dict[str, Dict[str, Any]]:
|
|
424
|
-
"""Return Notion database schema for Tasks.
|
|
424
|
+
"""Return Notion database schema for Tasks.
|
|
425
|
+
|
|
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)
|
|
430
|
+
"""
|
|
425
431
|
return {
|
|
426
432
|
"Title": PropertyBuilder.title("Title"),
|
|
427
433
|
"Version": PropertyBuilder.relation("Version"),
|
|
@@ -458,10 +464,6 @@ class TaskSchema:
|
|
|
458
464
|
SelectOption.option("Low", "blue"),
|
|
459
465
|
],
|
|
460
466
|
),
|
|
461
|
-
# Dependencies: Self-referential relation (will be updated after database creation)
|
|
462
|
-
"Dependencies": PropertyBuilder.relation("Dependencies", dual_property=False),
|
|
463
|
-
# Related Work Issue: Relation to Work Issues (will be updated after database creation)
|
|
464
|
-
"Related Work Issue": PropertyBuilder.relation("Related Work Issue", dual_property=False),
|
|
465
467
|
"Estimated Hours": PropertyBuilder.number("Estimated Hours"),
|
|
466
468
|
"Actual Hours": PropertyBuilder.number("Actual Hours"),
|
|
467
469
|
"Assignee": PropertyBuilder.people("Assignee"),
|
|
@@ -141,11 +141,21 @@ class WorkspaceInitializer:
|
|
|
141
141
|
logger.info(f"✓ {display_name} database created: {self._database_ids[key]}")
|
|
142
142
|
except Exception as e:
|
|
143
143
|
# Clean up databases created so far
|
|
144
|
+
import traceback
|
|
144
145
|
logger.error(f"Failed to create {display_name} database: {str(e)}")
|
|
146
|
+
logger.error(f"Full traceback:\n{traceback.format_exc()}")
|
|
147
|
+
|
|
148
|
+
# Try to get more error details if available
|
|
149
|
+
error_details = str(e)
|
|
150
|
+
if hasattr(e, 'response') and hasattr(e.response, 'text'):
|
|
151
|
+
logger.error(f"Notion API response: {e.response.text}")
|
|
152
|
+
error_details += f"\nNotion API response: {e.response.text}"
|
|
153
|
+
|
|
145
154
|
logger.warning(f"Cleaning up {len(self._database_ids)} databases that were created...")
|
|
146
155
|
await self._delete_existing_databases(parent, self._database_ids)
|
|
156
|
+
|
|
147
157
|
error_msg = (
|
|
148
|
-
f"Failed to create {display_name} database: {
|
|
158
|
+
f"Failed to create {display_name} database: {error_details}\n"
|
|
149
159
|
f"All partially created databases have been deleted.\n"
|
|
150
160
|
f"Parent page: {parent_page_id}\n"
|
|
151
161
|
f"Workspace name: {workspace_name}"
|
|
@@ -159,6 +169,14 @@ class WorkspaceInitializer:
|
|
|
159
169
|
# Update cross-database relations that require both databases to exist
|
|
160
170
|
await self._update_cross_database_relations()
|
|
161
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
|
+
|
|
162
180
|
# Save workspace metadata
|
|
163
181
|
self.save_database_ids()
|
|
164
182
|
|
|
@@ -239,7 +257,7 @@ class WorkspaceInitializer:
|
|
|
239
257
|
)
|
|
240
258
|
|
|
241
259
|
async def _create_tasks_db(self, parent: Page) -> None:
|
|
242
|
-
"""Create Tasks database with relations to Versions
|
|
260
|
+
"""Create Tasks database with relations to Versions."""
|
|
243
261
|
schema = TaskSchema.get_schema()
|
|
244
262
|
|
|
245
263
|
# Update relations with Versions database ID
|
|
@@ -249,8 +267,6 @@ class WorkspaceInitializer:
|
|
|
249
267
|
"versions"
|
|
250
268
|
]
|
|
251
269
|
|
|
252
|
-
# Tasks reference themselves for dependencies
|
|
253
|
-
# Will be updated after database creation
|
|
254
270
|
db = await self._client.databases.create(
|
|
255
271
|
parent=parent,
|
|
256
272
|
title="Tasks",
|
|
@@ -259,9 +275,6 @@ class WorkspaceInitializer:
|
|
|
259
275
|
|
|
260
276
|
self._database_ids["tasks"] = db.id
|
|
261
277
|
|
|
262
|
-
# Update self-referential relations
|
|
263
|
-
await self._update_self_relations(db.id)
|
|
264
|
-
|
|
265
278
|
# Update Versions database with reverse relation
|
|
266
279
|
await self._add_reverse_relation(
|
|
267
280
|
self._database_ids["versions"],
|
|
@@ -387,29 +400,6 @@ class WorkspaceInitializer:
|
|
|
387
400
|
logger.warning(f"Failed to delete database {database_id}: {str(e)}")
|
|
388
401
|
# Continue with other deletions even if this one fails
|
|
389
402
|
|
|
390
|
-
async def _update_self_relations(self, database_id: str) -> None:
|
|
391
|
-
"""Update self-referential relations in Tasks database.
|
|
392
|
-
|
|
393
|
-
Note: The database was created with placeholder relations.
|
|
394
|
-
This method updates them to point to themselves.
|
|
395
|
-
"""
|
|
396
|
-
# Get the current database schema
|
|
397
|
-
db = await self._client.databases.get(database_id)
|
|
398
|
-
|
|
399
|
-
# Update the Dependencies relation to point to itself
|
|
400
|
-
schema = db.schema
|
|
401
|
-
if "Dependencies" in schema:
|
|
402
|
-
schema["Dependencies"]["relation"]["database_id"] = database_id
|
|
403
|
-
|
|
404
|
-
# Update the database schema via API
|
|
405
|
-
await self._client._api._request(
|
|
406
|
-
"PATCH",
|
|
407
|
-
f"/databases/{database_id}",
|
|
408
|
-
json={"properties": schema}
|
|
409
|
-
)
|
|
410
|
-
|
|
411
|
-
logger.info(f"Updated self-referential relations for Tasks database {database_id}")
|
|
412
|
-
|
|
413
403
|
async def _update_cross_database_relations(self) -> None:
|
|
414
404
|
"""Update cross-database relations after all databases are created.
|
|
415
405
|
|
|
@@ -453,7 +443,7 @@ class WorkspaceInitializer:
|
|
|
453
443
|
property_name: str,
|
|
454
444
|
target_database_id: Optional[str],
|
|
455
445
|
) -> None:
|
|
456
|
-
"""
|
|
446
|
+
"""Add or update a relation property to point to the target database.
|
|
457
447
|
|
|
458
448
|
Args:
|
|
459
449
|
database_id: Database to update
|
|
@@ -468,20 +458,56 @@ class WorkspaceInitializer:
|
|
|
468
458
|
db = await self._client.databases.get(database_id)
|
|
469
459
|
schema = db.schema
|
|
470
460
|
|
|
471
|
-
#
|
|
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
|
|
472
464
|
if property_name in schema:
|
|
465
|
+
# Property exists, just update the database_id
|
|
473
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
|
+
}
|
|
474
502
|
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
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
|
+
)
|
|
481
509
|
|
|
482
|
-
|
|
483
|
-
else:
|
|
484
|
-
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}")
|
|
485
511
|
|
|
486
512
|
def save_database_ids(self, path: Optional[Path] = None) -> None:
|
|
487
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.2 → 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.2 → better_notion-2.1.4}/better_notion/plugins/official/agents_sdk/__init__.py
RENAMED
|
File without changes
|
{better_notion-2.1.2 → better_notion-2.1.4}/better_notion/plugins/official/agents_sdk/managers.py
RENAMED
|
File without changes
|
{better_notion-2.1.2 → better_notion-2.1.4}/better_notion/plugins/official/agents_sdk/models.py
RENAMED
|
File without changes
|
{better_notion-2.1.2 → 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.2 → 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.2 → 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
|