
    |%j\                       d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	m
Z
  e
e      j                         j                  Zedz  dz  Zedz  dz  ZdZdZd	Zd
ZedededeeiZg dZg dZg dZddeddddddd	ddeddddddd	ddedd d!d"d#d$d	d%ded&d'd(d)d*d+d	gZg d,Zd;d-Zd;d.Zd<d/Zd<d0Zd=d1Zd>d2Z d?d@d3Z!	 dAd4Z"dBdCd5Z#dDd6Z$dEd7Z%dFd8Z&dGd9Z'e(d:k(  r e'        yy)H    )annotationsN)PathsourcesrawtextzThttps://investor.digitalrealty.com/static-files/953419cb-91ee-4485-8017-26ee0b29bb2azwhttps://investor.digitalrealty.com/news-releases/news-release-details/digital-realty-reports-first-quarter-2026-resultszThttps://investor.digitalrealty.com/static-files/4bac803d-f2a7-400a-b4db-1e8804a60414zWhttps://www.sec.gov/Archives/edgar/data/1297996/000110465926015365/dlr-20251231x10k.htmzZhttps://www.sec.gov/Archives/edgar/data/1297996/000110465926047702/dlr-20260423xex99d1.htmzZhttps://www.sec.gov/Archives/edgar/data/1297996/000110465926010887/dlr-20260205xex99d1.htm)companyperiodmetric_name	raw_valuenormalized_valueunitvalue_qualifierownership_basisforecast_or_actual
is_derived
source_urlsource_locationsource_snippetsnippet_support_status
confidencecaveat)	source_idr   r   source_typer	   expected_table_or_sectionaccess_caveatsrow_idr   r	   r
   r   r   r   r   r   snippetverdictr   r   dlr_2026q1_suppDLRinvestor_supplemental_pdf2026Q1zsources/raw/dlr_2026q1_supp.pdfz sources/text/dlr_2026q1_supp.txtzKey Quarterly Financial Data; Earnings Release; Leasing Activity; 2026 Outlook; Occupancy Analysis; Development Lifecycle; Historical Capital Expenditures and Investments in Real Estate; Investment ActivityzRepeatable source family: Digital Realty investor quarterly supplement. Raw cache may be populated from SEC EDGAR Exhibit 99.1 when IR static-file download is blocked.)	r   r   r   r   r	   raw_cache_pathtext_cache_pathr   r   dlr_2026q1_pressearnings_press_release_htmlz!sources/raw/dlr_2026q1_press.htmlz!sources/text/dlr_2026q1_press.txtzNHighlights; Leasing Activity; Investment Activity; Balance Sheet; 2026 OutlookzRepeatable source family: Digital Realty earnings release HTML. Raw cache may be populated from SEC EDGAR Exhibit 99.1 when IR HTML download is blocked.dlr_2025q4_supp2025Q4zsources/raw/dlr_2025q4_supp.pdfz sources/text/dlr_2025q4_supp.txtzsKey Quarterly Financial Data; Development Lifecycle; Historical Capital Expenditures and Investments in Real EstatezRepeatable source family: Digital Realty prior-quarter investor supplement. Raw cache may be populated from SEC EDGAR Exhibit 99.1 (4Q25 results) when IR static-file download is blocked.dlr_2025_10ksec_10k_htmlFY2025zsources/raw/dlr_2025_10k.htmlzsources/text/dlr_2025_10k.txtzaBusiness; Properties; Investments in unconsolidated entities; MD&A capital expenditure discussionz9Repeatable source family: SEC EDGAR annual filing (10-K).)               	                     c           
         |j                   j                  dd       ddddddd	t        |      | g	}t        j                  |d
       y )NTparentsexist_okcurlz-fsSLz
--max-time120z-Az*research-extractor/1.0 contact@example.comz-ocheck)parentmkdirstr
subprocessrun)urlpathcmds      b/home/dev/research_loop/runs/auto-continue-20260607T140730Z-repair-loop07/artifacts/extract_dlr.py
curl_fetchrJ   _   sJ    KKdT2u:c$iC
 NN3d#    c                    |j                         r|j                         j                  ry 	 t        | |       y # t        j
                  $ r' t        j                  |       }|s t        ||       Y y w xY wN)existsstatst_sizerJ   rD   CalledProcessErrorFETCH_FALLBACKSget)rF   rG   fallbacks      rI   fetchrU   i   s`    {{},,#3(( #"&&s+8T"	#s   : 7A43A4c                &   | j                  dd      }t        j                  dd|      }t        j                  dd|      }t        j                  dd|      }|j                  t        j                  dd|      j	                         d	z   d
       y )Nutf-8ignoreencodingerrorsz*(?is)<script.*?</script>|<style.*?</style> z(?s)<[^>]+>z&#\d+;\s+
rZ   )	read_textresub
write_textstrip)r   r   datas      rI   html_to_textrf   u   sv    =='(=;D66?dKD66.#t,D66)S$'DOOBFF63-335<wOOrK   c           	        | j                         d d }|j                  d      s|j                  d      rt        | |       y t        j                  d      st        d      |j                  j                  dd       t        j                         5 }t        |      dz  }t        j                  dd	t        |       t        |      gd
       |j                  |j                  dd      d       d d d        y # 1 sw Y   y xY w)Nr1      <s   <!	pdftotextz0pdftotext is required to extract PDF source textTr:   zout.txtz-layoutr?   rW   rX   rY   r_   )
read_bytes
startswithrf   shutilwhichRuntimeErrorrA   rB   tempfileTemporaryDirectoryr   rD   rE   rC   rc   r`   )r   r   headtdouts        rI   pdf_to_textrt   }   s    >>BQDt 6S$<<$MNNKKdT2		$	$	& \"2h"YC#c(C4PwxHSZ[\ \ \s   A C==Dc                    t         j                  dd       t        j                  dd       g } i }t        D ]g  }t        |d   z  }t        |d   z  }t        |d   |       |j                         r|j                         j                  s-|d   j                  d      rt        ||       nt        ||       t        j                  |j                               j                         }t        j                  |j                               j                         }| j!                  i ||||j                         j                  |j                         j                  t"        j%                  |d   |d         |d   k7  d       |j'                  d	d
      ||d   <   j t        dz  j)                  t+        j,                  | dd      dz   d	       |S )NTr:   r$   r%   r   r   _pdf)
raw_sha256text_sha256	raw_bytes
text_bytesfetch_fallback_usedrW   rX   rY   r   zsource_cache_manifest.jsonr.   Findentensure_asciir^   r_   )RAWrB   TEXTSOURCESOUTrU   rN   rO   rP   endswithrt   rf   hashlibsha256rj   	hexdigestappendrR   rS   r`   rc   jsondumps)manifesttextssrcr   txtraw_shatxt_shas          rI   ensure_sourcesr      s   IIdTI*JJtdJ+HE SC())C)**c,%zz|388:#5#5=!**62C%S#&..!12<<>..!12<<> 

!"++((*,,#2#6#6s<7H#lJ[#\`cdp`q#q
 	 #&---"Rc+'S( 	''33

8AE:TAG 4  LrK   c                ^    t        j                  ddt        |             j                         S )Nr]   r\   )ra   rb   rC   rd   )r   s    rI   compactr      s"    66&#s4y)//11rK   c                .   t        j                  |t         j                        }|j                  |       }|st	        d|       t        d|j                         dz
        }t        t        |       |j                         |z         }t        | ||       S )Nz)pattern not found in cached source text: r   (   )ra   compileIsearch
ValueErrormaxstartminlenendr   )r   patternwindowrxmr   r   s          rI   	find_spanr      s{    	GRTT	"B
		$ADWINOO1779r>"E
c$i6)
*C4c?##rK   c                f    i ddd|d| d|d|d|d|d	|d
|d|d|d|	d|
d|d|d|S )Nr   r!   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r    )r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r	   s                  rI   rowr      s    
5& 	{ 	Y	
 	, 	 	? 	? 	0 	j 	j 	? 	. 	!"8 	j  	&! rK   c                   | 
t               } | d   }| d   }| d   }| d   }t        |d      }t        |d      }t        |d      }t        |d      }t        |d	      }	t        |d
      }
t        |d      }t        |d      }t        |d      }t        |d      }t        |d      }t        |d      }t        |d      }t        |d      }t        |d      }t        |d      }t        |d      }t        |d      }t        |d      }g t        ddddddddt        d |d!d"d#      t        dd$d%ddd&ddt        d'|d!d"d(      t        d)d*d+dd,ddd-t        d |d!d"d.      t        d/d0d1dddddt        d2|d!d"d3      t        d4d5d6dddd7dt        d2|d!d"d8      t        d9d:d;dddd7dt        d2|d!d"d<      t        d=d>d?dd@dd7d-t        d2|d!dAdB      t        dCdDd+dEddddt        d2|d!d"dF      t        dGdHdIdJddddt        d2|d!d"dK      t        dGdLdMdJdd&ddt        d2|d!d"dN      t        dOdPdPdQdRdSdTdUddt        dV|	d!dAdW      t        dXdYdZdJddddt
        d[|
d!d"d\      t        dXd]d^dJdd&ddt
        d[|
d!d"d_      t        d`dadbdJddddt        dc|d!d"dd      t        d`dedfdJdd&ddt        dc|d!d"dg      t        dhdidjdJddddt        dk|dldAdm      t        dndodpdddddt        dc|d!d"dq      t        dndrdsddd&ddt        dc|d!d"dt      t        dudvdwdxdyd&ddt        dz|d!d"d{      t        d|d}d~dJddddt        d|d!d"d      t        ddddJddddt        d|d!d"dd      t        ddddJddddt        d|d!d"d      t        ddddgdJdd&d7dt        d|d!d"d      t        dddddd&d7dt
        d|dldAd      t        dddddd&d7dt
        d|d!d"d      t        dddddd&d7dt
        d|d!dAd      t        dddddd&d7dt
        d|d!d"d      t        ddddJdd&ddt
        d|d!dAd      t        ddddJdd&ddt
        d|d!dAd      t        ddddJddddt
        d|d!d"d      t        ddPdPdSdTdUddt        d|ddd      S )Nr    r&   r(   r*   z"IT Load Capacity MWs.*3,024.*2,963z.Portfolio Total/Weighted Average.*3,024.*2,408z+Total\s+4,640\s+540.*1,169\s+61%.*2,980,028zoownership percentages in the unconsolidated entities vary|ownership percentages in unconsolidated entities varyzRIncludes the following unconsolidated entities along with our ownership percentagezJbacklog of signed-but-not-commenced leases.*\$1\.8 billion.*\$1\.0 billionz*Grand Total at 100% Share.*706,883.*312\.8z)Grand Total at DLR Share.*422,774.*176\.0z;signed total bookings.*707 million.*100% share.*423 millionz%weighted-average lag.*nineteen monthszDevelopment \(2\).*729,959z756,758z*Total Direct Capital Expenditures.*795,384zECapEx \(Net of Partner Contributions\).*\$3,500\s*-\s*\$4,000 millionz"873-acre parcel.*over one gigawattz130-acre parcel.*160 megawatts.*up to 85 megawattsz@15-megawatt data center development.*approximately \$117 millionz.gross proceeds of approximately \$6\.4 millionzLapproximately \$18\.0 billion of total debt outstanding as of March 31, 2026live_capacityz3,024i  MWreportedz
100% shareactualFz7Financial Supplement p.5 / Key Quarterly Financial Data	supportedhighzjIncludes data centers held as investments in unconsolidated entities; excludes held for sale/contribution.z2,408ih	  zDigital Realty sharez.Financial Supplement p.22 / Occupancy AnalysiszQDLR-share portfolio total from occupancy analysis; differs from 100% share total.capacity_added_this_quarterz3,024 - 2,963=   derived_qoqTzzDerived from Q1 2026 IT Load Capacity (3,024 MW) less Q4 2025 IT Load Capacity (2,963 MW) shown in the five-quarter table.capacity_under_constructionz1,169i  z1Financial Supplement p.23 / Development LifecyclezzConstruction MW from development lifecycle total; note says properties under construction include unconsolidated entities.future_capacity_landz4,640i   forecastzsLand capacity expected to be developed based on current plans; do not mix with shell capacity without derived flag.future_capacity_shell540i  z7Shell capacity is listed separately from land capacity.future_capacity_pipeline_totalz4,640 + 540i<  derived_summediumzUDerived sum of land MW plus shell MW; use components where double-count risk matters.pre_leased_percentagez61%percentz2Percentage leased for development lifecycle total.development_current_investmentz$4,479,903 thousandl   e USDzW100% share current investment in development lifecycle; table dollars are in thousands.z$2,980,028 thousandl   `?c zNDLR-share current investment; distinct from 100% share and from capex actuals.*development_unconsolidated_jv_basis_caveatzownership percentages vary!unconsolidated_ownership_variable)displaybasis_gap_flagr   reported_caveatzunconsolidated/JV basiszU10-K FY2025 / Investments in unconsolidated entities (ownership-basis reconciliation)zlMachine-readable basis_gap_flag marks non-normalizable ownership variability across unconsolidated entities. backlog_rpo_annualized_base_rentz$1.8 billioni IkzEarnings Release / Highlightsz<Annualized GAAP base rent backlog, not total contract value.z$1.0 billioni ʚ;z/Annualized GAAP base rent backlog at DLR share./lease_commitments_bookings_annualized_base_rentz$706,883 thousandi-"*z1Financial Supplement p.8 / Leasing Activity tablezTable-precise annualized GAAP base rent bookings at 100% share (thousands); narrative rounds to $707 million (+$117k vs table).z$422,774 thousandi3z~Table-precise annualized GAAP base rent bookings at DLR share (thousands); narrative rounds to $423 million (+$226k vs table).,lease_commitments_bookings_narrative_roundedz$707 millioni#*z5Financial Supplement p.7 / Leasing Activity narrativepartially_supportedu~   Narrative rounded to millions; leasing table shows $706,883 thousand at 100% share — prefer table row for machine precision.#lease_commitments_bookings_capacityz312.8ǧs@zABookings MW associated with new leases signed during the quarter.z176.0g      f@zKDLR-share bookings MW associated with new leases signed during the quarter.expected_commencement_windowznineteen months   monthsweighted_average_lagz+Financial Supplement p.7 / Leasing ActivityzReported weighted-average lag for Q1 2026 signed leases; statistic about contractual commencement timing, not forward guidance.capex_actual_developmentz$729,959 thousandiXJ+z!consolidated development projectsz;Financial Supplement p.24 / Historical Capital ExpenditureszReflects capital expenditures on consolidated development projects; includes 100% of spending before any project contribution to JVs/funds.&capex_actual_development_prior_quarterz$756,758 thousandi5-z=2025Q4 Financial Supplement / Historical Capital Expendituresz^Prior-quarter consolidated development capex from 4Q25 supplement; supports QoQ capex context.r)   )r	   capex_actual_total_directz$795,384 thousandih/consolidatedzMTotal direct capex includes non-recurring and recurring capital expenditures.4capex_guidance_development_net_partner_contributionsz$3,500 - $4,000 millionl    C;! l    (\ rangez(Financial Supplement p.10 / 2026 OutlookzDevelopment capex guidance is net of partner contributions; excludes land acquisitions and includes DLR share of JV/fund contributions.%future_capacity_acquired_land_atlantazover one gigawatti  greater_thanz&Earnings Release / Investment ActivityzxSource states over one gigawatt; normalized_value=1000 is a documented lower-bound floor, not an exact disclosed figure.&future_capacity_acquired_land_portlandz160 megawatts   zCCapacity support expected from newly acquired Portland land parcel.)future_capacity_prior_portland_assemblagezup to 85 megawattsU   less_than_or_equalznMaximum expected support from previously announced nearby land assemblage; do not treat as delivered capacity.development_acquired_cyberjayaz15-megawattr6   znSubsequent-quarter acquisition; initial IT capacity expected in second half of 2026 and facility was unleased.-development_acquired_cyberjaya_purchase_pricezapproximately $117 millioni@GapproximatezEApproximate post-quarter purchase price; separate from capex actuals.asset_sale_proceeds_bostonzapproximately $6.4 millioni a zQApproximate gross proceeds from non-core data center sale; not capacity delivery.balance_sheet_total_debtzapproximately $18.0 billionl    4a z Earnings Release / Balance SheetzgConsolidated total debt outstanding as of March 31, 2026 per earnings release balance sheet discussion.supplement_jv_note_crosscheckz:Financial Supplement p.23 / Development Lifecycle footnoteunsupportedlowzIllustrates unsupported gradation: footnote confirms variable unconsolidated ownership but does not provide numeric ownership percentages for normalization.)r   r   r   SUPPSEC_10KPRESSQ4_SUPP)r   supppressq4seckeyoccdevdev_note_suppdev_note_10kbacklogbook100bookdlrbookings_narrlagcapdev	capdev_q4capdirguideatlportcybersaledebts                           rI   extract_rowsr      s	   } "#D$%E	 	!B

C
D?
@C
DK
LC
DH
ICzM S"wxLUG KLGJKGFM DB
CCt:;F"j)ItJKFddeE
E@
ACUPQDe`aEUMNDUklDxOWdD*lHV[]aEsKY_x	zx 	OWdD*>TV^`egk<c;PV_	a	x 	)?BmUackmqswEsKY_ I	Jx 	)7D$
LZbdiko?kSY I	Jx 	"GT4\S]_dfj?kSY B	Cx  	#UCz<Q[]bdh?kSYE	G!x& 	,mT4Xdfprvx|?kS[c	e'x, 	#UB	:|U]_dfj?kSY@	B-x2 	,.CZQVXbdprz  }B  DH?kSYe	g3x8 	,.CZQVXbdz  }E  GL  NR?kSY\	^9x> 	8(4Hkl%cz	
?x^ 	.
ES]_kmuw|  D+Wk6J	L_xd 	.
ES]_uw  BG  IN+Wk6=	?exj 	=?RT]_dfpr~  AI  KP  RV?+W] N	Okxp 	=?RT]_dfp  sI  KS  UZ  \`?+W] M	Nqxv 	:NIW\^hjv  yA  CH  JNC]Tiks M	Nwx| 	17E4Uackmrtx?+W]O	Q}xB 	17E4Ukmuw|  C?+W]Y	[CxH 	*,=r8Mce{  ~F  HM  OS93V N	OIxN 	&(;Yz[~  AI  KP  RVI6S^`f Z	[OxT 	46I9V[]g  jM  OW  Y^  `gKYXceklu}	UxZ 	')<iPZ\jltv{  ~BI6S^`f[	][x` 	BD]`jlv_wy~  AH  J`  bl  ns  uy6{F V	Waxf 	35H$PTVdf|  I  KP  RW4c;PRZ G	Hgxl 	4osDR\^t  wA  CH  JO4dKQ	Smxr 	79MrSWYm  pF  HR  TY  [`4dK|	~sxx 	,mRzSikuw|  D4e[&|	~yx~ 	;=Y[dfkmz  }S  U]  _d  fk4e[(S	UxD 	(*FQVXeg}  @H  JO  QV4dK_	aExJ 	&(E{TY[hjx  {C  EJ  LQ.k6u	wKxP 	+((%H k	
Qx xrK   c                n   | j                  ddd      5 }t        j                  ||      }|j                          |D ]_  }t	        |      }|j                  d      }t        |t        t        f      rt        j                  |d      |d<   |j                  |       a 	 d d d        y # 1 sw Y   y xY w)	Nw rW   )newlinerZ   )
fieldnamesr   ),:)
separators)opencsv
DictWriterwriteheaderdictrS   
isinstancelistr   r   writerow)rG   rowsfieldsfr   rrs   nvs           rI   	write_csvr  q  s    	3W	5 NN10	 	Aq'C+,B"tTl+*.**RJ*O&'JJsO	  s   BB++B4c                B   g }t         D ]  }|t        |       kD  r| |dz
     }|j                  ||d   |d   |d   |d   t        |d   t        t
        f      rt        j                  |d         nt        |d         |d   |d   |d	   |d
   d|d   |d   d        |S )Nr-   r   r	   r
   r   r   r   r   r   r   PASSr   r   r   )	SAMPLE_ROW_IDSr   r   r  r	  r  r   r   rC   )r  checksirow_datas       rI   verification_checksr  }  s    F s4y=A;	*x(#M2!+.LVW_`rWsvz  }A  vB  MC

84F+G H  IL  MU  Vh  Mi  IjV$"<0'(9: 01"<0x(
 		& MrK   c            
     p    t         D  cg c]  } t        D ci c]  }|| |   
 c} c}} S c c}w c c}} w rM   )r   MANIFEST_FIELDS)sks     rI   manifest_csv_rowsr    s,    8?@1o.Q!W.@@.@s   2-22c                 x   t         j                  dd       t               } t        |       }t	        |      }t        t         dz  t               t               t        t         dz  |t               t        t         dz  |t               t         dz  j                  t        j                  |dd	      d
z   d       y )NTr:   zsource_manifest.csvzdlr_structured_rows.csvzverification_sample_checks.csvzdlr_structured_rows.jsonr.   Fr|   r^   rW   r_   )r   rB   r   r   r  r  r  r  FIELDSVFIELDSrc   r   r   )r   r  r  s      rI   mainr     s    IIdTI*ED &Fc))+<+>Pc--tV<c44fgF%%11$**T!Z_2`cg2gry1zrK   __main__)rF   rC   rG   r   returnNone)r   r   r   r   r"  r#  )r"  zdict[str, str])r   rC   r"  rC   )   )r   rC   r   rC   r   intr"  rC   )r#   rM   )r   zdict[str, str] | None)rG   r   r  
list[dict]r  z	list[str]r"  r#  )r  r&  r"  r&  )r"  r&  )r"  r#  ))
__future__r   r  r   r   ra   rl   rD   ro   pathlibr   __file__resolverA   r   r   r   r   r   r   r   rR   r  r  r  r   r  rJ   rU   rf   rt   r   r   r   r   r   r  r  r  r   __name__r   rK   rI   <module>r,     s   " 
   	    
8n%%	Io
Y] 	B
`
c 	
f	giW	
 '2;= &v D
 (4=>%u u
 '2;= &[ W
 $%9: &IU
E-^ <$	#P\>2$ 8@2]@	0A{ zF rK   