better-notion 2.1.5__tar.gz → 2.1.7__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.5 → better_notion-2.1.7}/PKG-INFO +1 -1
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/utils/agents/workspace.py +52 -21
- {better_notion-2.1.5 → better_notion-2.1.7}/pyproject.toml +1 -1
- {better_notion-2.1.5 → better_notion-2.1.7}/.gitignore +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/LICENSE +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/README.md +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/__init__.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_api/__init__.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_api/client.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_api/collections/__init__.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_api/collections/blocks.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_api/collections/comments.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_api/collections/databases.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_api/collections/pages.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_api/collections/users.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_api/entities/__init__.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_api/entities/block.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_api/entities/comment.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_api/entities/database.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_api/entities/page.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_api/entities/user.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_api/errors.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_api/oauth.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_api/properties/__init__.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_api/properties/base.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_api/properties/checkbox.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_api/properties/date.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_api/properties/email.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_api/properties/number.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_api/properties/phone.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_api/properties/relation.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_api/properties/rich_text.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_api/properties/select.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_api/properties/title.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_api/properties/url.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_api/utils/__init__.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_api/utils/pagination.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_cli/__init__.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_cli/async_typer.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_cli/commands/__init__.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_cli/commands/auth.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_cli/commands/blocks.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_cli/commands/comments.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_cli/commands/config.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_cli/commands/databases.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_cli/commands/pages.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_cli/commands/plugins.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_cli/commands/search.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_cli/commands/update.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_cli/commands/users.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_cli/commands/workspace.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_cli/config.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_cli/display.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_cli/docs/__init__.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_cli/docs/base.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_cli/docs/formatters.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_cli/docs/registry.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_cli/errors.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_cli/main.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_cli/markdown.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_cli/response.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_cli/utils/__init__.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_sdk/__init__.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_sdk/base/__init__.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_sdk/base/entity.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_sdk/cache/__init__.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_sdk/cache/cache.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_sdk/client.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_sdk/managers/__init__.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_sdk/managers/block_manager.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_sdk/managers/comment_manager.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_sdk/managers/database_manager.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_sdk/managers/page_manager.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_sdk/managers/user_manager.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_sdk/models/__init__.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_sdk/models/block.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_sdk/models/blocks/__init__.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_sdk/models/blocks/audio.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_sdk/models/blocks/bookmark.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_sdk/models/blocks/breadcrumb.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_sdk/models/blocks/bullet.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_sdk/models/blocks/callout.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_sdk/models/blocks/code.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_sdk/models/blocks/column.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_sdk/models/blocks/column_list.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_sdk/models/blocks/divider.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_sdk/models/blocks/embed.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_sdk/models/blocks/equation.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_sdk/models/blocks/file.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_sdk/models/blocks/heading.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_sdk/models/blocks/image.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_sdk/models/blocks/numbered.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_sdk/models/blocks/paragraph.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_sdk/models/blocks/pdf.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_sdk/models/blocks/quote.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_sdk/models/blocks/synced_block.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_sdk/models/blocks/table.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_sdk/models/blocks/table_row.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_sdk/models/blocks/template.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_sdk/models/blocks/todo.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_sdk/models/blocks/toggle.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_sdk/models/blocks/video.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_sdk/models/comment.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_sdk/models/database.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_sdk/models/page.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_sdk/models/user.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_sdk/parents/__init__.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_sdk/plugins.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_sdk/properties/__init__.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_sdk/properties/formula.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_sdk/properties/parsers.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_sdk/properties/relation.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_sdk/query/__init__.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_sdk/query/database_query.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/_sdk/query/filter_translator.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/plugins/__init__.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/plugins/base.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/plugins/loader.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/plugins/official/__init__.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/plugins/official/agents.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/plugins/official/agents_cli.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/plugins/official/agents_schema.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/plugins/official/agents_sdk/__init__.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/plugins/official/agents_sdk/managers.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/plugins/official/agents_sdk/models.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/plugins/official/agents_sdk/plugin.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/plugins/official/productivity.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/plugins/state.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/utils/__init__.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/utils/agents/__init__.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/utils/agents/auth.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/utils/agents/dependency_resolver.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/utils/agents/metadata.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/utils/agents/project_context.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/utils/agents/rbac.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/utils/agents/schemas.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/utils/agents/state_machine.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/utils/helpers.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/utils/retry.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/better_notion/utils/validators.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/_sdk/base/test_entity.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/_sdk/cache/test_cache.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/_sdk/models/__init__.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/_sdk/models/blocks/test_advanced_blocks.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/_sdk/models/test_block.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/_sdk/models/test_database.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/_sdk/models/test_database_bug.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/_sdk/models/test_page.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/_sdk/models/test_user.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/_sdk/properties/test_formula.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/_sdk/properties/test_parsers.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/_sdk/properties/test_relation.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/_sdk/query/test_database_query.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/_sdk/query/test_filter_translator.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/_sdk/test_client.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/_sdk/test_comment.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/agents/__init__.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/agents/test_auth.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/agents/test_dependency_resolver.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/agents/test_plugin.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/agents/test_project_context.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/agents/test_rbac.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/agents/test_schemas.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/agents/test_state_machine.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/agents/test_workspace.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/cli/__init__.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/cli/test_async_typer.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/cli/test_config.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/cli/test_display.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/cli/test_errors.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/cli/test_main.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/cli/test_pages_commands.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/cli/test_response.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/cli/test_update.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/conftest.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/integration/conftest.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/integration/test_blocks.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/integration/test_databases.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/integration/test_pages.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/integration/test_search.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/integration/test_users.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/plugins/__init__.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/plugins/test_agents_cli.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/plugins/test_agents_sdk_integration.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/plugins/test_agents_sdk_managers.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/plugins/test_agents_sdk_models.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/plugins/test_base.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/plugins/test_loader.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/plugins/test_marketplace.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/plugins/test_plugin_commands_state.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/plugins/test_productivity_plugin.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/plugins/test_state.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/sdk/__init__.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/sdk/test_plugin_system.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/test_metadata.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/test_schema_command.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/unit/test_client.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/unit/test_collections.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/unit/test_entities.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/unit/test_errors.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/unit/test_helpers.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/tests/unit/test_properties.py +0 -0
- {better_notion-2.1.5 → better_notion-2.1.7}/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.7
|
|
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
|
|
@@ -142,15 +142,29 @@ class WorkspaceInitializer:
|
|
|
142
142
|
except Exception as e:
|
|
143
143
|
# Clean up databases created so far
|
|
144
144
|
import traceback
|
|
145
|
-
|
|
146
|
-
|
|
145
|
+
import sys
|
|
146
|
+
|
|
147
|
+
# Log to stderr for visibility
|
|
148
|
+
print(f"\n{'='*60}", file=sys.stderr)
|
|
149
|
+
print(f"❌ FAILED TO CREATE: {display_name} database", file=sys.stderr)
|
|
150
|
+
print(f"{'='*60}", file=sys.stderr)
|
|
151
|
+
print(f"Error: {str(e)}", file=sys.stderr)
|
|
152
|
+
print(f"\nFull traceback:", file=sys.stderr)
|
|
153
|
+
traceback.print_exc(file=sys.stderr)
|
|
147
154
|
|
|
148
155
|
# Try to get more error details if available
|
|
149
156
|
error_details = str(e)
|
|
150
157
|
if hasattr(e, 'response') and hasattr(e.response, 'text'):
|
|
151
|
-
|
|
158
|
+
print(f"\nNotion API response:", file=sys.stderr)
|
|
159
|
+
print(f"{e.response.text}", file=sys.stderr)
|
|
152
160
|
error_details += f"\nNotion API response: {e.response.text}"
|
|
153
161
|
|
|
162
|
+
print(f"\nDatabases created before failure: {list(self._database_ids.keys())}", file=sys.stderr)
|
|
163
|
+
print(f"{'='*60}\n", file=sys.stderr)
|
|
164
|
+
|
|
165
|
+
logger.error(f"Failed to create {display_name} database: {str(e)}")
|
|
166
|
+
logger.error(f"Full traceback:\n{traceback.format_exc()}")
|
|
167
|
+
|
|
154
168
|
logger.warning(f"Cleaning up {len(self._database_ids)} databases that were created...")
|
|
155
169
|
await self._delete_existing_databases(parent, self._database_ids)
|
|
156
170
|
|
|
@@ -460,18 +474,19 @@ class WorkspaceInitializer:
|
|
|
460
474
|
db = await self._client.databases.get(database_id)
|
|
461
475
|
schema = db.schema
|
|
462
476
|
|
|
463
|
-
#
|
|
464
|
-
|
|
465
|
-
|
|
477
|
+
# Prepare the new property schema
|
|
478
|
+
new_property_schema = None
|
|
479
|
+
|
|
466
480
|
if property_name in schema:
|
|
467
481
|
# Property exists, just update the database_id
|
|
468
|
-
schema[property_name]
|
|
482
|
+
new_property_schema = schema[property_name]
|
|
483
|
+
new_property_schema["relation"]["database_id"] = target_database_id
|
|
469
484
|
else:
|
|
470
|
-
# Property doesn't exist,
|
|
485
|
+
# Property doesn't exist, CREATE it
|
|
471
486
|
# This handles cases where the property couldn't be in the initial schema
|
|
472
487
|
if property_name == "Dependencies":
|
|
473
488
|
# Self-referential relation
|
|
474
|
-
|
|
489
|
+
new_property_schema = {
|
|
475
490
|
"relation": {
|
|
476
491
|
"database_id": database_id, # Self-reference
|
|
477
492
|
"type": "dual_property",
|
|
@@ -483,7 +498,7 @@ class WorkspaceInitializer:
|
|
|
483
498
|
}
|
|
484
499
|
elif property_name == "Related Work Issue":
|
|
485
500
|
# Relation to Work Issues database
|
|
486
|
-
|
|
501
|
+
new_property_schema = {
|
|
487
502
|
"relation": {
|
|
488
503
|
"database_id": target_database_id,
|
|
489
504
|
"type": "dual_property",
|
|
@@ -495,7 +510,7 @@ class WorkspaceInitializer:
|
|
|
495
510
|
}
|
|
496
511
|
elif property_name == "Blocking Tasks":
|
|
497
512
|
# Relation from Work Issues to Tasks
|
|
498
|
-
|
|
513
|
+
new_property_schema = {
|
|
499
514
|
"relation": {
|
|
500
515
|
"database_id": target_database_id,
|
|
501
516
|
"type": "dual_property",
|
|
@@ -507,7 +522,7 @@ class WorkspaceInitializer:
|
|
|
507
522
|
}
|
|
508
523
|
elif property_name == "Caused Incidents":
|
|
509
524
|
# Relation from Work Issues to Incidents
|
|
510
|
-
|
|
525
|
+
new_property_schema = {
|
|
511
526
|
"relation": {
|
|
512
527
|
"database_id": target_database_id,
|
|
513
528
|
"type": "dual_property",
|
|
@@ -519,7 +534,7 @@ class WorkspaceInitializer:
|
|
|
519
534
|
}
|
|
520
535
|
elif property_name == "Root Cause Work Issue":
|
|
521
536
|
# Relation from Incidents to Work Issues
|
|
522
|
-
|
|
537
|
+
new_property_schema = {
|
|
523
538
|
"relation": {
|
|
524
539
|
"database_id": target_database_id,
|
|
525
540
|
"type": "dual_property",
|
|
@@ -531,21 +546,37 @@ class WorkspaceInitializer:
|
|
|
531
546
|
}
|
|
532
547
|
else:
|
|
533
548
|
# Generic relation
|
|
534
|
-
|
|
549
|
+
new_property_schema = {
|
|
535
550
|
"relation": {
|
|
536
551
|
"database_id": target_database_id,
|
|
537
552
|
"dual_property": {}
|
|
538
553
|
}
|
|
539
554
|
}
|
|
540
555
|
|
|
541
|
-
#
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
f"/databases/{database_id}",
|
|
545
|
-
json={"properties": schema}
|
|
546
|
-
)
|
|
556
|
+
# Send ONLY the new/updated property, not the entire schema
|
|
557
|
+
# This is the key fix - Notion API expects only the changed properties
|
|
558
|
+
update_payload = {"properties": {property_name: new_property_schema}}
|
|
547
559
|
|
|
548
|
-
|
|
560
|
+
# Update the database schema via API
|
|
561
|
+
try:
|
|
562
|
+
await self._client._api._request(
|
|
563
|
+
"PATCH",
|
|
564
|
+
f"/databases/{database_id}",
|
|
565
|
+
json=update_payload
|
|
566
|
+
)
|
|
567
|
+
logger.info(f"Added/Updated {property_name} relation to {target_database_id}")
|
|
568
|
+
except Exception as e:
|
|
569
|
+
# Debug: Print schema details to see what's wrong
|
|
570
|
+
import sys
|
|
571
|
+
print(f"\n{'='*60}", file=sys.stderr)
|
|
572
|
+
print(f"❌ FAILED TO ADD PROPERTY: {property_name}", file=sys.stderr)
|
|
573
|
+
print(f"Database ID: {database_id}", file=sys.stderr)
|
|
574
|
+
print(f"Target: {target_database_id}", file=sys.stderr)
|
|
575
|
+
print(f"Payload being sent:", file=sys.stderr)
|
|
576
|
+
import json
|
|
577
|
+
print(json.dumps(update_payload, indent=2), file=sys.stderr)
|
|
578
|
+
print(f"{'='*60}\n", file=sys.stderr)
|
|
579
|
+
raise e
|
|
549
580
|
|
|
550
581
|
def save_database_ids(self, path: Optional[Path] = None) -> None:
|
|
551
582
|
"""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.5 → better_notion-2.1.7}/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.5 → better_notion-2.1.7}/better_notion/plugins/official/agents_sdk/__init__.py
RENAMED
|
File without changes
|
{better_notion-2.1.5 → better_notion-2.1.7}/better_notion/plugins/official/agents_sdk/managers.py
RENAMED
|
File without changes
|
{better_notion-2.1.5 → better_notion-2.1.7}/better_notion/plugins/official/agents_sdk/models.py
RENAMED
|
File without changes
|
{better_notion-2.1.5 → better_notion-2.1.7}/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.5 → better_notion-2.1.7}/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
|
|
File without changes
|
{better_notion-2.1.5 → better_notion-2.1.7}/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
|