Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
4b35912
feat(my_egeria): add experimental my_network script
pcoldico Oct 4, 2026
3b62625
wip(my_egeria): my_network loads profile and existing peers, links ne…
pcoldico Oct 5, 2026
357c960
tidying up the project files, moved a number of folders to deprecated…
pcoldico Oct 8, 2026
024c598
Further reformatting to clear out deprecated files and add in the use…
pcoldico Oct 8, 2026
f8b76d3
Updates to Support Custom Report Spec
pcoldico Oct 9, 2026
121c9b2
start of week clean up and synch
pcoldico Oct 13, 2026
9f2782f
feat(my_profile): add My Network option for managing peers
pcoldico Oct 15, 2026
5f945d8
fix(my_profile): stop Technology Types "go back" from crashing
pcoldico Oct 16, 2026
689ff46
docs(my_profile): document the My Network option
pcoldico Oct 16, 2026
04dd837
chore: revert machine-specific config.json and test edits
pcoldico Oct 16, 2026
a298d8f
test(my_profile): cover Technology Types go back and missing details
pcoldico Oct 16, 2026
f908442
fix(my_profile): restore Shop for Data go back and letter shortcuts
pcoldico Oct 16, 2026
039f2b7
Merge branch 'main' into my-profile-strict-tests
dwolfson Oct 16, 2026
76e6692
feat(my_profile): use one key binding convention on every screen
pcoldico Oct 16, 2026
7fe6997
Merge remote-tracking branch 'origin/my-profile-strict-tests' into my…
pcoldico Oct 16, 2026
0682b9c
feat(my_profile): make the Roles -> My Team view discoverable, change…
pcoldico Oct 18, 2026
0991406
Merge remote-tracking branch 'upstream/main' into my-profile-strict-t…
pcoldico Oct 18, 2026
3a017a8
Fix failing github scorecard check
pcoldico Oct 20, 2026
5c1beb7
Merge branch 'main' into my-profile-strict-tests
pcoldico Oct 20, 2026
fb20997
Updates to fix bugs found in testing
pcoldico Oct 22, 2026
0ef0011
Tidying up conflicting commits between my branch and upstream main
pcoldico Oct 23, 2026
26d2bbe
Updates to make switches more visible on screens that contain the tex…
pcoldico Oct 23, 2026
c4fde13
Concluding Merge
pcoldico Oct 24, 2026
4797a95
Renamed my_profile_app.py to my_egeria.py and deleted and otherwise t…
pcoldico Oct 26, 2026
c1bff75
Use the my_egeria name for the My Profile app module, manual and tests
pcoldico Oct 26, 2026
d24570c
Merge branch 'main' into my-profile-strict-tests
pcoldico Oct 26, 2026
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
2 changes: 1 addition & 1 deletion PYEGERIA_ISSUES.md
Original file line number Diff line number Diff line change
Expand Up @@ -2903,7 +2903,7 @@ member) shipped as `site-packages/my_egeria/my_egeria/...`. The four console scr
point at `my_egeria.main`, `my_egeria.serve`, `my_egeria.DemoCode...`, and the app's
own code imports `from my_egeria.<module>`, so none of it resolved outside this repo's
dev venv (where the workspace member is installed editable). The portal survived only
because its own script launched `my_profile_app.py` by **file path**, found with a glob
because its own script launched `my_egeria.py` by **file path**, found with a glob
for the nested layout.

**Fixed:** `where = [".", "my_egeria"]` with `namespaces = false`, so the inner
Expand Down
10 changes: 5 additions & 5 deletions docs/My-Egeria-Doc.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

# My Profile Application: Reference Guide

This guide explains how the **My Profile Application** (`my_profile_app.py`) is put together: its screens, the handler mixins behind them, the Egeria calls each flow makes, and the codes screens use to talk to the app. To learn how to *use* the app (configuration, starting it, keys), see the [My Profile App User Manual](my_profile_app_manual.md).
This guide explains how the **My Profile Application** (`my_egeria.py`) is put together: its screens, the handler mixins behind them, the Egeria calls each flow makes, and the codes screens use to talk to the app. To learn how to *use* the app (configuration, starting it, keys), see the [My Profile App User Manual](my_egeria_manual.md).

All source files named here are in `my_egeria/my_egeria/DemoCode/My_Profile/`.

Expand All @@ -13,7 +13,7 @@ All source files named here are in `my_egeria/my_egeria/DemoCode/My_Profile/`.

| File | Contents |
| :--- | :--- |
| `my_profile_app.py` | `MyProfileApp`: startup, profile loading, table population, menu dispatch, comments-from-main |
| `my_egeria.py` | `MyProfileApp`: startup, profile loading, table population, menu dispatch, comments-from-main |
| `MainScreen.py` | The dashboard: tables, Other Functions menu, row-selection tracking |
| `SplashScreen.py` | Welcome card and Change User |
| `CreateProfileScreen.py` | First-time profile creation |
Expand Down Expand Up @@ -597,7 +597,7 @@ Screens tell the app what to do next through their `dismiss(...)` value:
| `212` | Sample data |
| `250` | Show responses to a comment |

Failures use codes from the `4xx` range, and some of them exit the app. The [user manual](my_profile_app_manual.md#exit-and-return-codes) lists the common ones, and `RETURN_CODES.md` has the full list.
Failures use codes from the `4xx` range, and some of them exit the app. The [user manual](my_egeria_manual.md#exit-and-return-codes) lists the common ones, and `RETURN_CODES.md` has the full list.

---

Expand All @@ -614,15 +614,15 @@ The suite in `tests/micro-tests/my_profile/` has one module per handler and scre

**Running the whole app in a test.** Tests that run `MyProfileApp.run_test()` stub the profile client with `stub_profile_client()`.

**My Network.** `test_network_handler.py` covers `NetworkMixin` and `MyNetworkScreen`, including the remove confirmation; `test_my_profile_app.py` checks the menu routing. The feature has also been tested by hand against a live server.
**My Network.** `test_network_handler.py` covers `NetworkMixin` and `MyNetworkScreen`, including the remove confirmation; `test_my_egeria.py` checks the menu routing. The feature has also been tested by hand against a live server.

**Add screens.** `test_screens.py::TestBaseAddScreen` covers the `BaseAddScreen` flow: required-field checks, create, link or no link, and keeping the form after a failed create.

---

## Known Gaps

The user-visible limitations are listed in the [user manual](my_profile_app_manual.md#known-limitations). Other internal gaps:
The user-visible limitations are listed in the [user manual](my_egeria_manual.md#known-limitations). Other internal gaps:

- `get_data_product_catalog_table`, `get_guid_for_qualified_name`, `display_glossary_term_details`, `tech_type_processes_details`, `unpack_egeria_data` and `display_selected_data_specification` are defined but never called.
- Bookmarks, My Collections, team joining, subscription links and starting processes have only been tested against fakes; they haven't yet been run against a live Egeria server.
Expand Down
2 changes: 1 addition & 1 deletion docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ contributors who need more depth than the top-level `README.md`/`CLAUDE.md`/
|---|---|
| `developer_guide_pyegeria_textual.md` | Developer Guide for Python programmers new to Egeria and Textual — step-by-step examples (`examples/developer_guide/`), then My Profile, Dr.Egeria and hey_egeria as case studies. Screenshots in `images/developer-guide/`. |
| `dr_egeria_manual.md` | The Dr.Egeria user manual — command reference, markdown authoring conventions, attribute styles. |
| `my_profile_app_manual.md` | The My Profile App user manual — configuration, starting the app, change user, every screen and key, comments, feedback, return codes, known limitations, running the tests. |
| `my_egeria_manual.md` | The My Profile App user manual — configuration, starting the app, change user, every screen and key, comments, feedback, return codes, known limitations, running the tests. |
| `My-Egeria-Doc.md` | My Profile App reference guide — source layout, mixin structure, routing tables, Egeria calls and report specs per flow, flow and sequence diagrams. |
| `output-formats-and-report-specs.md` | How `generate_output()`/report specs work: `FormatSet`/`Format`/`Column`/`ActionParameter` models, analytic functions, chart output formats. |
| `reference-data-and-valid-metadata-mechanisms.md` | Reference data (business value lists) vs. valid metadata values (allowed values of Egeria's own properties): the types, pyegeria methods, Dr.Egeria Reference Data and Valid Metadata families, and live-verified behaviour. |
Expand Down
12 changes: 6 additions & 6 deletions docs/developer_guide_pyegeria_textual.md
Original file line number Diff line number Diff line change
Expand Up @@ -517,23 +517,23 @@ data"), subscribe to data products, comment on elements and leave feedback. It i
application, so it shows how the patterns from section 6 hold up at scale.

> **Source:** for what the app does from a user's point of view, see the
> [My Profile App User Manual](my_profile_app_manual.md). For its architecture, workflows and
> [My Profile App User Manual](my_egeria_manual.md). For its architecture, workflows and
> sequence diagrams in more depth, see [Egeria User Guide: My Profile Application](My-Egeria-Doc.md).
> This section picks out the patterns most useful to copy.

### 7.1 Running it

```bash
cd my_egeria/my_egeria/DemoCode/My_Profile
python my_profile_app.py
python my_egeria.py
```

When developing, run it under the Textual dev tools so you can see its log output. Start the
console in one terminal and the app in another:

```bash
textual console # terminal 1: shows self.log(...) output
textual run --dev my_profile_app.py # terminal 2
textual run --dev my_egeria.py # terminal 2
```

> **Pitfall:** make sure the `textual` command is the one from your project's `.venv`
Expand All @@ -557,15 +557,15 @@ All files are in

| File(s) | Role |
|---|---|
| `my_profile_app.py` | The `App` subclass, `MyProfileApp`: startup, loading the profile, filling the main tables, and shared actions such as comments. |
| `my_egeria.py` | The `App` subclass, `MyProfileApp`: startup, loading the profile, filling the main tables, and shared actions such as comments. |
| `MainScreen.py` | The main dashboard screen: its layout, and keeping track of which table and row are selected. |
| `*Screen.py`, `*Screens.py` | One class per screen or dialog: `SplashScreen`, `ShopForDataScreen`, `MyBookMarksScreen`, `AddCommentScreen`, the `Edit*`/`Add*` screens, and so on. |
| `*_handler.py` | **Mixins**, each holding one feature area's logic: `shop_for_data_handler.py`, `tech_types_handler.py`, `team_roles_handler.py`, `elements_crud_handler.py`, `feedback_handler.py`, `bookmarks_handler.py`. |
| `profile_utils.py` | Plain functions with no UI code: data clean-up, flattening Egeria elements (`element_summary`), reading a row's GUID and qualified name (`row_identity`), and the environment check. |
| `my_profile.tcss` | All the Textual CSS for the app. |
| `RETURN_CODES.md` | The catalogue of numeric codes that screens pass back through `dismiss()`. |

Two design choices keep `my_profile_app.py` manageable.
Two design choices keep `my_egeria.py` manageable.

**Feature logic lives in mixins.** The app class is assembled from them:

Expand Down Expand Up @@ -1032,7 +1032,7 @@ python examples/developer_guide/capture_screenshots.py
|---|---|
| [pyegeria Programming Guide](user_programming.md) | §3, §5 (summarised) |
| [Output Formats and Report Specs](output-formats-and-report-specs.md) | §4 |
| [My Profile App User Manual](my_profile_app_manual.md) | §7 |
| [My Profile App User Manual](my_egeria_manual.md) | §7 |
| [Egeria User Guide: My Profile Application](My-Egeria-Doc.md) | §7 |
| [My Profile return codes](../my_egeria/my_egeria/DemoCode/My_Profile/RETURN_CODES.md) | §7.6 |
| [My Profile tests](../tests/micro-tests/my_profile/README.md) | §10 |
Expand Down
6 changes: 3 additions & 3 deletions docs/my_profile_app_manual.md → docs/my_egeria_manual.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,9 +75,9 @@ From the app folder, inside the project's virtual environment:
my_profile # installed console script, runs from any directory
# or, from the app folder:
cd my_egeria/my_egeria/DemoCode/My_Profile
python my_profile_app.py
python my_egeria.py
# or, with the Textual developer console (needs textual-dev, a dev dependency):
textual run --dev my_profile_app.py
textual run --dev my_egeria.py
```

Use Python 3.13: Textual currently fails on Python 3.14 (an assertion in `textual/rlock.py` at startup).
Expand Down Expand Up @@ -321,7 +321,7 @@ The full list is in `RETURN_CODES.md` in the app folder.

## Troubleshooting

**The app exits immediately with code 430.** Your environment has an old pydantic, often because a globally installed `textual` was used. Activate the project's `.venv` and run `textual run --dev my_profile_app.py` or `python my_profile_app.py` from there.
**The app exits immediately with code 430.** Your environment has an old pydantic, often because a globally installed `textual` was used. Activate the project's `.venv` and run `textual run --dev my_egeria.py` or `python my_egeria.py` from there.

**The app exits with code 402.** The profile could not be retrieved. Check that:
- `EGERIA_PLATFORM_URL` is correct and reachable (VPN and firewall included);
Expand Down
2 changes: 1 addition & 1 deletion examples/developer_guide/capture_screenshots.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ async def capture_examples() -> None:


async def capture_my_profile() -> None:
from my_profile_app import MyProfileApp
from my_egeria.DemoCode.My_Profile.my_egeria import MyProfileApp

app = MyProfileApp()
async with app.run_test(size=SIZE) as pilot:
Expand Down
2 changes: 1 addition & 1 deletion my_egeria/EGERIA_WORKSPACES_INTEGRATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ compose startup. For **freshstart** they must be set per logged-in user
## Compose service — quickstart

Add one service per Textual app to `egeria-quickstart.yaml`.
`my_profile_app` is the first; additional apps follow the same pattern.
`my_egeria` (the My Profile app) is the first; additional apps follow the same pattern.

```yaml
my-profile:
Expand Down
2 changes: 1 addition & 1 deletion my_egeria/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ This package contains two Textual apps:
- **My Profile** (`DemoCode/My_Profile/`) — the actively developed app, and the one
the Egeria-Workspaces portal serves:
```bash
uv run my_profile # or: python -m my_egeria.DemoCode.My_Profile.my_profile_app
uv run my_profile # or: python -m my_egeria.DemoCode.My_Profile.my_egeria
```
- **MyEgeria** — the original glossary/collection browser (not under active
development; several of its secondary screens are incomplete):
Expand Down
28 changes: 0 additions & 28 deletions my_egeria/my_egeria/DemoCode/Deprecated/AddAssociationScreen.py

This file was deleted.

28 changes: 0 additions & 28 deletions my_egeria/my_egeria/DemoCode/Deprecated/AddBlogEntryScreen.py

This file was deleted.

58 changes: 0 additions & 58 deletions my_egeria/my_egeria/DemoCode/Deprecated/AddCommentScreen.py

This file was deleted.

28 changes: 0 additions & 28 deletions my_egeria/my_egeria/DemoCode/Deprecated/AddCommunityScreen.py

This file was deleted.

28 changes: 0 additions & 28 deletions my_egeria/my_egeria/DemoCode/Deprecated/AddJournalEntryScreen.py

This file was deleted.

28 changes: 0 additions & 28 deletions my_egeria/my_egeria/DemoCode/Deprecated/AddProjectScreen.py

This file was deleted.

Loading
Loading