Files
ENI-projet-piscine/apps/backend/coverage.lcov

3071 lines
39 KiB
Plaintext

SF:app\__init__.py
end_of_record
SF:app\api\__init__.py
end_of_record
SF:app\api\deps.py
DA:8,1
DA:9,1
DA:10,1
DA:11,1
DA:13,1
DA:14,1
DA:15,1
DA:17,1
DA:18,1
DA:19,1
DA:20,1
DA:21,1
DA:22,1
DA:23,1
DA:24,1
DA:25,1
DA:26,1
DA:27,1
DA:28,1
DA:29,1
DA:30,1
DA:31,1
DA:32,1
DA:33,1
DA:34,1
DA:35,1
DA:36,1
DA:37,1
DA:38,1
DA:39,1
DA:40,1
DA:41,1
DA:42,1
DA:44,1
DA:45,1
DA:47,1
DA:49,1
DA:50,1
DA:53,1
DA:54,1
DA:61,1
DA:62,1
DA:72,1
DA:73,1
DA:76,1
DA:84,1
DA:85,1
DA:93,1
DA:97,1
DA:98,0
DA:99,0
DA:100,0
DA:101,1
DA:104,1
DA:105,1
DA:119,1
DA:126,1
DA:154,1
DA:157,1
DA:161,0
DA:170,1
DA:173,1
DA:174,1
DA:177,1
DA:180,1
DA:181,1
DA:184,1
DA:187,1
DA:188,1
DA:191,1
DA:194,1
DA:195,0
DA:198,1
DA:201,1
DA:202,1
DA:205,1
DA:208,1
DA:209,0
DA:212,1
DA:215,1
DA:220,1
DA:221,1
DA:223,1
DA:224,1
DA:225,1
DA:226,0
DA:227,1
DA:228,1
DA:230,0
DA:231,0
DA:232,0
DA:236,0
DA:237,0
DA:238,0
DA:239,0
DA:241,0
DA:250,1
DA:253,1
DA:254,1
DA:255,1
DA:256,1
DA:259,1
DA:260,1
DA:261,1
DA:263,1
DA:266,1
DA:267,1
DA:268,1
DA:271,1
DA:274,1
DA:275,1
DA:276,1
DA:277,1
DA:278,1
LF:114
LH:99
FN:53,58,_non_authentifie
FNDA:1,_non_authentifie
FN:61,67,get_token_policy
FNDA:1,get_token_policy
FN:73,81,_hasher_cache
FNDA:1,_hasher_cache
FN:84,90,get_hasher
FNDA:1,get_hasher
FN:93,101,get_client_ip
FNDA:1,get_client_ip
FN:104,116,get_mailer
FNDA:1,get_mailer
FN:119,151,get_auth_service
FNDA:1,get_auth_service
FN:157,167,get_user_service
FNDA:0,get_user_service
FN:173,174,get_site_service
FNDA:1,get_site_service
FN:180,181,get_alert_service
FNDA:1,get_alert_service
FN:187,188,get_recommendation_service
FNDA:1,get_recommendation_service
FN:194,195,get_stats_service
FNDA:0,get_stats_service
FN:201,202,get_reading_service
FNDA:1,get_reading_service
FN:208,209,get_sensor_service
FNDA:0,get_sensor_service
FN:215,247,get_current_principal
FNDA:1,get_current_principal
FN:253,263,require_role
FNDA:1,require_role
FN:254,261,require_role.garde
FNDA:1,require_role.garde
FN:271,278,require_trusted_origin
FNDA:1,require_trusted_origin
FNF:18
FNH:15
BRDA:97,0,jump to line 98,0
BRDA:97,0,jump to line 101,1
BRDA:99,0,jump to line 100,-
BRDA:99,0,jump to line 101,-
BRDA:220,0,jump to line 221,1
BRDA:220,0,jump to line 223,1
BRDA:231,0,jump to line 232,-
BRDA:231,0,jump to line 236,-
BRDA:236,0,jump to line 237,-
BRDA:236,0,jump to line 238,-
BRDA:238,0,jump to line 239,-
BRDA:238,0,jump to line 241,-
BRDA:255,0,jump to line 256,1
BRDA:255,0,jump to line 259,1
BRDA:259,0,jump to line 260,1
BRDA:259,0,jump to line 261,1
BRDA:275,0,jump to line 276,1
BRDA:275,0,jump to line 277,1
BRDA:277,0,jump to line 278,1
BRDA:277,0,return from function 'require_trusted_origin',0
BRF:20
BRH:10
end_of_record
SF:app\api\errors.py
DA:6,1
DA:7,1
DA:9,1
DA:10,1
DA:11,1
DA:13,1
DA:15,1
DA:18,1
DA:19,1
DA:26,1
DA:31,1
DA:32,1
DA:33,1
DA:39,1
DA:45,1
DA:46,1
DA:47,1
LF:17
LH:17
FN:18,28,validation_error_handler
FNDA:1,validation_error_handler
FN:31,42,unhandled_error_handler
FNDA:1,unhandled_error_handler
FN:45,47,register_error_handlers
FNDA:1,register_error_handlers
FNF:3
FNH:3
end_of_record
SF:app\api\middleware.py
DA:8,1
DA:9,1
DA:11,1
DA:12,1
DA:13,1
DA:15,1
DA:21,1
DA:24,1
DA:25,1
DA:28,1
DA:29,1
DA:30,1
DA:33,1
DA:34,1
DA:35,1
LF:15
LH:15
FN:25,35,SecurityHeadersMiddleware.dispatch
FNDA:1,SecurityHeadersMiddleware.dispatch
FNF:1
FNH:1
BRDA:29,0,jump to line 30,1
BRDA:29,0,jump to line 33,1
BRDA:33,0,jump to line 34,1
BRDA:33,0,jump to line 35,1
BRF:4
BRH:4
end_of_record
SF:app\api\openapi.py
DA:5,1
DA:7,1
DA:9,1
DA:10,1
DA:12,1
DA:14,1
DA:16,1
DA:35,1
DA:88,1
DA:101,1
DA:111,1
DA:121,1
DA:128,1
DA:138,1
DA:151,1
DA:161,1
DA:168,1
LF:17
LH:17
end_of_record
SF:app\api\security.py
DA:6,1
DA:8,1
DA:10,1
DA:13,1
DA:14,1
DA:15,1
DA:16,1
DA:18,1
DA:19,1
DA:20,1
DA:23,1
LF:11
LH:11
FN:13,23,require_metrics_token
FNDA:1,require_metrics_token
FNF:1
FNH:1
BRDA:15,0,jump to line 16,1
BRDA:15,0,jump to line 18,1
BRDA:20,0,jump to line 23,1
BRDA:20,0,return from function 'require_metrics_token',1
BRF:4
BRH:4
end_of_record
SF:app\api\v1\__init__.py
end_of_record
SF:app\api\v1\endpoints\__init__.py
end_of_record
SF:app\api\v1\endpoints\alerts.py
DA:1,1
DA:3,1
DA:4,1
DA:5,1
DA:7,1
DA:10,1
DA:16,1
DA:22,1
DA:23,1
LF:9
LH:9
FN:16,23,list_alerts
FNDA:1,list_alerts
FNF:1
FNH:1
end_of_record
SF:app\api\v1\endpoints\auth.py
DA:5,1
DA:7,1
DA:14,1
DA:22,1
DA:23,1
DA:24,1
DA:33,1
DA:34,1
DA:42,1
DA:43,1
DA:45,1
DA:46,1
DA:47,1
DA:49,1
DA:70,1
DA:81,1
DA:83,1
DA:85,1
DA:94,1
DA:99,1
DA:109,1
DA:112,1
DA:113,1
DA:114,1
DA:124,1
DA:125,1
DA:126,1
DA:127,1
DA:130,1
DA:131,1
DA:132,1
DA:133,1
DA:134,1
DA:137,1
DA:143,1
DA:151,1
DA:152,1
DA:154,1
DA:155,1
DA:158,1
DA:159,1
DA:160,1
DA:165,1
DA:166,1
DA:167,1
DA:171,1
DA:172,1
DA:175,1
DA:182,1
DA:189,1
DA:191,1
DA:192,1
DA:197,1
DA:198,1
DA:199,1
DA:208,1
DA:211,1
DA:218,1
DA:221,1
DA:222,1
DA:223,1
DA:224,1
DA:225,1
DA:228,1
DA:235,1
DA:241,0
DA:242,0
DA:243,0
DA:244,0
DA:247,1
DA:253,1
DA:254,1
DA:257,1
DA:264,1
DA:273,0
DA:275,0
DA:276,0
DA:283,0
DA:284,0
DA:288,0
DA:289,0
DA:292,1
DA:298,1
DA:306,1
DA:308,1
DA:309,1
DA:315,1
DA:316,1
DA:317,1
DA:324,1
DA:330,1
DA:331,1
DA:334,1
DA:341,1
DA:349,1
DA:351,1
DA:352,1
DA:358,1
DA:359,1
DA:360,1
DA:364,1
DA:365,1
LF:102
LH:91
FN:109,118,repond
FNDA:1,repond
FN:124,127,entete_de_suppression
FNDA:1,entete_de_suppression
FN:130,134,lit_le_cookie
FNDA:1,lit_le_cookie
FN:143,172,login
FNDA:1,login
FN:182,208,refresh
FNDA:1,refresh
FN:218,225,logout
FNDA:1,logout
FN:235,244,logout_all
FNDA:0,logout_all
FN:253,254,me
FNDA:1,me
FN:264,289,change_password
FNDA:0,change_password
FN:298,321,forgot_password
FNDA:1,forgot_password
FN:330,331,validate_reset_token
FNDA:1,validate_reset_token
FN:341,365,reset_password
FNDA:1,reset_password
FNF:12
FNH:10
BRDA:132,0,jump to line 133,1
BRDA:132,0,jump to line 134,1
BRDA:223,0,jump to line 224,1
BRDA:223,0,jump to line 225,1
BRF:4
BRH:4
end_of_record
SF:app\api\v1\endpoints\health.py
DA:1,1
DA:2,1
DA:3,1
DA:5,1
DA:6,1
DA:7,1
DA:8,1
DA:10,1
DA:11,1
DA:13,1
DA:16,1
DA:17,1
DA:18,1
DA:26,1
DA:27,1
DA:28,1
DA:29,1
DA:32,1
DA:33,1
DA:34,1
DA:39,1
DA:40,1
DA:41,1
DA:46,1
DA:47,1
LF:25
LH:25
FN:17,23,liveness
FNDA:1,liveness
FN:27,47,readiness
FNDA:1,readiness
FNF:2
FNH:2
BRDA:39,0,jump to line 40,1
BRDA:39,0,jump to line 46,1
BRF:2
BRH:2
end_of_record
SF:app\api\v1\endpoints\readings.py
DA:1,1
DA:3,1
DA:5,1
DA:6,1
DA:7,1
DA:8,1
DA:9,1
DA:11,1
DA:13,1
DA:25,1
DA:31,1
DA:40,1
DA:41,1
DA:44,1
DA:45,1
DA:49,1
DA:50,1
DA:54,1
LF:18
LH:18
FN:31,54,list_readings
FNDA:1,list_readings
FNF:1
FNH:1
end_of_record
SF:app\api\v1\endpoints\recommendations.py
DA:1,1
DA:3,1
DA:4,1
DA:5,1
DA:6,1
DA:7,1
DA:9,1
DA:11,1
DA:17,1
DA:18,1
DA:21,1
DA:22,1
DA:25,1
DA:31,1
DA:34,1
DA:35,1
DA:36,1
DA:37,1
DA:40,1
LF:19
LH:19
FN:18,22,list_recommendations
FNDA:1,list_recommendations
FN:31,40,get_recommendation
FNDA:1,get_recommendation
FNF:2
FNH:2
end_of_record
SF:app\api\v1\endpoints\sensors.py
DA:1,1
DA:3,1
DA:4,1
DA:6,1
DA:9,1
DA:14,1
DA:15,1
DA:16,1
LF:8
LH:8
FN:14,16,get_status
FNDA:1,get_status
FNF:1
FNH:1
end_of_record
SF:app\api\v1\endpoints\sites.py
DA:1,1
DA:3,1
DA:4,1
DA:5,1
DA:6,1
DA:7,1
DA:9,1
DA:11,1
DA:17,1
DA:18,1
DA:19,1
DA:20,1
DA:23,1
DA:29,1
DA:30,1
DA:31,1
DA:32,1
DA:33,1
DA:36,1
DA:39,1
DA:45,1
DA:46,1
DA:47,1
DA:48,1
DA:49,1
DA:52,1
LF:26
LH:26
FN:18,20,list_sites
FNDA:1,list_sites
FN:29,36,get_site
FNDA:1,get_site
FN:45,52,get_current
FNDA:1,get_current
FNF:3
FNH:3
end_of_record
SF:app\api\v1\endpoints\stats.py
DA:1,1
DA:3,1
DA:4,1
DA:6,1
DA:9,1
DA:14,1
DA:15,1
DA:16,1
LF:8
LH:8
FN:14,16,get_summary
FNDA:1,get_summary
FNF:1
FNH:1
end_of_record
SF:app\api\v1\endpoints\users.py
DA:1,1
DA:3,1
DA:5,1
DA:6,1
DA:7,1
DA:8,1
DA:9,1
DA:15,1
DA:17,1
DA:18,1
DA:20,1
DA:25,1
DA:30,1
DA:43,1
DA:44,1
DA:45,1
DA:46,1
DA:49,1
DA:56,1
DA:63,1
DA:64,1
DA:65,1
DA:71,1
DA:72,1
DA:76,1
DA:77,1
DA:83,1
DA:89,1
DA:95,1
DA:96,1
DA:97,1
DA:98,1
DA:99,1
DA:100,1
DA:103,1
DA:104,1
DA:107,1
DA:108,1
DA:113,1
DA:114,1
DA:117,0
DA:118,0
DA:121,1
DA:127,1
DA:130,1
DA:131,1
DA:132,1
DA:133,0
DA:134,0
DA:138,1
DA:139,1
LF:51
LH:47
FN:44,46,list_users
FNDA:1,list_users
FN:56,80,create_user
FNDA:1,create_user
FN:89,118,update_user
FNDA:1,update_user
FN:127,142,reset_password
FNDA:1,reset_password
FNF:4
FNH:4
BRDA:97,0,jump to line 98,1
BRDA:97,0,jump to line 99,1
BRDA:99,0,jump to line 100,1
BRDA:99,0,jump to line 113,1
BRDA:113,0,jump to line 114,1
BRDA:113,0,jump to line 117,0
BRF:6
BRH:5
end_of_record
SF:app\api\v1\router.py
DA:1,1
DA:3,1
DA:4,1
DA:16,1
DA:17,1
DA:18,1
DA:19,1
DA:20,1
DA:21,1
DA:24,1
DA:30,1
DA:31,1
DA:34,1
LF:13
LH:13
end_of_record
SF:app\cli.py
DA:8,1
DA:9,1
DA:10,1
DA:11,1
DA:12,1
DA:13,1
DA:14,1
DA:15,1
DA:16,1
DA:18,1
DA:20,1
DA:21,1
DA:22,1
DA:23,1
DA:24,1
DA:25,1
DA:26,1
DA:28,1
DA:29,1
DA:32,1
DA:35,0
DA:41,0
DA:43,0
DA:44,0
DA:46,0
DA:47,0
DA:49,0
DA:50,0
DA:52,0
DA:58,0
DA:60,0
DA:69,1
DA:70,1
DA:81,1
DA:82,1
DA:83,1
DA:86,1
DA:87,1
DA:90,1
DA:91,1
DA:92,1
DA:95,1
DA:96,1
DA:97,1
DA:99,1
DA:100,1
DA:101,1
DA:104,1
DA:108,1
DA:111,1
DA:112,1
DA:115,1
DA:116,1
DA:117,1
DA:123,1
DA:124,1
DA:125,1
DA:126,1
DA:127,1
DA:130,1
DA:131,1
DA:132,1
DA:133,1
DA:134,1
DA:136,1
DA:137,1
DA:138,1
DA:139,1
DA:140,1
DA:141,1
DA:142,1
DA:143,1
DA:144,1
DA:145,1
DA:148,1
DA:149,1
DA:151,1
DA:152,1
DA:153,1
DA:155,0
DA:157,0
DA:165,0
DA:166,0
LF:83
LH:68
FN:32,63,create_admin
FNDA:0,create_admin
FN:69,78,settings_du_contrat
FNDA:1,settings_du_contrat
FN:81,83,schema_du_contrat
FNDA:1,schema_du_contrat
FN:86,87,rend_le_contrat
FNDA:1,rend_le_contrat
FN:90,92,export_openapi
FNDA:1,export_openapi
FN:95,112,build_parser
FNDA:1,build_parser
FN:115,127,genere_mot_de_passe
FNDA:1,genere_mot_de_passe
FN:130,145,read_password
FNDA:1,read_password
FN:148,166,main
FNDA:1,main
FNF:9
FNH:8
BRDA:46,0,jump to line 47,-
BRDA:46,0,jump to line 49,-
BRDA:49,0,jump to line 50,-
BRDA:49,0,jump to line 52,-
BRDA:131,0,jump to line 132,1
BRDA:131,0,jump to line 136,1
BRDA:137,0,jump to line 138,1
BRDA:137,0,jump to line 139,1
BRDA:143,0,jump to line 144,1
BRDA:143,0,jump to line 145,1
BRDA:151,0,jump to line 152,1
BRDA:151,0,jump to line 155,0
BRF:12
BRH:7
end_of_record
SF:app\core\__init__.py
end_of_record
SF:app\core\config.py
DA:1,1
DA:2,1
DA:4,1
DA:5,1
DA:7,1
DA:8,1
DA:10,1
DA:11,1
DA:12,1
DA:17,1
DA:18,1
DA:25,1
DA:26,1
DA:27,1
DA:28,1
DA:29,1
DA:30,1
DA:32,1
DA:33,1
DA:34,1
DA:35,1
DA:37,1
DA:38,1
DA:39,1
DA:40,1
DA:42,1
DA:43,1
DA:44,1
DA:45,1
DA:47,1
DA:48,1
DA:49,1
DA:50,1
DA:52,1
DA:53,1
DA:54,1
DA:55,1
DA:57,1
DA:58,1
DA:59,1
DA:60,1
DA:62,1
DA:63,1
DA:64,1
DA:65,1
DA:66,1
DA:67,1
DA:68,1
DA:70,1
DA:71,1
DA:72,1
DA:74,1
DA:75,1
DA:76,1
DA:78,1
DA:79,1
DA:80,1
DA:82,1
DA:83,1
DA:84,1
DA:86,1
DA:87,1
DA:88,1
DA:89,1
DA:90,1
DA:92,1
DA:93,1
DA:94,1
DA:95,1
DA:96,1
DA:99,1
DA:100,0
DA:104,1
DA:105,1
DA:107,1
DA:108,1
DA:112,1
DA:113,1
DA:115,1
DA:116,1
DA:118,1
DA:121,1
DA:122,1
DA:123,1
LF:84
LH:83
FN:75,76,Settings.allowed_origins
FNDA:1,Settings.allowed_origins
FN:79,80,Settings.is_production
FNDA:1,Settings.is_production
FN:83,84,Settings.cookies_are_secure
FNDA:1,Settings.cookies_are_secure
FN:87,90,Settings.api_docs_are_exposed
FNDA:1,Settings.api_docs_are_exposed
FN:93,118,Settings._refuse_les_configurations_dangereuses
FNDA:1,Settings._refuse_les_configurations_dangereuses
FN:122,123,get_settings
FNDA:1,get_settings
FNF:6
FNH:6
BRDA:88,0,jump to line 89,1
BRDA:88,0,jump to line 90,1
BRDA:95,0,jump to line 96,1
BRDA:95,0,jump to line 99,1
BRDA:99,0,jump to line 100,0
BRDA:99,0,jump to line 104,1
BRDA:104,0,jump to line 105,1
BRDA:104,0,jump to line 107,1
BRDA:107,0,jump to line 108,1
BRDA:107,0,jump to line 112,1
BRDA:112,0,jump to line 113,1
BRDA:112,0,jump to line 115,1
BRDA:115,0,jump to line 116,1
BRDA:115,0,jump to line 118,1
BRF:14
BRH:13
end_of_record
SF:app\core\cookies.py
DA:5,1
DA:6,1
DA:8,1
DA:10,1
DA:13,1
DA:14,1
DA:23,1
DA:24,1
DA:25,1
DA:35,1
DA:36,1
DA:37,1
DA:47,1
DA:48,1
DA:50,1
DA:53,1
DA:54,1
DA:55,1
DA:58,1
DA:59,1
DA:60,1
DA:61,1
LF:22
LH:22
FN:24,33,RefreshCookie.build
FNDA:1,RefreshCookie.build
FN:36,45,RefreshCookie.expired
FNDA:1,RefreshCookie.expired
FN:47,48,RefreshCookie.as_kwargs
FNDA:1,RefreshCookie.as_kwargs
FN:50,55,RefreshCookie.as_deletion_kwargs
FNDA:1,RefreshCookie.as_deletion_kwargs
FN:58,61,cookie_name
FNDA:1,cookie_name
FNF:5
FNH:5
BRDA:59,0,jump to line 60,1
BRDA:59,0,jump to line 61,1
BRF:2
BRH:2
end_of_record
SF:app\core\hashing.py
DA:9,1
DA:11,1
DA:12,1
DA:13,1
DA:14,1
DA:16,1
DA:19,1
DA:20,1
DA:21,1
DA:22,1
DA:23,1
DA:25,1
DA:26,1
DA:28,1
DA:29,1
DA:31,1
DA:32,1
DA:34,1
DA:35,1
DA:36,1
DA:37,1
DA:38,1
DA:40,1
DA:41,1
DA:42,1
DA:43,1
DA:44,1
DA:47,1
DA:54,1
LF:29
LH:29
FN:20,23,Argon2Hasher.__init__
FNDA:1,Argon2Hasher.__init__
FN:25,26,Argon2Hasher.hash
FNDA:1,Argon2Hasher.hash
FN:28,29,Argon2Hasher.verify
FNDA:1,Argon2Hasher.verify
FN:31,32,Argon2Hasher.verify_dummy
FNDA:1,Argon2Hasher.verify_dummy
FN:34,38,Argon2Hasher.needs_rehash
FNDA:1,Argon2Hasher.needs_rehash
FN:40,44,Argon2Hasher._verify
FNDA:1,Argon2Hasher._verify
FN:47,63,build_hasher
FNDA:1,build_hasher
FNF:7
FNH:7
end_of_record
SF:app\core\logging.py
DA:6,1
DA:7,1
DA:8,1
DA:9,1
DA:11,1
DA:13,1
DA:15,1
DA:31,1
DA:32,1
DA:33,1
DA:34,1
DA:37,1
DA:38,1
DA:39,1
DA:40,1
DA:41,1
DA:42,1
DA:43,1
DA:44,1
DA:47,1
DA:48,1
DA:49,1
DA:91,1
DA:92,1
LF:24
LH:24
FN:31,34,redact
FNDA:1,redact
FN:38,44,RedactingFilter.filter
FNDA:1,RedactingFilter.filter
FN:47,88,configure_logging
FNDA:1,configure_logging
FN:91,92,get_logger
FNDA:1,get_logger
FNF:4
FNH:4
BRDA:32,0,jump to line 33,1
BRDA:32,0,jump to line 34,1
BRDA:41,0,jump to line 42,1
BRDA:41,0,jump to line 44,1
BRF:4
BRH:4
end_of_record
SF:app\core\mailer.py
DA:4,1
DA:5,1
DA:7,1
DA:9,1
DA:11,1
DA:14,1
DA:15,1
DA:24,1
DA:25,1
DA:26,1
DA:28,1
DA:29,0
DA:30,0
DA:31,0
DA:32,0
DA:33,0
DA:40,0
DA:48,0
LF:18
LH:11
FN:25,26,Mailer.__init__
FNDA:1,Mailer.__init__
FN:28,48,Mailer.send_password_reset_email
FNDA:0,Mailer.send_password_reset_email
FNF:2
FNH:1
end_of_record
SF:app\core\principal.py
DA:6,1
DA:7,1
DA:9,1
DA:12,1
DA:13,1
LF:5
LH:5
end_of_record
SF:app\core\roles.py
DA:1,1
DA:2,1
DA:5,1
DA:8,1
DA:9,1
DA:10,1
DA:13,1
DA:14,1
DA:15,1
DA:18,1
DA:25,1
DA:26,1
LF:12
LH:12
FN:25,26,has_at_least
FNDA:1,has_at_least
FNF:1
FNH:1
end_of_record
SF:app\core\security.py
DA:10,1
DA:11,1
DA:12,1
DA:13,1
DA:14,1
DA:15,1
DA:17,1
DA:19,1
DA:20,1
DA:22,1
DA:23,1
DA:26,1
DA:27,1
DA:30,1
DA:31,1
DA:34,1
DA:35,1
DA:42,1
DA:43,1
DA:51,1
DA:59,1
DA:60,1
DA:77,1
DA:78,1
DA:79,1
DA:87,1
DA:88,1
DA:89,1
DA:90,1
DA:92,1
DA:93,1
DA:95,1
DA:96,1
DA:97,1
DA:98,1
DA:99,1
DA:101,1
DA:110,1
DA:111,1
DA:116,1
DA:117,1
LF:41
LH:41
FN:51,74,encode_access_token
FNDA:1,encode_access_token
FN:77,107,decode_access_token
FNDA:1,decode_access_token
FN:110,111,generate_refresh_secret
FNDA:1,generate_refresh_secret
FN:116,117,fingerprint_refresh
FNDA:1,fingerprint_refresh
FNF:4
FNH:4
BRDA:92,0,jump to line 93,1
BRDA:92,0,jump to line 95,1
BRF:2
BRH:2
end_of_record
SF:app\db\__init__.py
end_of_record
SF:app\db\base.py
DA:1,1
DA:4,1
LF:2
LH:2
end_of_record
SF:app\db\session.py
DA:1,1
DA:2,1
DA:4,1
DA:11,1
DA:14,1
DA:15,1
DA:16,1
DA:17,1
DA:26,1
DA:27,1
DA:28,1
DA:31,1
DA:32,1
DA:33,1
LF:14
LH:14
FN:15,23,get_engine
FNDA:1,get_engine
FN:27,28,get_session_factory
FNDA:1,get_session_factory
FN:31,33,get_session
FNDA:1,get_session
FNF:3
FNH:3
end_of_record
SF:app\etl\__init__.py
end_of_record
SF:app\etl\historical_import.py
DA:1,1
DA:3,1
DA:4,1
DA:5,1
DA:6,1
DA:7,1
DA:8,1
DA:10,1
DA:11,1
DA:12,1
DA:14,1
DA:16,1
DA:34,1
DA:42,1
DA:45,1
DA:47,1
DA:49,1
DA:50,1
DA:51,1
DA:53,1
DA:56,1
DA:58,1
DA:59,1
DA:61,1
DA:62,0
DA:64,1
DA:67,1
DA:76,1
DA:78,1
DA:79,1
DA:80,1
DA:81,0
DA:82,1
DA:83,1
DA:85,1
DA:87,1
DA:89,1
DA:92,1
DA:97,1
DA:99,1
DA:100,1
DA:102,1
DA:104,1
DA:105,0
DA:107,1
DA:108,1
DA:110,1
DA:111,1
DA:115,1
DA:117,1
DA:118,1
DA:120,1
DA:122,1
DA:123,0
DA:127,1
DA:133,1
DA:143,1
DA:145,1
DA:147,1
DA:152,1
DA:153,1
DA:155,0
DA:157,1
DA:159,1
DA:162,1
DA:167,1
DA:168,0
DA:170,1
DA:171,1
DA:172,1
DA:173,0
DA:174,0
DA:176,1
DA:177,1
DA:179,1
DA:180,0
DA:182,1
DA:185,1
DA:198,0
DA:212,0
DA:214,0
DA:215,0
DA:217,0
DA:228,0
DA:260,0
DA:263,1
DA:268,0
DA:281,0
DA:304,1
DA:312,1
DA:314,1
DA:319,1
DA:320,1
DA:322,1
DA:330,1
DA:332,1
DA:366,1
DA:369,1
DA:418,1
DA:435,0
DA:437,0
DA:439,0
DA:444,0
DA:445,0
DA:446,0
DA:447,0
DA:449,0
DA:450,0
DA:452,0
DA:454,0
DA:456,0
DA:457,0
DA:458,0
DA:460,0
DA:465,0
DA:467,0
DA:472,0
DA:473,0
DA:474,0
DA:482,0
DA:487,0
DA:502,0
DA:504,0
DA:509,0
DA:511,0
DA:516,0
DA:521,0
DA:526,0
DA:528,0
DA:543,0
DA:545,0
DA:546,0
DA:547,0
DA:548,0
DA:549,0
DA:552,0
DA:555,1
DA:557,0
DA:559,0
DA:566,0
DA:573,0
DA:579,0
DA:586,0
DA:592,0
DA:595,1
DA:597,0
DA:599,0
DA:600,0
DA:606,0
DA:608,0
DA:620,1
DA:621,0
LF:152
LH:84
FN:45,53,compute_sha256
FNDA:1,compute_sha256
FN:56,64,load_metadata
FNDA:1,load_metadata
FN:67,89,classify_quality
FNDA:1,classify_quality
FN:92,130,validate_source
FNDA:1,validate_source
FN:133,159,normalize_timestamps
FNDA:1,normalize_timestamps
FN:162,182,to_json_value
FNDA:1,to_json_value
FN:185,260,ensure_dataset
FNDA:0,ensure_dataset
FN:263,301,upsert_sites
FNDA:0,upsert_sites
FN:304,366,build_reading_batch
FNDA:1,build_reading_batch
FN:418,552,import_historical
FNDA:0,import_historical
FN:555,592,parse_args
FNDA:0,parse_args
FN:595,617,main
FNDA:0,main
FNF:12
FNH:7
BRDA:50,0,jump to line 51,1
BRDA:50,0,jump to line 53,1
BRDA:61,0,jump to line 62,0
BRDA:61,0,jump to line 64,1
BRDA:78,0,jump to line 79,1
BRDA:78,0,jump to line 80,1
BRDA:80,0,jump to line 81,0
BRDA:80,0,jump to line 82,1
BRDA:82,0,jump to line 83,1
BRDA:82,0,jump to line 85,1
BRDA:99,0,jump to line 100,1
BRDA:99,0,jump to line 102,1
BRDA:104,0,jump to line 105,0
BRDA:104,0,jump to line 107,1
BRDA:110,0,jump to line 111,1
BRDA:110,0,jump to line 115,1
BRDA:117,0,jump to line 118,1
BRDA:117,0,jump to line 120,1
BRDA:122,0,jump to line 123,0
BRDA:122,0,jump to line 127,1
BRDA:152,0,jump to line 153,1
BRDA:152,0,jump to line 155,0
BRDA:167,0,jump to line 168,0
BRDA:167,0,jump to line 170,1
BRDA:171,0,jump to line 172,1
BRDA:171,0,jump to line 176,1
BRDA:176,0,jump to line 177,1
BRDA:176,0,jump to line 179,1
BRDA:179,0,jump to line 180,0
BRDA:179,0,jump to line 182,1
BRDA:214,0,jump to line 215,-
BRDA:214,0,jump to line 217,-
BRDA:319,0,jump to line 320,1
BRDA:319,0,jump to line 366,1
BRDA:456,0,jump to line 457,-
BRDA:456,0,jump to line 460,-
BRDA:504,0,jump to line 509,-
BRDA:504,0,jump to line 528,-
BRDA:599,0,jump to line 600,-
BRDA:599,0,jump to line 606,-
BRDA:620,0,jump to line 621,0
BRDA:620,0,exit the module,1
BRF:42
BRH:26
end_of_record
SF:app\main.py
DA:1,1
DA:2,1
DA:3,1
DA:5,1
DA:6,1
DA:7,1
DA:8,1
DA:9,1
DA:10,1
DA:11,1
DA:13,1
DA:14,1
DA:15,1
DA:16,1
DA:17,1
DA:18,1
DA:19,1
DA:20,1
DA:22,1
DA:24,1
DA:25,1
DA:26,1
DA:27,1
DA:30,1
DA:31,1
DA:32,0
DA:33,0
DA:36,0
DA:37,0
DA:40,1
DA:41,1
DA:42,1
DA:44,1
DA:45,1
DA:58,1
DA:59,1
DA:63,1
DA:65,1
DA:66,1
DA:67,1
DA:68,1
DA:70,1
DA:72,1
DA:73,1
DA:74,1
DA:80,1
DA:81,1
DA:82,1
DA:88,1
DA:90,1
DA:93,1
DA:103,1
DA:105,1
DA:111,1
DA:116,1
DA:117,1
DA:119,1
LF:57
LH:53
FN:31,37,lifespan
FNDA:0,lifespan
FN:40,119,create_app
FNDA:1,create_app
FN:65,68,create_app.openapi_avec_logo
FNDA:1,create_app.openapi_avec_logo
FN:73,78,create_app.docs_swagger
FNDA:1,create_app.docs_swagger
FN:81,86,create_app.docs_redoc
FNDA:1,create_app.docs_redoc
FNF:5
FNH:4
BRDA:58,0,jump to line 59,1
BRDA:58,0,jump to line 88,1
BRDA:90,0,jump to line 93,1
BRDA:90,0,jump to line 103,1
BRDA:116,0,jump to line 117,1
BRDA:116,0,jump to line 119,1
BRF:6
BRH:6
end_of_record
SF:app\models\__init__.py
DA:4,1
DA:5,1
DA:6,1
DA:7,1
DA:8,1
DA:9,1
DA:10,1
DA:12,1
LF:8
LH:8
end_of_record
SF:app\models\audit_log.py
DA:7,1
DA:8,1
DA:9,1
DA:10,1
DA:12,1
DA:13,1
DA:14,1
DA:15,1
DA:17,1
DA:20,1
DA:21,1
DA:22,1
DA:25,1
DA:26,1
DA:27,1
DA:28,1
DA:29,1
DA:30,1
DA:31,1
DA:32,1
DA:33,1
DA:34,1
DA:35,1
DA:36,1
DA:37,1
DA:40,1
DA:43,1
DA:44,1
DA:45,1
DA:51,1
DA:52,1
DA:55,1
DA:56,1
DA:57,1
DA:58,1
DA:59,1
DA:60,1
DA:61,1
DA:62,1
DA:63,1
DA:64,1
LF:41
LH:41
end_of_record
SF:app\models\energy.py
DA:3,1
DA:4,1
DA:5,1
DA:7,1
DA:24,1
DA:25,1
DA:27,1
DA:30,1
DA:31,1
DA:32,1
DA:37,1
DA:38,1
DA:39,1
DA:40,1
DA:41,1
DA:43,1
DA:46,1
DA:47,1
DA:49,1
DA:50,1
DA:51,1
DA:52,1
DA:53,1
DA:54,1
DA:57,1
DA:58,1
DA:59,1
DA:81,1
DA:82,1
DA:85,1
DA:86,1
DA:87,1
DA:91,1
DA:92,1
DA:93,1
DA:94,1
DA:95,1
DA:96,1
DA:97,1
DA:98,1
DA:99,1
DA:100,1
DA:101,1
DA:102,1
DA:103,1
DA:104,1
DA:105,1
DA:108,1
DA:111,1
DA:121,1
DA:122,1
DA:123,1
DA:145,1
DA:146,1
DA:149,1
DA:150,1
DA:151,1
DA:152,1
DA:153,1
DA:154,1
DA:155,1
DA:156,1
DA:159,1
DA:160,1
DA:161,1
DA:179,1
DA:180,1
DA:181,1
DA:184,1
DA:185,1
DA:186,1
DA:187,1
DA:188,1
DA:189,1
DA:190,1
DA:191,1
DA:192,1
DA:193,1
DA:196,1
DA:197,1
DA:198,1
DA:202,1
DA:203,1
DA:207,1
DA:208,1
DA:209,1
DA:210,1
LF:87
LH:87
end_of_record
SF:app\models\login_attempt.py
DA:7,1
DA:8,1
DA:9,1
DA:11,1
DA:12,1
DA:13,1
DA:14,1
DA:16,1
DA:19,1
DA:20,1
DA:21,1
DA:22,1
DA:23,1
DA:26,1
DA:29,1
DA:30,1
DA:31,1
DA:37,1
DA:38,1
DA:41,1
DA:42,1
DA:43,1
DA:44,1
LF:23
LH:23
end_of_record
SF:app\models\password_reset_attempt.py
DA:6,1
DA:8,1
DA:9,1
DA:10,1
DA:12,1
DA:15,1
DA:16,1
DA:17,1
DA:22,1
DA:23,1
DA:26,1
DA:27,1
LF:12
LH:12
end_of_record
SF:app\models\password_reset_token.py
DA:5,1
DA:6,1
DA:8,1
DA:9,1
DA:10,1
DA:11,1
DA:13,1
DA:16,1
DA:17,1
DA:18,1
DA:27,1
DA:30,1
DA:33,1
DA:34,1
DA:37,1
DA:38,1
DA:39,1
DA:40,1
LF:18
LH:18
end_of_record
SF:app\models\refresh_token.py
DA:8,1
DA:9,1
DA:10,1
DA:12,1
DA:13,1
DA:14,1
DA:15,1
DA:17,1
DA:20,1
DA:21,1
DA:22,1
DA:23,1
DA:24,1
DA:25,1
DA:28,1
DA:31,1
DA:32,1
DA:33,1
DA:47,1
DA:50,1
DA:51,1
DA:54,1
DA:55,1
DA:58,1
DA:59,1
DA:60,1
DA:61,1
DA:62,1
DA:63,1
DA:64,1
LF:30
LH:30
end_of_record
SF:app\models\user.py
DA:5,1
DA:6,1
DA:8,1
DA:9,1
DA:10,1
DA:12,1
DA:13,1
DA:15,1
DA:16,1
DA:19,1
DA:20,1
DA:21,1
DA:27,1
DA:30,1
DA:31,1
DA:32,1
DA:33,1
DA:34,1
DA:35,1
DA:40,1
DA:43,1
DA:44,1
DA:45,1
DA:48,1
LF:24
LH:24
end_of_record
SF:app\repositories\__init__.py
end_of_record
SF:app\repositories\alert.py
DA:1,1
DA:3,1
DA:4,1
DA:6,1
DA:9,1
DA:10,1
DA:11,1
DA:13,1
DA:16,1
DA:17,1
DA:18,0
DA:19,1
DA:20,0
DA:21,1
LF:14
LH:12
FN:10,11,AlertRepository.__init__
FNDA:1,AlertRepository.__init__
FN:13,21,AlertRepository.list_all
FNDA:1,AlertRepository.list_all
FNF:2
FNH:2
BRDA:17,0,jump to line 18,0
BRDA:17,0,jump to line 19,1
BRDA:19,0,jump to line 20,0
BRDA:19,0,jump to line 21,1
BRF:4
BRH:2
end_of_record
SF:app\repositories\audit_log.py
DA:5,1
DA:6,1
DA:8,1
DA:10,1
DA:11,1
DA:13,1
DA:26,1
DA:27,0
DA:28,0
DA:29,0
DA:32,1
DA:33,1
DA:34,1
DA:36,1
DA:49,0
LF:15
LH:11
FN:26,29,assemble_detail
FNDA:0,assemble_detail
FN:33,34,AuditLogRepository.__init__
FNDA:1,AuditLogRepository.__init__
FN:36,62,AuditLogRepository.record
FNDA:0,AuditLogRepository.record
FNF:3
FNH:1
BRDA:27,0,jump to line 28,-
BRDA:27,0,jump to line 29,-
BRF:2
BRH:0
end_of_record
SF:app\repositories\login_attempt.py
DA:5,1
DA:6,1
DA:7,1
DA:9,1
DA:10,1
DA:12,1
DA:15,1
DA:16,1
DA:22,1
DA:23,1
DA:24,1
DA:26,1
DA:34,0
DA:43,1
DA:46,0
DA:47,0
DA:48,0
DA:50,0
DA:60,0
DA:63,0
LF:20
LH:13
FN:23,24,LoginAttemptRepository.__init__
FNDA:1,LoginAttemptRepository.__init__
FN:26,41,LoginAttemptRepository.record
FNDA:0,LoginAttemptRepository.record
FN:43,67,LoginAttemptRepository.count_recent_failures
FNDA:0,LoginAttemptRepository.count_recent_failures
FNF:3
FNH:1
end_of_record
SF:app\repositories\password_reset_attempt.py
DA:1,1
DA:2,1
DA:4,1
DA:5,1
DA:7,1
DA:10,1
DA:11,1
DA:16,1
DA:17,1
DA:18,1
DA:20,1
DA:21,0
DA:25,1
DA:28,0
DA:29,0
DA:30,0
DA:32,0
DA:41,0
DA:42,0
LF:19
LH:12
FN:17,18,PasswordResetAttemptRepository.__init__
FNDA:1,PasswordResetAttemptRepository.__init__
FN:20,23,PasswordResetAttemptRepository.record
FNDA:0,PasswordResetAttemptRepository.record
FN:25,42,PasswordResetAttemptRepository.count_recent
FNDA:0,PasswordResetAttemptRepository.count_recent
FNF:3
FNH:1
end_of_record
SF:app\repositories\password_reset_token.py
DA:5,1
DA:6,1
DA:7,1
DA:9,1
DA:10,1
DA:12,1
DA:15,1
DA:16,1
DA:21,1
DA:22,1
DA:23,1
DA:25,1
DA:34,0
DA:41,0
DA:42,0
DA:43,0
DA:45,1
DA:46,0
DA:56,0
DA:57,0
DA:58,0
DA:59,0
DA:63,1
DA:64,0
DA:69,0
DA:71,1
DA:72,0
DA:78,0
LF:28
LH:15
FN:22,23,PasswordResetTokenRepository.__init__
FNDA:1,PasswordResetTokenRepository.__init__
FN:25,43,PasswordResetTokenRepository.create
FNDA:0,PasswordResetTokenRepository.create
FN:45,59,PasswordResetTokenRepository.consume
FNDA:0,PasswordResetTokenRepository.consume
FN:63,69,PasswordResetTokenRepository.exists_valid
FNDA:0,PasswordResetTokenRepository.exists_valid
FN:71,78,PasswordResetTokenRepository.invalidate_all_for_user
FNDA:0,PasswordResetTokenRepository.invalidate_all_for_user
FNF:5
FNH:1
BRDA:57,0,jump to line 58,-
BRDA:57,0,jump to line 59,-
BRF:2
BRH:0
end_of_record
SF:app\repositories\reading.py
DA:1,1
DA:2,1
DA:4,1
DA:5,1
DA:7,1
DA:10,1
DA:11,1
DA:12,1
DA:14,1
DA:18,0
DA:23,0
DA:25,1
DA:28,0
DA:34,0
DA:35,0
DA:37,1
DA:46,1
DA:53,1
DA:54,0
DA:55,1
LF:20
LH:14
FN:11,12,ReadingRepository.__init__
FNDA:1,ReadingRepository.__init__
FN:14,23,ReadingRepository.latest_by_site
FNDA:0,ReadingRepository.latest_by_site
FN:25,35,ReadingRepository.latest_for_site
FNDA:0,ReadingRepository.latest_for_site
FN:37,55,ReadingRepository.list_history
FNDA:1,ReadingRepository.list_history
FNF:4
FNH:2
BRDA:53,0,jump to line 54,0
BRDA:53,0,jump to line 55,1
BRF:2
BRH:1
end_of_record
SF:app\repositories\recommendation.py
DA:1,1
DA:3,1
DA:4,1
DA:6,1
DA:9,1
DA:10,1
DA:11,1
DA:13,1
DA:14,1
DA:15,1
DA:17,1
DA:18,1
DA:21,1
DA:22,1
LF:14
LH:14
FN:10,11,RecommendationRepository.__init__
FNDA:1,RecommendationRepository.__init__
FN:13,15,RecommendationRepository.list_all
FNDA:1,RecommendationRepository.list_all
FN:17,22,RecommendationRepository.get_by_id
FNDA:1,RecommendationRepository.get_by_id
FNF:3
FNH:3
end_of_record
SF:app\repositories\refresh_token.py
DA:6,1
DA:7,1
DA:8,1
DA:10,1
DA:11,1
DA:13,1
DA:16,1
DA:17,1
DA:24,1
DA:25,1
DA:26,1
DA:28,1
DA:38,0
DA:46,0
DA:47,0
DA:48,0
DA:50,1
DA:51,0
DA:71,0
DA:72,0
DA:73,0
DA:74,0
DA:81,1
DA:82,0
DA:83,0
DA:85,1
DA:86,0
DA:90,1
DA:91,0
DA:97,0
DA:99,1
DA:100,0
DA:106,0
LF:33
LH:17
FN:25,26,RefreshTokenRepository.__init__
FNDA:1,RefreshTokenRepository.__init__
FN:28,48,RefreshTokenRepository.create
FNDA:0,RefreshTokenRepository.create
FN:50,79,RefreshTokenRepository.claim_for_rotation
FNDA:0,RefreshTokenRepository.claim_for_rotation
FN:81,83,RefreshTokenRepository.inspect
FNDA:0,RefreshTokenRepository.inspect
FN:85,88,RefreshTokenRepository.link_replacement
FNDA:0,RefreshTokenRepository.link_replacement
FN:90,97,RefreshTokenRepository.revoke_family
FNDA:0,RefreshTokenRepository.revoke_family
FN:99,106,RefreshTokenRepository.revoke_all_for_user
FNDA:0,RefreshTokenRepository.revoke_all_for_user
FNF:7
FNH:1
BRDA:72,0,jump to line 73,-
BRDA:72,0,jump to line 74,-
BRF:2
BRH:0
end_of_record
SF:app\repositories\site.py
DA:1,1
DA:3,1
DA:4,1
DA:6,1
DA:9,1
DA:10,1
DA:11,1
DA:13,1
DA:14,1
DA:15,1
DA:17,1
DA:18,1
DA:19,1
DA:20,1
LF:14
LH:14
FN:10,11,SiteRepository.__init__
FNDA:1,SiteRepository.__init__
FN:13,15,SiteRepository.list_all
FNDA:1,SiteRepository.list_all
FN:17,20,SiteRepository.get_by_id
FNDA:1,SiteRepository.get_by_id
FNF:3
FNH:3
end_of_record
SF:app\repositories\user.py
DA:6,1
DA:7,1
DA:9,1
DA:10,1
DA:12,1
DA:13,1
DA:16,1
DA:17,1
DA:18,1
DA:20,1
DA:21,0
DA:22,0
DA:24,1
DA:25,0
DA:27,1
DA:28,0
DA:29,0
DA:31,1
DA:32,0
DA:37,0
DA:39,1
DA:49,0
DA:57,0
DA:58,0
DA:59,0
DA:61,1
DA:64,0
DA:74,1
DA:76,0
DA:80,1
DA:81,0
DA:85,1
DA:86,0
DA:92,1
DA:93,0
LF:35
LH:19
FN:17,18,UserRepository.__init__
FNDA:1,UserRepository.__init__
FN:20,22,UserRepository.get_by_email
FNDA:0,UserRepository.get_by_email
FN:24,25,UserRepository.get_by_id
FNDA:0,UserRepository.get_by_id
FN:27,29,UserRepository.list_all
FNDA:0,UserRepository.list_all
FN:31,37,UserRepository.count_active_admins
FNDA:0,UserRepository.count_active_admins
FN:39,59,UserRepository.create
FNDA:0,UserRepository.create
FN:61,72,UserRepository.update_password
FNDA:0,UserRepository.update_password
FN:74,78,UserRepository.rehash_password
FNDA:0,UserRepository.rehash_password
FN:80,83,UserRepository.touch_last_login
FNDA:0,UserRepository.touch_last_login
FN:85,90,UserRepository.set_role
FNDA:0,UserRepository.set_role
FN:92,97,UserRepository.set_active
FNDA:0,UserRepository.set_active
FNF:11
FNH:1
end_of_record
SF:app\schemas\__init__.py
DA:1,1
DA:3,1
LF:2
LH:2
end_of_record
SF:app\schemas\alert.py
DA:1,1
DA:2,1
DA:4,1
DA:7,1
DA:8,1
DA:9,1
DA:10,1
DA:11,1
DA:12,1
DA:15,1
DA:16,1
DA:17,1
DA:18,1
DA:19,1
DA:22,1
DA:23,1
LF:16
LH:16
end_of_record
SF:app\schemas\auth.py
DA:8,1
DA:9,1
DA:10,1
DA:12,1
DA:14,1
DA:15,1
DA:17,1
DA:18,1
DA:20,1
DA:22,1
DA:23,1
DA:24,1
DA:25,1
DA:28,1
DA:29,1
DA:39,1
DA:40,1
DA:41,1
DA:44,1
DA:46,1
DA:49,1
DA:50,1
DA:51,1
DA:53,1
DA:54,1
DA:55,1
DA:56,1
DA:59,1
DA:63,1
DA:64,1
DA:65,1
DA:67,1
DA:68,1
DA:69,1
DA:70,1
DA:73,1
DA:74,1
DA:82,1
DA:83,1
DA:84,1
DA:87,1
DA:91,1
DA:93,1
LF:43
LH:43
FN:28,41,valide_complexite
FNDA:1,valide_complexite
FN:55,56,PasswordChangeRequest._new_password_est_complexe
FNDA:1,PasswordChangeRequest._new_password_est_complexe
FN:69,70,ResetPasswordRequest._new_password_est_complexe
FNDA:1,ResetPasswordRequest._new_password_est_complexe
FN:83,84,PrincipalResponse.from_principal
FNDA:1,PrincipalResponse.from_principal
FNF:4
FNH:4
BRDA:39,0,jump to line 40,1
BRDA:39,0,jump to line 41,1
BRF:2
BRH:2
end_of_record
SF:app\schemas\errors.py
DA:5,1
DA:8,1
DA:12,1
DA:17,1
DA:21,1
LF:5
LH:5
end_of_record
SF:app\schemas\health.py
DA:1,1
DA:3,1
DA:6,1
DA:16,1
LF:4
LH:4
end_of_record
SF:app\schemas\reading.py
DA:1,1
DA:2,1
DA:3,1
DA:4,1
DA:6,1
DA:9,1
DA:10,1
DA:11,1
DA:12,1
DA:15,1
DA:16,1
DA:17,1
DA:18,1
DA:19,1
DA:22,1
DA:23,1
LF:16
LH:16
end_of_record
SF:app\schemas\recommendation.py
DA:1,1
DA:3,1
DA:6,1
DA:7,1
LF:4
LH:4
end_of_record
SF:app\schemas\sensor.py
DA:1,1
DA:2,1
DA:4,1
DA:7,1
DA:8,1
DA:11,1
DA:19,1
DA:20,1
DA:29,1
DA:30,1
DA:38,1
DA:39,1
LF:12
LH:12
end_of_record
SF:app\schemas\site.py
DA:1,1
DA:2,1
DA:4,1
DA:7,1
DA:8,1
DA:18,1
DA:19,1
LF:7
LH:7
end_of_record
SF:app\schemas\stats.py
DA:1,1
DA:2,1
DA:4,1
DA:7,1
DA:8,1
DA:18,1
DA:19,1
LF:7
LH:7
end_of_record
SF:app\schemas\user.py
DA:5,1
DA:6,1
DA:8,1
DA:10,1
DA:13,1
DA:16,1
DA:19,1
DA:20,1
DA:21,1
DA:24,1
DA:25,1
DA:38,1
LF:12
LH:12
end_of_record
SF:app\services\__init__.py
end_of_record
SF:app\services\alert.py
DA:1,1
DA:3,1
DA:4,1
DA:7,1
DA:8,1
DA:9,1
DA:11,1
DA:14,1
LF:8
LH:8
FN:8,9,AlertService.__init__
FNDA:1,AlertService.__init__
FN:11,14,AlertService.list_all
FNDA:1,AlertService.list_all
FNF:2
FNH:2
end_of_record
SF:app\services\auth.py
DA:12,1
DA:13,1
DA:14,1
DA:15,1
DA:17,1
DA:19,1
DA:20,1
DA:21,1
DA:22,1
DA:23,1
DA:24,1
DA:30,1
DA:31,1
DA:32,1
DA:33,1
DA:34,1
DA:35,1
DA:36,1
DA:37,1
DA:38,1
DA:40,1
DA:43,1
DA:47,1
DA:48,1
DA:51,1
DA:52,1
DA:55,1
DA:56,1
DA:59,1
DA:60,1
DA:61,1
DA:62,1
DA:65,1
DA:66,1
DA:69,1
DA:70,1
DA:77,1
DA:78,1
DA:86,1
DA:87,1
DA:94,1
DA:95,1
DA:112,1
DA:113,1
DA:114,1
DA:115,1
DA:116,1
DA:117,1
DA:118,1
DA:119,1
DA:120,1
DA:121,1
DA:122,1
DA:123,1
DA:124,1
DA:126,1
DA:129,1
DA:131,1
DA:132,1
DA:133,1
DA:134,1
DA:136,1
DA:137,1
DA:141,1
DA:142,1
DA:146,1
DA:147,1
DA:149,1
DA:150,1
DA:153,1
DA:156,1
DA:158,1
DA:160,1
DA:163,1
DA:164,1
DA:165,1
DA:166,1
DA:168,1
DA:169,1
DA:170,1
DA:171,1
DA:172,1
DA:174,1
DA:175,1
DA:183,1
DA:184,1
DA:186,1
DA:188,1
DA:189,1
DA:190,1
DA:191,1
DA:192,1
DA:194,1
DA:203,1
DA:204,1
DA:205,1
DA:207,1
DA:212,1
DA:215,1
DA:218,1
DA:227,1
DA:229,1
DA:230,1
DA:232,1
DA:240,1
DA:242,1
DA:248,1
DA:249,1
DA:250,1
DA:251,1
DA:252,1
DA:254,1
DA:255,1
DA:256,1
DA:263,1
DA:264,1
DA:272,1
DA:274,1
DA:275,1
DA:277,1
DA:278,1
DA:279,1
DA:280,1
DA:281,1
DA:287,1
DA:288,1
DA:290,1
DA:293,1
DA:294,1
DA:295,1
DA:300,1
DA:301,1
DA:302,1
DA:304,1
DA:307,1
DA:310,1
DA:313,1
DA:321,1
DA:323,1
DA:324,1
DA:325,0
DA:326,1
DA:328,1
DA:329,1
DA:332,1
DA:337,1
DA:338,1
DA:340,1
DA:341,1
DA:347,1
DA:354,1
DA:355,1
DA:363,1
DA:366,1
DA:367,1
DA:375,1
DA:377,1
DA:380,1
DA:381,1
DA:382,1
DA:384,1
DA:385,1
DA:389,1
DA:392,1
DA:401,1
DA:402,1
DA:404,1
DA:407,1
DA:408,1
DA:412,1
DA:417,1
DA:418,1
DA:420,1
DA:423,1
DA:424,1
DA:432,1
DA:433,1
DA:435,1
DA:436,1
DA:437,1
DA:441,1
DA:445,1
DA:446,1
DA:448,1
DA:449,1
DA:450,1
DA:452,1
DA:460,1
DA:463,1
DA:464,1
LF:190
LH:189
FN:60,62,RateLimitedError.__init__
FNDA:1,RateLimitedError.__init__
FN:95,124,AuthService.__init__
FNDA:1,AuthService.__init__
FN:126,158,AuthService.authenticate
FNDA:1,AuthService.authenticate
FN:160,186,AuthService.refresh
FNDA:1,AuthService.refresh
FN:188,192,AuthService.logout
FNDA:1,AuthService.logout
FN:194,230,AuthService.change_password
FNDA:1,AuthService.change_password
FN:232,275,AuthService.request_password_reset
FNDA:1,AuthService.request_password_reset
FN:277,281,AuthService._envoie_email_reset
FNDA:1,AuthService._envoie_email_reset
FN:287,288,AuthService.is_reset_token_valid
FNDA:1,AuthService.is_reset_token_valid
FN:290,326,AuthService.confirm_password_reset
FNDA:1,AuthService.confirm_password_reset
FN:328,338,AuthService.logout_all
FNDA:1,AuthService.logout_all
FN:340,352,AuthService._session
FNDA:1,AuthService._session
FN:354,361,AuthService._en_principal
FNDA:1,AuthService._en_principal
FN:363,375,AuthService._ouvre_une_famille
FNDA:1,AuthService._ouvre_une_famille
FN:377,402,AuthService._traite_rotation_refusee
FNDA:1,AuthService._traite_rotation_refusee
FN:404,433,AuthService._refuse_si_limite
FNDA:1,AuthService._refuse_si_limite
FN:435,450,AuthService._refuse_si_limite_reset
FNDA:1,AuthService._refuse_si_limite_reset
FN:452,464,AuthService._echoue
FNDA:1,AuthService._echoue
FNF:18
FNH:18
BRDA:132,0,jump to line 133,1
BRDA:132,0,jump to line 136,1
BRDA:136,0,jump to line 137,1
BRDA:136,0,jump to line 141,1
BRDA:141,0,jump to line 142,1
BRDA:141,0,jump to line 146,1
BRDA:146,0,jump to line 147,1
BRDA:146,0,jump to line 149,1
BRDA:165,0,jump to line 166,1
BRDA:165,0,jump to line 168,1
BRDA:169,0,jump to line 170,1
BRDA:169,0,jump to line 174,1
BRDA:190,0,jump to line 191,1
BRDA:190,0,jump to line 192,1
BRDA:204,0,jump to line 205,1
BRDA:204,0,jump to line 207,1
BRDA:248,0,jump to line 249,1
BRDA:248,0,jump to line 254,1
BRDA:294,0,jump to line 295,1
BRDA:294,0,jump to line 300,1
BRDA:301,0,jump to line 302,1
BRDA:301,0,jump to line 304,1
BRDA:324,0,jump to line 325,0
BRDA:324,0,jump to line 326,1
BRDA:381,0,jump to line 382,1
BRDA:381,0,jump to line 384,1
BRDA:384,0,jump to line 385,1
BRDA:384,0,jump to line 389,1
BRDA:417,0,jump to line 418,1
BRDA:417,0,jump to line 420,1
BRDA:423,0,jump to line 424,1
BRDA:423,0,jump to line 432,1
BRDA:445,0,jump to line 446,1
BRDA:445,0,jump to line 448,1
BRF:34
BRH:33
end_of_record
SF:app\services\data_quality.py
DA:6,1
DA:8,1
DA:10,1
DA:12,1
DA:15,1
DA:16,1
DA:17,1
DA:18,1
LF:8
LH:8
FN:15,18,qualite_ou_critique
FNDA:1,qualite_ou_critique
FNF:1
FNH:1
BRDA:16,0,jump to line 17,1
BRDA:16,0,jump to line 18,1
BRF:2
BRH:2
end_of_record
SF:app\services\reading.py
DA:1,1
DA:2,1
DA:4,1
DA:5,1
DA:7,1
DA:8,1
DA:11,1
DA:15,1
DA:19,1
DA:20,1
DA:21,1
DA:23,1
DA:32,1
DA:33,1
DA:37,1
DA:38,1
DA:44,1
DA:45,1
DA:46,1
DA:47,1
DA:49,1
DA:50,1
DA:51,1
DA:52,1
DA:53,1
DA:56,1
DA:57,1
DA:58,1
DA:59,1
LF:29
LH:29
FN:20,21,ReadingService.__init__
FNDA:1,ReadingService.__init__
FN:23,35,ReadingService.list_history
FNDA:1,ReadingService.list_history
FN:38,53,ReadingService._resoudre_fenetre
FNDA:1,ReadingService._resoudre_fenetre
FN:56,59,_vers_utc
FNDA:1,_vers_utc
FNF:4
FNH:4
BRDA:46,0,jump to line 47,1
BRDA:46,0,jump to line 49,1
BRDA:49,0,jump to line 50,1
BRDA:49,0,jump to line 51,1
BRDA:51,0,jump to line 52,1
BRDA:51,0,jump to line 53,1
BRDA:57,0,jump to line 58,1
BRDA:57,0,jump to line 59,1
BRF:8
BRH:8
end_of_record
SF:app\services\recommendation.py
DA:1,1
DA:3,1
DA:4,1
DA:7,1
DA:8,1
DA:11,1
DA:12,1
DA:15,1
DA:16,1
DA:17,1
DA:19,1
DA:20,1
DA:22,1
DA:23,1
DA:24,1
DA:25,1
DA:26,1
LF:17
LH:17
FN:16,17,RecommendationService.__init__
FNDA:1,RecommendationService.__init__
FN:19,20,RecommendationService.list_all
FNDA:1,RecommendationService.list_all
FN:22,26,RecommendationService.get_by_id
FNDA:1,RecommendationService.get_by_id
FNF:3
FNH:3
BRDA:24,0,jump to line 25,1
BRDA:24,0,jump to line 26,1
BRF:2
BRH:2
end_of_record
SF:app\services\sensor.py
DA:1,1
DA:2,1
DA:3,1
DA:5,1
DA:6,1
DA:7,1
DA:8,1
DA:10,1
DA:11,1
DA:13,1
DA:21,1
DA:29,1
DA:30,1
DA:35,1
DA:36,1
DA:44,1
DA:45,1
DA:52,1
DA:53,1
DA:58,1
DA:59,1
DA:60,1
DA:61,1
DA:63,1
DA:64,1
DA:65,1
DA:67,1
DA:73,1
DA:74,1
DA:75,1
DA:82,1
DA:83,1
DA:85,1
DA:86,1
DA:93,1
DA:99,1
DA:113,1
DA:114,1
DA:115,1
DA:116,1
DA:117,1
DA:118,1
DA:121,1
DA:122,1
DA:123,1
DA:126,1
DA:132,1
DA:133,1
DA:134,1
LF:49
LH:49
FN:59,61,SensorService.__init__
FNDA:1,SensorService.__init__
FN:63,70,SensorService.status
FNDA:1,SensorService.status
FN:73,110,_sante_site
FNDA:1,_sante_site
FN:113,118,_overall_depuis_qualite
FNDA:1,_overall_depuis_qualite
FN:121,129,_diagnostic
FNDA:1,_diagnostic
FN:132,136,_tout_en_echec
FNDA:1,_tout_en_echec
FNF:6
FNH:6
BRDA:74,0,jump to line 75,1
BRDA:74,0,jump to line 82,1
BRDA:85,0,jump to line 86,1
BRDA:85,0,jump to line 93,1
BRDA:114,0,jump to line 115,1
BRDA:114,0,jump to line 116,1
BRDA:116,0,jump to line 117,1
BRDA:116,0,jump to line 118,1
BRF:8
BRH:8
end_of_record
SF:app\services\site.py
DA:1,1
DA:2,1
DA:3,1
DA:5,1
DA:6,1
DA:7,1
DA:8,1
DA:11,1
DA:12,1
DA:15,1
DA:16,1
DA:19,1
DA:20,1
DA:35,1
DA:36,1
DA:37,1
DA:38,1
DA:40,1
DA:41,1
DA:43,1
DA:44,1
DA:45,1
DA:46,1
DA:47,1
DA:49,1
DA:50,1
DA:51,1
DA:53,1
DA:54,1
DA:69,1
LF:30
LH:30
FN:36,38,SiteService.__init__
FNDA:1,SiteService.__init__
FN:40,41,SiteService.list_all
FNDA:1,SiteService.list_all
FN:43,47,SiteService.get_by_id
FNDA:1,SiteService.get_by_id
FN:49,82,SiteService.current
FNDA:1,SiteService.current
FNF:4
FNH:4
BRDA:45,0,jump to line 46,1
BRDA:45,0,jump to line 47,1
BRDA:53,0,jump to line 54,1
BRDA:53,0,jump to line 69,1
BRF:4
BRH:4
end_of_record
SF:app\services\stats.py
DA:1,1
DA:2,1
DA:4,1
DA:5,1
DA:6,1
DA:7,1
DA:10,1
DA:11,1
DA:20,1
DA:21,1
DA:30,1
DA:31,1
DA:32,1
DA:33,1
DA:35,1
DA:36,1
DA:37,1
DA:39,1
DA:40,1
DA:41,1
DA:43,1
DA:54,1
DA:55,1
DA:56,1
DA:57,1
DA:58,1
DA:59,1
DA:60,1
DA:61,1
DA:63,1
DA:67,1
LF:31
LH:31
FN:31,33,StatsService.__init__
FNDA:1,StatsService.__init__
FN:35,52,StatsService.summary
FNDA:1,StatsService.summary
FN:55,74,StatsService._resume_site
FNDA:1,StatsService._resume_site
FNF:3
FNH:3
BRDA:59,0,jump to line 60,1
BRDA:59,0,jump to line 63,1
BRF:2
BRH:2
end_of_record
SF:app\services\user.py
DA:5,1
DA:6,1
DA:7,1
DA:8,1
DA:9,1
DA:11,1
DA:12,1
DA:13,1
DA:14,1
DA:15,1
DA:16,1
DA:17,1
DA:18,1
DA:19,1
DA:21,1
DA:24,1
DA:28,1
DA:29,1
DA:32,1
DA:33,1
DA:36,1
DA:37,1
DA:40,1
DA:41,1
DA:44,1
DA:45,1
DA:50,1
DA:51,1
DA:60,1
DA:61,1
DA:62,1
DA:63,1
DA:64,1
DA:66,1
DA:67,0
DA:69,1
DA:72,1
DA:73,1
DA:75,1
DA:76,1
DA:83,1
DA:90,1
DA:91,1
DA:93,1
DA:94,1
DA:95,1
DA:96,1
DA:98,1
DA:99,1
DA:100,1
DA:101,1
DA:102,1
DA:109,1
DA:110,1
DA:112,1
DA:113,1
DA:114,1
DA:115,0
DA:117,1
DA:120,1
DA:121,1
DA:122,1
DA:123,1
DA:129,1
DA:130,1
DA:132,1
DA:133,1
DA:134,1
DA:136,1
DA:139,1
DA:140,1
DA:147,1
DA:148,1
DA:150,1
DA:151,1
DA:152,1
DA:153,1
DA:154,1
DA:156,1
DA:159,1
DA:160,1
DA:161,1
DA:162,1
DA:163,1
DA:164,1
LF:85
LH:83
FN:51,64,UserService.__init__
FNDA:1,UserService.__init__
FN:66,67,UserService.list_all
FNDA:0,UserService.list_all
FN:69,91,UserService.create
FNDA:1,UserService.create
FN:93,110,UserService.change_role
FNDA:1,UserService.change_role
FN:112,130,UserService.set_active
FNDA:1,UserService.set_active
FN:132,148,UserService.reset_password
FNDA:1,UserService.reset_password
FN:150,154,UserService._exige
FNDA:1,UserService._exige
FN:156,164,UserService._refuse_si_dernier_admin
FNDA:1,UserService._refuse_si_dernier_admin
FNF:8
FNH:7
BRDA:72,0,jump to line 73,1
BRDA:72,0,jump to line 75,1
BRDA:95,0,jump to line 96,1
BRDA:95,0,jump to line 98,1
BRDA:114,0,jump to line 115,0
BRDA:114,0,jump to line 117,1
BRDA:121,0,jump to line 122,1
BRDA:121,0,jump to line 123,1
BRDA:152,0,jump to line 153,1
BRDA:152,0,jump to line 154,1
BRDA:161,0,jump to line 162,1
BRDA:161,0,jump to line 163,1
BRDA:163,0,jump to line 164,1
BRDA:163,0,return from function '_refuse_si_dernier_admin',1
BRF:14
BRH:13
end_of_record