-
Notifications
You must be signed in to change notification settings - Fork 591
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
FiftyOne Teams 1.7/FiftyOne v0.24.0 release notes #4433
Conversation
WalkthroughThe recent updates to FiftyOne include significant enhancements such as support for 3D meshes, custom workspaces, and new models in the zoo. Improvements span across the App, Core, Utils, Plugins, and Zoo sections, alongside fixes for various bugs. New tutorials and documentation updates further enrich user guidance, particularly in roles and permissions management and app customization. Changes
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (invoked as PR comments)
Additionally, you can add CodeRabbit Configration File (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
Review Details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Files ignored due to path filters (7)
docs/source/images/app/app-empty.gif
is excluded by!**/*.gif
,!**/*.gif
docs/source/images/app/app-empty.png
is excluded by!**/*.png
,!**/*.png
docs/source/images/app/app-expanded.gif
is excluded by!**/*.gif
,!**/*.gif
docs/source/images/app/app-filters.gif
is excluded by!**/*.gif
,!**/*.gif
docs/source/images/app/app-scroll.gif
is excluded by!**/*.gif
,!**/*.gif
docs/source/images/app/app-scrollable-tooltip.gif
is excluded by!**/*.gif
,!**/*.gif
docs/source/images/app/app-views1.gif
is excluded by!**/*.gif
,!**/*.gif
Files selected for processing (3)
- docs/source/release-notes.rst (2 hunks)
- docs/source/user_guide/app.rst (3 hunks)
- docs/source/user_guide/using_datasets.rst (1 hunks)
Additional comments not posted (17)
docs/source/user_guide/app.rst (2)
56-59
: Added an image for an empty app.This addition provides a visual aid that can help users understand the appearance of the app when no data is loaded, enhancing the documentation's clarity and usefulness.
1094-1107
: Added details about customizing tooltip attributes in the label editor.This update improves the documentation by explaining how users can interact with and customize tooltips, which enhances the user experience by allowing for a more tailored interaction with the app.
docs/source/release-notes.rst (15)
23-23
: Ensure the reference link for3D meshes and 3D geometries
is correctly set up in the documentation.Verification successful
The reference link for
3D meshes and 3D geometries
is correctly set up in the documentation.
- The reference
.. _3d-datasets:
was found indocs/source/user_guide/using_datasets.rst
.Scripts Executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify the reference link for 3D meshes and 3D geometries. ast-grep --lang rst --pattern $'.. _3d-datasets: $$$'Length of output: 161
Script:
#!/bin/bash # Description: Verify the reference link for 3D meshes and 3D geometries using ripgrep. rg --glob '*.rst' '.. _3d-datasets:'Length of output: 97
46-46
: Ensure themedia_fallback
option is implemented correctly in the dataset App config.Verification successful
The
media_fallback
option is implemented in the codebase as follows:
- Defined as a boolean with a default value of
False
infiftyone/server/query.py
.- Documented in
fiftyone/core/odm/dataset.py
with a description.- Configured in
fiftyone/core/config.py
.These implementations confirm that the
media_fallback
option is correctly integrated into the dataset App config.
fiftyone/server/query.py
fiftyone/core/odm/dataset.py
fiftyone/core/config.py
Scripts Executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify the implementation of the media_fallback option. rg --type python 'media_fallback'Length of output: 64
Script:
#!/bin/bash # Description: Verify the implementation of the media_fallback option. rg --type py 'media_fallback'Length of output: 457
2695-2695
: Ensure theapp_config
property is correctly implemented for configuring App behavior on a per-dataset basis.Verification successful
The
app_config
property is indeed implemented and used across various parts of the codebase, including core modules, tests, and configuration files. Here are some key locations whereapp_config
is defined and utilized:
Definition and Usage in Core Modules:
fiftyone/core/view.py
fiftyone/core/dataset.py
fiftyone/core/state.py
fiftyone/core/session/session.py
fiftyone/core/odm/dataset.py
fiftyone/core/config.py
Tests:
tests/unittests/plugins/core_tests.py
tests/unittests/import_export_tests.py
tests/unittests/dataset_tests.py
Other Modules:
fiftyone/utils/data/importers.py
fiftyone/utils/data/exporters.py
fiftyone/migrations/revisions/v0_17_0.py
fiftyone/migrations/revisions/v0_18_0.py
fiftyone/migrations/revisions/v0_20_0.py
fiftyone/migrations/revisions/v0_23_0.py
fiftyone/server/query.py
fiftyone/server/mutation.py
fiftyone/server/metadata.py
fiftyone/server/color.py
fiftyone/plugins/core.py
Given the extensive presence and usage of
app_config
across the codebase, it appears to be correctly implemented for configuring App behavior on a per-dataset basis.Scripts Executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify the implementation of app_config property. rg --type python 'app_config'Length of output: 60
Script:
#!/bin/bash # Description: Verify the implementation of app_config property. rg --type py 'app_config'Length of output: 11359
25-25
: Confirm that thequickstart-3d dataset
is properly documented and accessible.Verification successful
The
quickstart-3d dataset
is properly documented and accessible in the following locations:
docs/source/release-notes.rst
docs/source/user_guide/using_datasets.rst
docs/source/user_guide/dataset_zoo/datasets.rst
Scripts Executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify the documentation for the quickstart-3d dataset. ast-grep --lang rst --pattern $'.. _dataset-zoo-quickstart-3d: $$$'Length of output: 175
Script:
#!/bin/bash # Description: Verify the documentation for the quickstart-3d dataset. rg 'dataset-zoo-quickstart-3d' --glob '*.rst'Length of output: 545
103-103
: Ensure numpy dtypes are supported when serializing operator results.Verification successful
Ensure numpy dtypes are supported when serializing operator results.
The search results indicate that numpy arrays are serialized and deserialized using functions like
serialize_numpy_array
anddeserialize_numpy_array
in various parts of the codebase, particularly infiftyone/core/fields.py
,fiftyone/core/odm/utils.py
, andfiftyone/core/utils.py
. This suggests that numpy dtypes are indeed supported during serialization.
- fiftyone/core/fields.py: Lines involving
serialize_numpy_array
anddeserialize_numpy_array
.- fiftyone/core/odm/utils.py: Functions
serialize_value
anddeserialize_value
handle numpy arrays.- fiftyone/core/utils.py: Functions
serialize_numpy_array
anddeserialize_numpy_array
.Scripts Executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify support for numpy dtypes in serialization. rg --type python 'numpy dtypes'Length of output: 64
Script:
#!/bin/bash # Description: Verify support for numpy dtypes in serialization. rg --type py 'numpy dtypes'Length of output: 29
Script:
#!/bin/bash # Search for numpy imports to identify relevant files. rg --type py 'import numpy' --files-with-matches | xargs rg 'serialize'Length of output: 9973
77-77
: Ensure the timezone bug fix for GMT+ users is effective.Verification successful
The broader search revealed multiple instances related to timezone handling and
DateField
across various files, including tests and core functionality. This indicates that the timezone handling, including potential fixes for GMT+ users, is indeed present and tested in the codebase.Key locations:
tests/unittests/dataset_tests.py
: Contains tests ensuringDateField
is not affected by timezone changes and includes specific mentions of GMT+.fiftyone/core/fields.py
: Contains logic related to timezone handling forDateField
.fiftyone/core/config.py
: Manages timezone configurations.These findings suggest that the timezone bug fix for GMT+ users is implemented and tested.
Scripts Executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify the timezone bug fix for GMT+ users. rg --type python 'timezone bug'Length of output: 64
Script:
#!/bin/bash # Description: Verify the timezone bug fix for GMT+ users. rg --type py 'timezone bug'Length of output: 29
Script:
#!/bin/bash # Description: Broaden the search to verify the timezone bug fix for GMT+ users. rg --type py 'timezone|GMT|DateField'Length of output: 4901
82-82
: Confirm support for non-sequential category IDs in COCO format.
27-27
: Check that the documentation forsaving custom workspaces
is complete and up-to-date.Verification successful
The documentation for
saving custom workspaces
appears to be complete and up-to-date. The relevant section is present indocs/source/user_guide/app.rst
under theSaving workspaces
heading, which provides detailed instructions on saving and managing workspaces both through the app interface and programmatically.
docs/source/user_guide/app.rst
: Contains comprehensive documentation on saving custom workspaces.Scripts Executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify the documentation for saving custom workspaces. ast-grep --lang rst --pattern $'.. _app-workspaces: $$$'Length of output: 164
Script:
#!/bin/bash # Description: Search for references to `app-workspaces` in the documentation files. rg 'app-workspaces' docs/source/Length of output: 183
Script:
#!/bin/bash # Description: Display the content of `docs/source/user_guide/app.rst` to verify the documentation for `saving custom workspaces`. cat docs/source/user_guide/app.rstLength of output: 89849
99-99
: Check that theset_spaces()
method allows setting the current spaces layout from operators as intended.
2694-2694
: Verify the implementation of support for point cloud samples in grouped datasets.Verification successful
The implementation of support for point cloud samples in grouped datasets has been verified. The function
pcd_to_3d
infiftyone/utils/utils3d.py
includes handling for point cloud slices in grouped datasets.
fiftyone/utils/utils3d.py
, functionpcd_to_3d
Scripts Executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify support for point cloud samples. rg --type python 'point cloud samples'Length of output: 71
Script:
#!/bin/bash # Description: Verify support for point cloud samples. rg --type py 'point cloud samples'Length of output: 138
Script:
#!/bin/bash # Extract the relevant code snippet from fiftyone/utils/utils3d.py to verify the implementation. rg --type py --context 10 'point cloud samples' fiftyone/utils/utils3d.pyLength of output: 782
69-71
: Confirm robust path normalization for FiftyOneDataset imports across different operating systems.
67-67
: Check for proper handling of None-valuedtags
fields in the codebase.
33-33
: Review the implementation details for the lazy database connection to ensure it aligns with best practices.Verification successful
The broader search terms yielded a large number of results, but none of them specifically indicate the implementation of a lazy database connection. To narrow down the search, we should focus on the files and methods that are likely to handle database connections directly.
Let's search for specific database connection methods and classes, such as those involving MongoDB, and look for any changes or comments indicating lazy initialization.
The search results indicate that the database connection logic is primarily handled in
fiftyone/core/odm/database.py
. The presence of functions likeensure_connection
,_connect
, andconnect
suggests that this file is responsible for managing database connections.However, there is no explicit mention of lazy initialization in the search results. To confirm whether lazy initialization is implemented, we need to inspect the
ensure_connection
and_connect
functions in detail to see if they defer the connection until it is actually needed.Let's extract the relevant functions from
fiftyone/core/odm/database.py
to review their implementation.
The
ast-grep
command failed due to syntax issues in the pattern. To correct this, we should use a simpler pattern to match function definitions and extract their content.Let's retry with a corrected pattern to extract the
ensure_connection
and_connect
functions fromfiftyone/core/odm/database.py
.
The previous attempts to extract the functions did not yield any results. To ensure we capture the full implementation of the
ensure_connection
and_connect
functions, let's directly search for these function definitions and their content usingrg
with a more targeted approach.
The extracted functions
ensure_connection
and_connect
fromfiftyone/core/odm/database.py
indicate that the database connection is established only when_connect
is called. This suggests that the connection is indeed lazy, as it is deferred untilensure_connection
or another function requiring a connection is invoked.Here are the relevant parts of the code:
ensure_connection
function:def ensure_connection(): """Ensures database connection exists""" _connect()
_connect
function:def _connect(): global _client if _client is None: global _connection_kwargs establish_db_conn(fo.config)These functions confirm that the database connection is established only when
_connect
is called, which aligns with the lazy initialization approach.Scripts Executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify the implementation of lazy database connection. rg --type python 'lazy database connection'Length of output: 76
Script:
#!/bin/bash # Description: Verify the implementation of lazy database connection. rg --type py 'lazy connection|lazy database connection|connect when needed'Length of output: 77
Script:
#!/bin/bash # Description: Verify the implementation of lazy database connection by searching for broader terms. rg --type py 'connect|database|lazy|init|initialize'Length of output: 134933
Script:
#!/bin/bash # Description: Search for specific database connection methods and classes to verify lazy initialization. rg --type py 'connect|database|lazy|init|initialize' fiftyone/core/odm/database.py fiftyone/core/odm/__init__.py fiftyone/core/odm/document.pyLength of output: 7706
Script:
#!/bin/bash # Extract the ensure_connection and _connect functions from fiftyone/core/odm/database.py ast-grep --lang python --pattern $'def ensure_connection() { $$$ }' fiftyone/core/odm/database.py ast-grep --lang python --pattern $'def _connect() { $$$ }' fiftyone/core/odm/database.pyLength of output: 1095
Script:
#!/bin/bash # Extract the ensure_connection and _connect functions from fiftyone/core/odm/database.py ast-grep --lang python --pattern 'function_definition' fiftyone/core/odm/database.py | grep -A 20 'def ensure_connection' ast-grep --lang python --pattern 'function_definition' fiftyone/core/odm/database.py | grep -A 20 'def _connect'Length of output: 234
Script:
#!/bin/bash # Extract the ensure_connection and _connect functions from fiftyone/core/odm/database.py using ripgrep rg 'def ensure_connection' -A 20 fiftyone/core/odm/database.py rg 'def _connect' -A 20 fiftyone/core/odm/database.pyLength of output: 1022
109-109
: Confirm the correction of logging syntax in theset_progress()
operation.Verification successful
The
set_progress
methods in the identified files do not contain any logging statements that need correction. The methods either update progress directly or trigger progress updates without logging.
fiftyone/operators/delegated.py
: Updates progress via_repo.update_progress
.fiftyone/operators/executor.py
: Logs progress usingself.log
if_set_progress
is not set.fiftyone/operators/operations.py
: Triggers progress updates via_ctx.trigger
.No issues found with logging syntax in these methods.
Scripts Executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify the logging syntax correction in set_progress. rg --type python 'set_progress'Length of output: 62
Script:
#!/bin/bash # Description: Verify the logging syntax correction in set_progress. rg --type py 'def set_progress'Length of output: 299
Script:
#!/bin/bash # Description: Inspect logging syntax in set_progress methods. rg --type py --context 5 'def set_progress' fiftyone/operators/executor.py fiftyone/operators/operations.py fiftyone/operators/delegated.pyLength of output: 2362
Script:
#!/bin/bash # Description: Inspect logging statements in set_progress methods. rg --type py --context 5 'logging\.' fiftyone/operators/executor.py fiftyone/operators/operations.py fiftyone/operators/delegated.pyLength of output: 2023
Script:
#!/bin/bash # Description: Extract the full bodies of the set_progress methods for manual inspection. ast-grep --lang python --pattern $'def set_progress($_, $$$) {\n $$$\n}' fiftyone/operators/executor.py fiftyone/operators/operations.py fiftyone/operators/delegated.pyLength of output: 626
Script:
#!/bin/bash # Description: Extract the full bodies of the set_progress methods for manual inspection. ast-grep --lang python --pattern 'def set_progress($$) { $$ }' fiftyone/operators/executor.py fiftyone/operators/operations.py fiftyone/operators/delegated.pyLength of output: 505
Script:
#!/bin/bash # Description: Extract larger context around set_progress methods for manual inspection. rg --type py --context 20 'def set_progress' fiftyone/operators/executor.py fiftyone/operators/operations.py fiftyone/operators/delegated.pyLength of output: 8061
86-86
: Review the implementation of the DeepSort tracking utility to ensure it meets the specified requirements.Verification successful
The
DeepSort
class is implemented infiftyone/utils/tracking/deepsort.py
and includes methods for tracking objects in video samples using the DeepSort algorithm. The implementation appears to meet the specified requirements for object tracking.
- The
track
method processes a collection of video samples.- The
track_sample
method handles individual video samples.- The class uses the
deep_sort_realtime
package for tracking.Scripts Executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify the implementation of DeepSort tracking utility. rg --type python 'DeepSort'Length of output: 58
Script:
#!/bin/bash # Description: Verify the implementation of DeepSort tracking utility. ast-grep --lang python --pattern $'class DeepSort($_, $_) { $$$ }'Length of output: 520
Script:
#!/bin/bash # Description: Verify the implementation of DeepSort tracking utility. ast-grep --lang python --pattern 'class DeepSort'Length of output: 396
Script:
#!/bin/bash # Description: Verify the implementation of DeepSort tracking utility. rg 'class DeepSort'Length of output: 81
Script:
#!/bin/bash # Description: Extract the implementation of the DeepSort class. ast-grep --lang python --pattern 'class DeepSort' fiftyone/utils/tracking/deepsort.pyLength of output: 432
Script:
#!/bin/bash # Description: Display the contents of the file containing the DeepSort class. cat fiftyone/utils/tracking/deepsort.pyLength of output: 6365
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It looks good to me! I added two additional bullets for features that I think are relevant to call out, but up to you if you want to include them or left them out for a reason.
- Added a | ||
:meth:`set_spaces() <fiftyone.operators.operations.Operations.set_spaces>` | ||
method for setting the current spaces layout from operators | ||
`#4381 <https://github.com/voxel51/fiftyone/pull/4381>`_ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
`#4381 <https://github.com/voxel51/fiftyone/pull/4381>`_ | |
`#4381 <https://github.com/voxel51/fiftyone/pull/4381>`_ | |
- Added a :class:`DrawerView <fiftyone.operators.types.DrawerView>` | |
to render your operators in a side Drawer in the grid and sample modal | |
`#4240 <https://github.com/voxel51/fiftyone/pull/4240>`_ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Missed this one, thanks!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
Review Details
Configuration used: .coderabbit.yaml
Review profile: CHILL
Files ignored due to path filters (1)
docs/source/images/teams/admin_roles_page.png
is excluded by!**/*.png
,!**/*.png
Files selected for processing (3)
- docs/source/release-notes.rst (2 hunks)
- docs/source/teams/roles_and_permissions.rst (1 hunks)
- docs/source/user_guide/using_datasets.rst (1 hunks)
Files skipped from review due to trivial changes (1)
- docs/source/teams/roles_and_permissions.rst
Files skipped from review as they are similar to previous changes (2)
- docs/source/release-notes.rst
- docs/source/user_guide/using_datasets.rst
Summary by CodeRabbit
New Features
Improvements
Bug Fixes
Documentation