Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
157 changes: 157 additions & 0 deletions .codeboarding/Object_Oriented_API_Layer_DTOs.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,157 @@
```mermaid

graph LR

Object_Oriented_Galaxy_Instance["Object-Oriented Galaxy Instance"]

Object_Oriented_Clients_ObjClients_["Object-Oriented Clients (ObjClients)"]

Data_Transfer_Objects_DTOs_Wrappers["Data Transfer Objects (DTOs) / Wrappers"]

Core_Client_Connection_Layer["Core Client/Connection Layer"]

Resource_Specific_Modules_Facades_["Resource-Specific Modules (Facades)"]

Object_Oriented_Galaxy_Instance -- "instantiates and manages" --> Object_Oriented_Clients_ObjClients_

Object_Oriented_Galaxy_Instance -- "utilizes" --> Core_Client_Connection_Layer

Object_Oriented_Clients_ObjClients_ -- "managed by" --> Object_Oriented_Galaxy_Instance

Object_Oriented_Clients_ObjClients_ -- "returns" --> Data_Transfer_Objects_DTOs_Wrappers

Object_Oriented_Clients_ObjClients_ -- "utilizes" --> Resource_Specific_Modules_Facades_

Data_Transfer_Objects_DTOs_Wrappers -- "holds reference to" --> Object_Oriented_Galaxy_Instance

Resource_Specific_Modules_Facades_ -- "utilizes" --> Core_Client_Connection_Layer

```



[![CodeBoarding](https://img.shields.io/badge/Generated%20by-CodeBoarding-9cf?style=flat-square)](https://github.com/CodeBoarding/GeneratedOnBoardings)[![Demo](https://img.shields.io/badge/Try%20our-Demo-blue?style=flat-square)](https://www.codeboarding.org/demo)[![Contact](https://img.shields.io/badge/Contact%20us%20-%[email protected]?style=flat-square)](mailto:[email protected])



## Details



The `Object-Oriented API Layer & DTOs` component in `bioblend` provides a high-level, Pythonic interface for interacting with the Galaxy API, abstracting away direct API calls. It achieves this through a structured design involving a central instance, specialized clients, and data transfer objects (DTOs) that wrap Galaxy entities.



### Object-Oriented Galaxy Instance

This component serves as the primary entry point for the object-oriented API layer. It initializes and manages the various object-oriented clients and provides a high-level interface to interact with the Galaxy instance using Python objects. It acts as the central orchestrator for the object-oriented paradigm.





**Related Classes/Methods**:



- <a href="https://github.com/galaxyproject/bioblend/blob/main/bioblend/galaxy/objects/galaxy_instance.py#L1-L1" target="_blank" rel="noopener noreferrer">`bioblend.galaxy.objects.galaxy_instance.GalaxyInstance` (1:1)</a>





### Object-Oriented Clients (ObjClients)

These are specialized clients that provide object-oriented methods for interacting with specific Galaxy entities (e.g., histories, datasets, workflows). They abstract the underlying API calls and operate on the DTOs/Wrappers, simplifying resource-specific operations.





**Related Classes/Methods**:



- <a href="https://github.com/galaxyproject/bioblend/blob/main/bioblend/galaxy/objects/client.py#L1-L1" target="_blank" rel="noopener noreferrer">`bioblend.galaxy.objects.client.ObjClient` (1:1)</a>

- <a href="https://github.com/galaxyproject/bioblend/blob/main/bioblend/galaxy/objects/client.py#L1-L1" target="_blank" rel="noopener noreferrer">`bioblend.galaxy.objects.client.ObjHistoryClient` (1:1)</a>

- <a href="https://github.com/galaxyproject/bioblend/blob/main/bioblend/galaxy/objects/client.py#L1-L1" target="_blank" rel="noopener noreferrer">`bioblend.galaxy.objects.client.ObjDatasetClient` (1:1)</a>

- <a href="https://github.com/galaxyproject/bioblend/blob/main/bioblend/galaxy/objects/client.py#L1-L1" target="_blank" rel="noopener noreferrer">`bioblend.galaxy.objects.client.ObjWorkflowClient` (1:1)</a>





### Data Transfer Objects (DTOs) / Wrappers

This component comprises Python classes that wrap Galaxy API entities (like histories, datasets, jobs, workflows) as native Python objects. These objects provide attributes for accessing entity properties and methods for direct manipulation, state refreshing, and interaction with the Galaxy instance, abstracting away direct API calls.





**Related Classes/Methods**:



- <a href="https://github.com/galaxyproject/bioblend/blob/main/bioblend/galaxy/objects/wrappers.py#L63-L167" target="_blank" rel="noopener noreferrer">`bioblend.galaxy.objects.wrappers.Wrapper` (63:167)</a>

- <a href="https://github.com/galaxyproject/bioblend/blob/main/bioblend/galaxy/objects/wrappers.py#L1311-L1520" target="_blank" rel="noopener noreferrer">`bioblend.galaxy.objects.wrappers.History` (1311:1520)</a>

- <a href="https://github.com/galaxyproject/bioblend/blob/main/bioblend/galaxy/objects/wrappers.py#L854-L965" target="_blank" rel="noopener noreferrer">`bioblend.galaxy.objects.wrappers.Dataset` (854:965)</a>

- <a href="https://github.com/galaxyproject/bioblend/blob/main/bioblend/galaxy/objects/wrappers.py#L275-L652" target="_blank" rel="noopener noreferrer">`bioblend.galaxy.objects.wrappers.Workflow` (275:652)</a>

- <a href="https://github.com/galaxyproject/bioblend/blob/main/bioblend/galaxy/objects/wrappers.py#L655-L848" target="_blank" rel="noopener noreferrer">`bioblend.galaxy.objects.wrappers.Invocation` (655:848)</a>





### Core Client/Connection Layer

This component handles the low-level HTTP requests and responses to the Galaxy API. It provides the fundamental communication mechanism for all higher-level clients, ensuring reliable interaction with the Galaxy server.





**Related Classes/Methods**:



- <a href="https://github.com/galaxyproject/bioblend/blob/main/bioblend/galaxyclient.py#L1-L1" target="_blank" rel="noopener noreferrer">`bioblend.galaxyclient.GalaxyClient` (1:1)</a>





### Resource-Specific Modules (Facades)

These modules provide a more direct, procedural interface to specific Galaxy API resources, acting as facades over the core client. The object-oriented clients often utilize these under the hood to perform specific API operations before wrapping the results in DTOs.





**Related Classes/Methods**:



- <a href="https://github.com/galaxyproject/bioblend/blob/main/bioblend/galaxy/client.py#L1-L1" target="_blank" rel="noopener noreferrer">`bioblend.galaxy.client.Client` (1:1)</a>

- `bioblend.galaxy.histories.HistoryClient` (1:1)

- `bioblend.galaxy.datasets.DatasetClient` (1:1)









### [FAQ](https://github.com/CodeBoarding/GeneratedOnBoardings/tree/main?tab=readme-ov-file#faq)
209 changes: 209 additions & 0 deletions .codeboarding/Shared_Utilities.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,209 @@
```mermaid

graph LR

Shared_Utilities["Shared Utilities"]

API_Client_Core["API Client Core"]

Galaxy_Resource_Clients["Galaxy Resource Clients"]

Tool_Shed_Resource_Clients["Tool Shed Resource Clients"]

Data_Object_Wrappers["Data Object Wrappers"]

Tool_Input_Builders["Tool Input Builders"]

API_Client_Core -- "Uses" --> Shared_Utilities

API_Client_Core -- "Interacts with" --> Galaxy_Resource_Clients

Galaxy_Resource_Clients -- "Uses" --> API_Client_Core

Galaxy_Resource_Clients -- "Uses" --> Data_Object_Wrappers

Galaxy_Resource_Clients -- "Uses" --> Tool_Input_Builders

Tool_Shed_Resource_Clients -- "Uses" --> API_Client_Core

Tool_Shed_Resource_Clients -- "Uses" --> Shared_Utilities

Data_Object_Wrappers -- "Uses" --> Shared_Utilities

Tool_Input_Builders -- "Uses" --> Shared_Utilities

click Shared_Utilities href "https://github.com/galaxyproject/bioblend/blob/main/.codeboarding//Shared_Utilities.md" "Details"

```



[![CodeBoarding](https://img.shields.io/badge/Generated%20by-CodeBoarding-9cf?style=flat-square)](https://github.com/CodeBoarding/GeneratedOnBoardings)[![Demo](https://img.shields.io/badge/Try%20our-Demo-blue?style=flat-square)](https://www.codeboarding.org/demo)[![Contact](https://img.shields.io/badge/Contact%20us%20-%[email protected]?style=flat-square)](mailto:[email protected])



## Details



One paragraph explaining the functionality which is represented by this graph. What the main flow is and what is its purpose.



### Shared Utilities [[Expand]](./Shared_Utilities.md)

This component aggregates general-purpose helper functions and modules that are utilized across various parts of the `bioblend` library. This includes utilities for common tasks such as file attachment, managing asynchronous operations (e.g., waiting for jobs or datasets to complete), and structured input building for complex tool and workflow parameters. It provides reusable functionalities that support the higher-level API interactions.





**Related Classes/Methods**:



- `bioblend/util` (1:1)





### API Client Core

Provides the foundational layer for connecting to and interacting with the Galaxy and Tool Shed APIs. It manages authentication, request dispatching, and response handling.





**Related Classes/Methods**:



- <a href="https://github.com/galaxyproject/bioblend/blob/main/bioblend/galaxyclient.py#L1-L1" target="_blank" rel="noopener noreferrer">`bioblend/galaxyclient` (1:1)</a>

- `bioblend/toolshed` (1:1)





### Galaxy Resource Clients

A collection of client classes, each dedicated to managing specific resources within the Galaxy platform (e.g., histories, datasets, tools, workflows, users, libraries, jobs, etc.). They act as facades over the core API client, providing high-level, resource-specific methods.





**Related Classes/Methods**:



- `bioblend/galaxy/histories` (1:1)

- `bioblend/galaxy/tools` (1:1)

- `bioblend/galaxy/workflows` (1:1)

- `bioblend/galaxy/datasets` (1:1)

- `bioblend/galaxy/dataset_collections` (1:1)

- `bioblend/galaxy/datatypes` (1:1)

- `bioblend/galaxy/ftpfiles` (1:1)

- `bioblend/galaxy/genomes` (1:1)

- `bioblend/galaxy/invocations` (1:1)

- `bioblend/galaxy/jobs` (1:1)

- `bioblend/galaxy/libraries` (1:1)

- `bioblend/galaxy/quotas` (1:1)

- `bioblend/galaxy/roles` (1:1)

- `bioblend/galaxy/tool_data` (1:1)

- `bioblend/galaxy/tool_dependencies` (1:1)

- `bioblend/galaxy/users` (1:1)

- `bioblend/galaxy/visual` (1:1)

- `bioblend/galaxy/forms` (1:1)

- `bioblend/galaxy/groups` (1:1)

- `bioblend/galaxy/container_resolution` (1:1)





### Tool Shed Resource Clients

Similar to Galaxy Resource Clients, these classes provide high-level interfaces for interacting with resources specific to the Galaxy Tool Shed, such as repositories, categories, and tools.





**Related Classes/Methods**:



- `bioblend/toolshed/repositories` (1:1)

- `bioblend/toolshed/categories` (1:1)

- `bioblend/toolshed/tools` (1:1)





### Data Object Wrappers

Defines Python classes that encapsulate the data structures returned by the Galaxy API. These objects provide a more Pythonic and convenient way to access and manipulate API data, abstracting the raw JSON responses.





**Related Classes/Methods**:



- <a href="https://github.com/galaxyproject/bioblend/blob/main/bioblend/galaxy/objects/wrappers.py#L1-L1" target="_blank" rel="noopener noreferrer">`bioblend/galaxy/objects/wrappers` (1:1)</a>





### Tool Input Builders

Provides classes and functions specifically designed to help construct the complex input parameters required for executing tools and workflows on the Galaxy platform. This ensures correct formatting and validation of inputs.





**Related Classes/Methods**:



- <a href="https://github.com/galaxyproject/bioblend/blob/main/bioblend/galaxy/tools/inputs.py#L1-L1" target="_blank" rel="noopener noreferrer">`bioblend/galaxy/tools/inputs` (1:1)</a>









### [FAQ](https://github.com/CodeBoarding/GeneratedOnBoardings/tree/main?tab=readme-ov-file#faq)
Loading