9.7 KiB
Graph Report - /Users/gurpreet/Github/Odoo-Modules/fusion_canada_post (2026-04-22)
Corpus Check
- 16 files · ~85,017 words
- Verdict: corpus is large enough that graph structure adds value.
Summary
- 147 nodes · 244 edges · 20 communities detected
- Extraction: 77% EXTRACTED · 23% INFERRED · 0% AMBIGUOUS · INFERRED: 57 edges (avg confidence: 0.68)
- Token cost: 0 input · 0 output
Community Hubs (Navigation)
- _COMMUNITY_Community 0
- _COMMUNITY_Community 1
- _COMMUNITY_Community 2
- _COMMUNITY_Community 3
- _COMMUNITY_Community 4
- _COMMUNITY_Community 5
- _COMMUNITY_Community 6
- _COMMUNITY_Community 7
- _COMMUNITY_Community 8
- _COMMUNITY_Community 9
- _COMMUNITY_Community 10
- _COMMUNITY_Community 11
- _COMMUNITY_Community 12
- _COMMUNITY_Community 13
- _COMMUNITY_Community 14
- _COMMUNITY_Community 15
- _COMMUNITY_Community 16
- _COMMUNITY_Community 17
- _COMMUNITY_Community 18
- _COMMUNITY_Community 19
God Nodes (most connected - your core abstractions)
Response- 37 edgesFusionCpShipment- 22 edgesDeliveryCarrier- 20 edgesResponseDataObject- 9 edgescreate()- 8 edgesdict2xml()- 5 edgesChooseDeliveryCarrier- 5 edgesattribute_check()- 3 edgessmart_encode()- 3 edgesSaleOrder- 3 edges
Surprising Connections (you probably didn't know these)
Open an attachment PDF in the browser viewer (new tab).--uses-->Response[INFERRED] /Users/gurpreet/Github/Odoo-Modules/fusion_canada_post/models/fusion_cp_shipment.py → /Users/gurpreet/Github/Odoo-Modules/fusion_canada_post/fusion_cp_api/fusion_cp_response.pyParse CP tracking detail response and store events.--uses-->Response[INFERRED] /Users/gurpreet/Github/Odoo-Modules/fusion_canada_post/models/fusion_cp_shipment.py → /Users/gurpreet/Github/Odoo-Modules/fusion_canada_post/fusion_cp_api/fusion_cp_response.pyAuto-update shipment status based on tracking data.--uses-->Response[INFERRED] /Users/gurpreet/Github/Odoo-Modules/fusion_canada_post/models/fusion_cp_shipment.py → /Users/gurpreet/Github/Odoo-Modules/fusion_canada_post/fusion_cp_api/fusion_cp_response.pyCheck if any tracking events indicate a return/RTS.--uses-->Response[INFERRED] /Users/gurpreet/Github/Odoo-Modules/fusion_canada_post/models/fusion_cp_shipment.py → /Users/gurpreet/Github/Odoo-Modules/fusion_canada_post/fusion_cp_api/fusion_cp_response.pyVoid this shipment via Canada Post API (DELETE endpoint).--uses-->Response[INFERRED] /Users/gurpreet/Github/Odoo-Modules/fusion_canada_post/models/fusion_cp_shipment.py → /Users/gurpreet/Github/Odoo-Modules/fusion_canada_post/fusion_cp_api/fusion_cp_response.py
Communities
Community 0 - "Community 0"
Cohesion: 0.08 Nodes (11): Cancel all CP shipments linked to this picking via void API., _cron_refresh_tracking(), FusionCpShipment, Open an attachment PDF in the browser viewer (new tab)., Check if any tracking events indicate a return/RTS., Void this shipment via Canada Post API (DELETE endpoint)., Parse a Canada Post error XML response and raise a clean ValidationError, Void current shipment and create a new one. (+3 more)
Community 1 - "Community 1"
Cohesion: 0.12
Nodes (12): DeliveryCarrier, get_fusion_cp_url(), Create a fusion.cp.shipment record from shipment result dict. Calle, Validate package dimensions and weight against Canada Post limits. pa, Get package dimensions in cm for Canada Post API. Uses the carrier's , Convert a dimension value to centimeters using the carrier's configured, Create one CP shipment for a single package. Returns dict with tracking, Post a single chatter message with combined shipping documents. Merges (+4 more)
Community 2 - "Community 2"
Cohesion: 0.19 Nodes (5): _pullval(), Response, Fetch latest tracking events from Canada Post VIS API., Auto-refresh tracking for all active (non-terminal) shipments., Parse return label response, download label PDF, store on shipment.
Community 3 - "Community 3"
Cohesion: 0.2 Nodes (13): attribute_check(), dict2xml(), get_dom_tree(), getNodeText(), getValue(), parse_yaml(), perftest_dict2xml(), python_2_unicode_compatible() (+5 more)
Community 4 - "Community 4"
Cohesion: 0.21 Nodes (6): ChooseDeliveryCarrier, Override: for Canada Post, fetch all rates for all packages., Build package_info dict for a single package, converted to cm., Fetch CP service rates for every package and aggregate., Override: store per-package info on the sale order and enhance the deliv, Return ALL available Canada Post service rates for the order.
Community 5 - "Community 5"
Cohesion: 0.2 Nodes (4): ChooseDeliveryCPPackage, ChooseDeliveryCPRate, Select this rate and deselect others. Update per-package costs., One package row in the Add Shipping wizard for Canada Post.
Community 6 - "Community 6"
Cohesion: 0.38 Nodes (1): ResponseDataObject
Community 7 - "Community 7"
Cohesion: 0.5 Nodes (1): SaleOrder
Community 8 - "Community 8"
Cohesion: 0.5 Nodes (1): StockPicking
Community 9 - "Community 9"
Cohesion: 0.67 Nodes (2): FusionCPOrderPackage, Stores per-package dimensions and service info on a sale order. Created whe
Community 10 - "Community 10"
Cohesion: 0.67 Nodes (1): ResCompany
Community 11 - "Community 11"
Cohesion: 1.0 Nodes (1): FusionCpTrackingEvent
Community 12 - "Community 12"
Cohesion: 1.0 Nodes (1): PackageType
Community 13 - "Community 13"
Cohesion: 1.0 Nodes (0):
Community 14 - "Community 14"
Cohesion: 1.0 Nodes (0):
Community 15 - "Community 15"
Cohesion: 1.0 Nodes (0):
Community 16 - "Community 16"
Cohesion: 1.0 Nodes (0):
Community 17 - "Community 17"
Cohesion: 1.0 Nodes (0):
Community 18 - "Community 18"
Cohesion: 1.0 Nodes (1): Pre-fill dimensions from selected box type.
Community 19 - "Community 19"
Cohesion: 1.0 Nodes (1): When a CP carrier is selected, create one default package.
Knowledge Gaps
- 15 isolated node(s):
This is simple approach to parsing a yaml config that is only intended for t,A decorator that defines __unicode__ and __str__ methods under Python 2. Und,Returns the node's text string.,One package row in the Add Shipping wizard for Canada Post.,Pre-fill dimensions from selected box type.(+10 more) These have ≤1 connection - possible missing edges or undocumented components. - Thin community
Community 11(2 nodes):FusionCpTrackingEvent,fusion_cp_tracking_event.pyToo small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 12(2 nodes):PackageType,product_packaging.pyToo small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 13(1 nodes):__init__.pyToo small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 14(1 nodes):__init__.pyToo small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 15(1 nodes):__init__.pyToo small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 16(1 nodes):__init__.pyToo small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 17(1 nodes):__manifest__.pyToo small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 18(1 nodes):Pre-fill dimensions from selected box type.Too small to be a meaningful cluster - may be noise or needs more connections extracted. - Thin community
Community 19(1 nodes):When a CP carrier is selected, create one default package.Too small to be a meaningful cluster - may be noise or needs more connections extracted.
Suggested Questions
Questions this graph is uniquely positioned to answer:
- Why does
ResponseconnectCommunity 2toCommunity 0,Community 1,Community 4? High betweenness centrality (0.262) - this node is a cross-community bridge. - Why does
FusionCpShipmentconnectCommunity 0toCommunity 1,Community 2? High betweenness centrality (0.134) - this node is a cross-community bridge. - Why does
ChooseDeliveryCarrierconnectCommunity 4toCommunity 5? High betweenness centrality (0.126) - this node is a cross-community bridge. - Are the 27 inferred relationships involving
Response(e.g. withFusionCpShipmentandOpen an attachment PDF in the browser viewer (new tab).) actually correct?Responsehas 27 INFERRED edges - model-reasoned connections that need verification. - Are the 5 inferred relationships involving
create()(e.g. with._update_cp_rates()and.get()) actually correct?create()has 5 INFERRED edges - model-reasoned connections that need verification. - What connects
This is simple approach to parsing a yaml config that is only intended for t,A decorator that defines __unicode__ and __str__ methods under Python 2. Und,Returns the node's text string.to the rest of the system? 15 weakly-connected nodes found - possible documentation gaps or missing edges. - Should
Community 0be split into smaller, more focused modules? Cohesion score 0.08 - nodes in this community are weakly interconnected.