Ë
    [ÄGjù
  ã            
       óà  — d Z ddlmZmZ ddlmZmZ ddlmZ  e«       Z	e	j                  d«       ee«      fdedefd„«       Ze	j                  d	«       ee«      fdedefd
„«       ZddlZddlZd„ Z e«       \  ZZe	j                  d«       ee«      fdedefd„«       Ze	j                  d«       ee«      fdededefd„«       Ze	j                  d«       ee«      fdedededefd„«       Zy)uK  
GET /api/v1/crops and GET /api/v1/districts

Lets the client's frontend populate dropdowns dynamically rather than
hardcoding the supported crop/district list in their own codebase â€”
when the project coordinator updates data/lookup/*.json and redeploys,
the frontend picks up the change automatically on next load.

Accepts either a logged-in customer (JWT, via the SaaS dashboard) or a
service API key â€” same dual-auth pattern as /analyze (see
app/core/dual_auth.py). These endpoints only return public reference
data (no user-specific content), so either auth mode is sufficient.
é    )Ú	APIRouterÚDepends)ÚAuthContextÚget_auth_context)Úreference_dataz/cropsÚauthÚreturnc              ƒ   ó6   K  — dt        j                  «       iS ­w)NÚcrops)r   Ú
list_crops©r   s    úKC:\Crop_Prediction\Backend\crop-ai-system\app\api\v1\endpoints\reference.pyr   r      s   è ø€ à”^×.Ñ.Ó0Ð1Ð1ùó   ‚z
/districtsc              ƒ   ó6   K  — dt        j                  «       iS ­w)NÚ	districts)r   Úlist_districtsr   s    r   r   r      s   è ø€ àœ×6Ñ6Ó8Ð9Ð9ùr   Nc                  óŠ  — t         j                  j                  t         j                  j                  t        «      ddddd«      } 	 t        t         j                  j                  t         j                  j                  | d«      «      «      5 }t        j                  |«      }d d d «       t        t         j                  j                  t         j                  j                  | d«      «      «      5 }t        j                  |«      }d d d «       fS # 1 sw Y   ŒqxY w# 1 sw Y   ŒxY w# t        $ r}i i fcY d }~S d }~ww xY w)Nz..ÚdataÚlookupzstate_districts.jsonzbanana_varieties.json)
Ú_osÚpathÚjoinÚdirnameÚ__file__ÚopenÚnormpathÚ_jsonÚloadÚ	Exception)ÚbaseÚfÚstatesÚ	varietiesÚes        r   Ú_load_banana_datar%   #   sï   € Ü�8‰8�=‰=œŸ™×)Ñ)¬(Ó3°T¸4ÀÀvÈxÓX€DðÜ”#—(‘(×#Ñ#¤C§H¡H§M¡M°$Ð8NÓ$OÓPÓQð 	#ÐUVÜ—Z‘Z “]ˆF÷	#ä”#—(‘(×#Ñ#¤C§H¡H§M¡M°$Ð8OÓ$PÓQÓRð 	&ÐVWÜŸ
™
 1›ˆI÷	&à�yÐ Ð ÷		#ð 	#ú÷	&ð 	&ûô ò Ø�2ˆv�ûðúsP   ÁAD+ ÂDÂ#AD+ Ã1DÄD+ ÄDÄD+ ÄD(Ä$D+ Ä+	EÄ4D=Ä7EÄ=Ez/banana/statesc              ƒ   óH   K  — dt        t        j                  «       «      iS ­w)Nr"   )ÚsortedÚ_STATE_DISTRICTSÚkeysr   s    r   Úlist_statesr*   0   s    è ø€ à”fÔ-×2Ñ2Ó4Ó5Ð6Ð6ùs   ‚ "z/banana/districts/{state}Ústatec              ƒ   ó|   K  — | j                  «       j                  «       }t        j                  |g «      }||dœS ­w)N)r+   r   )ÚlowerÚstripr(   Úget)r+   r   Ústate_lowerr   s       r   Úlist_districts_by_stater1   4   s9   è ø€ ð
 —+‘+“-×%Ñ%Ó'€KÜ ×$Ñ$ [°"Ó5€IØ ¨yÑ9Ð9ùs   ‚:<z$/banana/varieties/{state}/{district}Údistrictc              ƒ   ó  K  — | j                  «       j                  «       }|j                  «       j                  «       }t        j                  |i «      j                  |g «      }|D �cg c]  }|d   dv sŒ|‘Œ }}|||dœS c c}w ­w)NÚsuitability)ÚsuitableÚrisky)r+   r2   r#   )r-   r.   Ú_BANANA_VARIETIESr/   )r+   r2   r   r0   Údistrict_lowerr#   ÚvÚ	availables           r   Úlist_banana_varietiesr;   =   s‰   è ø€ ð —K‘K“M×'Ñ'Ó)€KØ—^‘^Ó%×+Ñ+Ó-€NÜ!×%Ñ% k°2Ó6×:Ñ:¸>È2ÓN€Ià%ÖS�q¨¨=Ñ)9Ð=RÒ)R’ÐS€IÐSàØ"Øñð ùò Tùs   ‚A'BÁ)BÁ6BÁ:B)Ú__doc__Úfastapir   r   Úapp.core.dual_authr   r   Úapp.services.reference_datar   Úrouterr/   Údictr   r   Újsonr   Úosr   r%   r(   r7   r*   Ústrr1   r;   © ó    r   ú<module>rG      se  ðñ÷ 'ç <Ý 6á	‹€ð ‡�ˆHÓÙ)0Ð1AÓ)Bñ 2˜;ð 2Àtò 2ó ð2ð ‡�ˆLÓÙ-4Ð5EÓ-Fñ :˜{ð :È4ò :ó ð:ó Û ò	ñ '8Ó&9Ñ #Ð Ð#à‡�ÐÓÙ*1Ð2BÓ*Cñ 7˜Kð 7Èò 7ó ð7ð ‡�Ð'Ó(ñ  Ð 0Ó1ñ:Øð:à
ð:ð 
ò:ó )ð:ð ‡�Ð2Ó3ñ  Ð 0Ó1ñØðàðð ðð 
ò	ó 4ñrF   