arize-phoenix 4.14.1__py3-none-any.whl → 4.16.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of arize-phoenix might be problematic. Click here for more details.
- {arize_phoenix-4.14.1.dist-info → arize_phoenix-4.16.0.dist-info}/METADATA +5 -3
- {arize_phoenix-4.14.1.dist-info → arize_phoenix-4.16.0.dist-info}/RECORD +81 -71
- phoenix/db/bulk_inserter.py +131 -5
- phoenix/db/engines.py +2 -1
- phoenix/db/helpers.py +23 -1
- phoenix/db/insertion/constants.py +2 -0
- phoenix/db/insertion/document_annotation.py +157 -0
- phoenix/db/insertion/helpers.py +13 -0
- phoenix/db/insertion/span_annotation.py +144 -0
- phoenix/db/insertion/trace_annotation.py +144 -0
- phoenix/db/insertion/types.py +261 -0
- phoenix/experiments/functions.py +3 -2
- phoenix/experiments/types.py +3 -3
- phoenix/server/api/context.py +7 -9
- phoenix/server/api/dataloaders/__init__.py +2 -0
- phoenix/server/api/dataloaders/average_experiment_run_latency.py +3 -3
- phoenix/server/api/dataloaders/dataset_example_revisions.py +2 -4
- phoenix/server/api/dataloaders/dataset_example_spans.py +2 -4
- phoenix/server/api/dataloaders/document_evaluation_summaries.py +2 -4
- phoenix/server/api/dataloaders/document_evaluations.py +2 -4
- phoenix/server/api/dataloaders/document_retrieval_metrics.py +2 -4
- phoenix/server/api/dataloaders/evaluation_summaries.py +2 -4
- phoenix/server/api/dataloaders/experiment_annotation_summaries.py +2 -4
- phoenix/server/api/dataloaders/experiment_error_rates.py +2 -4
- phoenix/server/api/dataloaders/experiment_run_counts.py +2 -4
- phoenix/server/api/dataloaders/experiment_sequence_number.py +2 -4
- phoenix/server/api/dataloaders/latency_ms_quantile.py +2 -3
- phoenix/server/api/dataloaders/min_start_or_max_end_times.py +2 -4
- phoenix/server/api/dataloaders/project_by_name.py +3 -3
- phoenix/server/api/dataloaders/record_counts.py +2 -4
- phoenix/server/api/dataloaders/span_annotations.py +2 -4
- phoenix/server/api/dataloaders/span_dataset_examples.py +36 -0
- phoenix/server/api/dataloaders/span_descendants.py +2 -4
- phoenix/server/api/dataloaders/span_evaluations.py +2 -4
- phoenix/server/api/dataloaders/span_projects.py +3 -3
- phoenix/server/api/dataloaders/token_counts.py +2 -4
- phoenix/server/api/dataloaders/trace_evaluations.py +2 -4
- phoenix/server/api/dataloaders/trace_row_ids.py +2 -4
- phoenix/server/api/input_types/SpanAnnotationSort.py +17 -0
- phoenix/server/api/input_types/TraceAnnotationSort.py +17 -0
- phoenix/server/api/mutations/span_annotations_mutations.py +8 -3
- phoenix/server/api/mutations/trace_annotations_mutations.py +8 -3
- phoenix/server/api/openapi/main.py +18 -2
- phoenix/server/api/openapi/schema.py +12 -12
- phoenix/server/api/routers/v1/__init__.py +36 -83
- phoenix/server/api/routers/v1/datasets.py +515 -509
- phoenix/server/api/routers/v1/evaluations.py +164 -73
- phoenix/server/api/routers/v1/experiment_evaluations.py +68 -91
- phoenix/server/api/routers/v1/experiment_runs.py +98 -155
- phoenix/server/api/routers/v1/experiments.py +132 -181
- phoenix/server/api/routers/v1/pydantic_compat.py +78 -0
- phoenix/server/api/routers/v1/spans.py +164 -203
- phoenix/server/api/routers/v1/traces.py +134 -159
- phoenix/server/api/routers/v1/utils.py +95 -0
- phoenix/server/api/types/Span.py +27 -3
- phoenix/server/api/types/Trace.py +21 -4
- phoenix/server/api/utils.py +4 -4
- phoenix/server/app.py +172 -192
- phoenix/server/grpc_server.py +2 -2
- phoenix/server/main.py +5 -9
- phoenix/server/static/.vite/manifest.json +31 -31
- phoenix/server/static/assets/components-Ci5kMOk5.js +1175 -0
- phoenix/server/static/assets/{index-CQgXRwU0.js → index-BQG5WVX7.js} +2 -2
- phoenix/server/static/assets/{pages-hdjlFZhO.js → pages-BrevprVW.js} +451 -275
- phoenix/server/static/assets/{vendor-DPvSDRn3.js → vendor-CP0b0YG0.js} +2 -2
- phoenix/server/static/assets/{vendor-arizeai-CkvPT67c.js → vendor-arizeai-DTbiPGp6.js} +27 -27
- phoenix/server/static/assets/vendor-codemirror-DtdPDzrv.js +15 -0
- phoenix/server/static/assets/{vendor-recharts-5jlNaZuF.js → vendor-recharts-A0DA1O99.js} +1 -1
- phoenix/server/thread_server.py +2 -2
- phoenix/server/types.py +18 -0
- phoenix/session/client.py +5 -3
- phoenix/session/session.py +2 -2
- phoenix/trace/dsl/filter.py +2 -6
- phoenix/trace/fixtures.py +17 -23
- phoenix/trace/utils.py +23 -0
- phoenix/utilities/client.py +116 -0
- phoenix/utilities/project.py +1 -1
- phoenix/version.py +1 -1
- phoenix/server/api/routers/v1/dataset_examples.py +0 -178
- phoenix/server/openapi/docs.py +0 -221
- phoenix/server/static/assets/components-DeS0YEmv.js +0 -1142
- phoenix/server/static/assets/vendor-codemirror-Cqwpwlua.js +0 -12
- {arize_phoenix-4.14.1.dist-info → arize_phoenix-4.16.0.dist-info}/WHEEL +0 -0
- {arize_phoenix-4.14.1.dist-info → arize_phoenix-4.16.0.dist-info}/licenses/IP_NOTICE +0 -0
- {arize_phoenix-4.14.1.dist-info → arize_phoenix-4.16.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{c2 as Wr,c3 as gu,c4 as zt,c5 as ye,c6 as Wt,r as B,c7 as W,c8 as z,c9 as da,ca as X,R as A,cb as Dn,cc as bu,cd as Kc,ce as xu,cf as Ou,cg as Au,ch as wu,ci as Pu,cj as Su,ck as Ti,cl as fi,cm as Fc,cn as Z,co as at,cp as ki,cq as Ii,cr as rn,cs as _i,ct as Mn,cu as Re,cv as ju,cw as Eu,cx as $u,cy as Fe,cz as Tu,cA as ku,cB as Iu,cC as _u,cD as Cu,cE as Hr,cF as Du,cG as Vc,cH as Mu,cI as Bu,cJ as Nu,cK as Lu,cL as Ru,cM as zu,cN as Wu,cO as Ku,cP as Fu,cQ as Vu,cR as Xu,cS as Gu,cT as Me,cU as Hu,cV as Uu,cW as Yu,cX as qu,cY as an,cZ as Zu,c_ as Xc,c$ as Ju,d0 as Qu,d1 as es,d2 as ts}from"./vendor-DPvSDRn3.js";var se=function(e){return e===0?0:e>0?1:-1},tt=function(e){return Wr(e)&&e.indexOf("%")===e.length-1},M=function(e){return gu(e)&&!zt(e)},ne=function(e){return M(e)||Wr(e)},rs=0,Xe=function(e){var r=++rs;return"".concat(e||"").concat(r)},fe=function(e,r){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(!M(e)&&!Wr(e))return n;var i;if(tt(e)){var o=e.indexOf("%");i=r*parseFloat(e.slice(0,o))/100}else i=+e;return zt(i)&&(i=n),a&&i>r&&(i=r),i},Le=function(e){if(!e)return null;var r=Object.keys(e);return r&&r.length?e[r[0]]:null},ns=function(e){if(!Array.isArray(e))return!1;for(var r=e.length,n={},a=0;a<r;a++)if(!n[e[a]])n[e[a]]=!0;else return!0;return!1},te=function(e,r){return M(e)&&M(r)?function(n){return e+n*(r-e)}:function(){return r}};function on(t,e,r){return!t||!t.length?null:t.find(function(n){return n&&(typeof e=="function"?e(n):ye(n,e))===r})}var as=function(e){if(!e||!e.length)return null;for(var r=e.length,n=0,a=0,i=0,o=0,c=1/0,l=-1/0,u=0,s=0,f=0;f<r;f++)u=e[f].cx||0,s=e[f].cy||0,n+=u,a+=s,i+=u*s,o+=u*u,c=Math.min(c,u),l=Math.max(l,u);var d=r*o!==n*n?(r*i-n*a)/(r*o-n*n):0;return{xmin:c,xmax:l,a:d,b:(a-d*n)/r}};function Ot(t,e){for(var r in t)if({}.hasOwnProperty.call(t,r)&&(!{}.hasOwnProperty.call(e,r)||t[r]!==e[r]))return!1;for(var n in e)if({}.hasOwnProperty.call(e,n)&&!{}.hasOwnProperty.call(t,n))return!1;return!0}function pa(t){"@babel/helpers - typeof";return pa=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},pa(t)}var is=["viewBox","children"],os=["aria-activedescendant","aria-atomic","aria-autocomplete","aria-busy","aria-checked","aria-colcount","aria-colindex","aria-colspan","aria-controls","aria-current","aria-describedby","aria-details","aria-disabled","aria-errormessage","aria-expanded","aria-flowto","aria-haspopup","aria-hidden","aria-invalid","aria-keyshortcuts","aria-label","aria-labelledby","aria-level","aria-live","aria-modal","aria-multiline","aria-multiselectable","aria-orientation","aria-owns","aria-placeholder","aria-posinset","aria-pressed","aria-readonly","aria-relevant","aria-required","aria-roledescription","aria-rowcount","aria-rowindex","aria-rowspan","aria-selected","aria-setsize","aria-sort","aria-valuemax","aria-valuemin","aria-valuenow","aria-valuetext","className","color","height","id","lang","max","media","method","min","name","style","target","width","role","tabIndex","accentHeight","accumulate","additive","alignmentBaseline","allowReorder","alphabetic","amplitude","arabicForm","ascent","attributeName","attributeType","autoReverse","azimuth","baseFrequency","baselineShift","baseProfile","bbox","begin","bias","by","calcMode","capHeight","clip","clipPath","clipPathUnits","clipRule","colorInterpolation","colorInterpolationFilters","colorProfile","colorRendering","contentScriptType","contentStyleType","cursor","cx","cy","d","decelerate","descent","diffuseConstant","direction","display","divisor","dominantBaseline","dur","dx","dy","edgeMode","elevation","enableBackground","end","exponent","externalResourcesRequired","fill","fillOpacity","fillRule","filter","filterRes","filterUnits","floodColor","floodOpacity","focusable","fontFamily","fontSize","fontSizeAdjust","fontStretch","fontStyle","fontVariant","fontWeight","format","from","fx","fy","g1","g2","glyphName","glyphOrientationHorizontal","glyphOrientationVertical","glyphRef","gradientTransform","gradientUnits","hanging","horizAdvX","horizOriginX","href","ideographic","imageRendering","in2","in","intercept","k1","k2","k3","k4","k","kernelMatrix","kernelUnitLength","kerning","keyPoints","keySplines","keyTimes","lengthAdjust","letterSpacing","lightingColor","limitingConeAngle","local","markerEnd","markerHeight","markerMid","markerStart","markerUnits","markerWidth","mask","maskContentUnits","maskUnits","mathematical","mode","numOctaves","offset","opacity","operator","order","orient","orientation","origin","overflow","overlinePosition","overlineThickness","paintOrder","panose1","pathLength","patternContentUnits","patternTransform","patternUnits","pointerEvents","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","r","radius","refX","refY","renderingIntent","repeatCount","repeatDur","requiredExtensions","requiredFeatures","restart","result","rotate","rx","ry","seed","shapeRendering","slope","spacing","specularConstant","specularExponent","speed","spreadMethod","startOffset","stdDeviation","stemh","stemv","stitchTiles","stopColor","stopOpacity","strikethroughPosition","strikethroughThickness","string","stroke","strokeDasharray","strokeDashoffset","strokeLinecap","strokeLinejoin","strokeMiterlimit","strokeOpacity","strokeWidth","surfaceScale","systemLanguage","tableValues","targetX","targetY","textAnchor","textDecoration","textLength","textRendering","to","transform","u1","u2","underlinePosition","underlineThickness","unicode","unicodeBidi","unicodeRange","unitsPerEm","vAlphabetic","values","vectorEffect","version","vertAdvY","vertOriginX","vertOriginY","vHanging","vIdeographic","viewTarget","visibility","vMathematical","widths","wordSpacing","writingMode","x1","x2","x","xChannelSelector","xHeight","xlinkActuate","xlinkArcrole","xlinkHref","xlinkRole","xlinkShow","xlinkTitle","xlinkType","xmlBase","xmlLang","xmlns","xmlnsXlink","xmlSpace","y1","y2","y","yChannelSelector","z","zoomAndPan","ref","key","angle"],Ci=["points","pathLength"],ta={svg:is,polygon:Ci,polyline:Ci},di=["dangerouslySetInnerHTML","onCopy","onCopyCapture","onCut","onCutCapture","onPaste","onPasteCapture","onCompositionEnd","onCompositionEndCapture","onCompositionStart","onCompositionStartCapture","onCompositionUpdate","onCompositionUpdateCapture","onFocus","onFocusCapture","onBlur","onBlurCapture","onChange","onChangeCapture","onBeforeInput","onBeforeInputCapture","onInput","onInputCapture","onReset","onResetCapture","onSubmit","onSubmitCapture","onInvalid","onInvalidCapture","onLoad","onLoadCapture","onError","onErrorCapture","onKeyDown","onKeyDownCapture","onKeyPress","onKeyPressCapture","onKeyUp","onKeyUpCapture","onAbort","onAbortCapture","onCanPlay","onCanPlayCapture","onCanPlayThrough","onCanPlayThroughCapture","onDurationChange","onDurationChangeCapture","onEmptied","onEmptiedCapture","onEncrypted","onEncryptedCapture","onEnded","onEndedCapture","onLoadedData","onLoadedDataCapture","onLoadedMetadata","onLoadedMetadataCapture","onLoadStart","onLoadStartCapture","onPause","onPauseCapture","onPlay","onPlayCapture","onPlaying","onPlayingCapture","onProgress","onProgressCapture","onRateChange","onRateChangeCapture","onSeeked","onSeekedCapture","onSeeking","onSeekingCapture","onStalled","onStalledCapture","onSuspend","onSuspendCapture","onTimeUpdate","onTimeUpdateCapture","onVolumeChange","onVolumeChangeCapture","onWaiting","onWaitingCapture","onAuxClick","onAuxClickCapture","onClick","onClickCapture","onContextMenu","onContextMenuCapture","onDoubleClick","onDoubleClickCapture","onDrag","onDragCapture","onDragEnd","onDragEndCapture","onDragEnter","onDragEnterCapture","onDragExit","onDragExitCapture","onDragLeave","onDragLeaveCapture","onDragOver","onDragOverCapture","onDragStart","onDragStartCapture","onDrop","onDropCapture","onMouseDown","onMouseDownCapture","onMouseEnter","onMouseLeave","onMouseMove","onMouseMoveCapture","onMouseOut","onMouseOutCapture","onMouseOver","onMouseOverCapture","onMouseUp","onMouseUpCapture","onSelect","onSelectCapture","onTouchCancel","onTouchCancelCapture","onTouchEnd","onTouchEndCapture","onTouchMove","onTouchMoveCapture","onTouchStart","onTouchStartCapture","onPointerDown","onPointerDownCapture","onPointerMove","onPointerMoveCapture","onPointerUp","onPointerUpCapture","onPointerCancel","onPointerCancelCapture","onPointerEnter","onPointerEnterCapture","onPointerLeave","onPointerLeaveCapture","onPointerOver","onPointerOverCapture","onPointerOut","onPointerOutCapture","onGotPointerCapture","onGotPointerCaptureCapture","onLostPointerCapture","onLostPointerCaptureCapture","onScroll","onScrollCapture","onWheel","onWheelCapture","onAnimationStart","onAnimationStartCapture","onAnimationEnd","onAnimationEndCapture","onAnimationIteration","onAnimationIterationCapture","onTransitionEnd","onTransitionEndCapture"],cn=function(e,r){if(!e||typeof e=="function"||typeof e=="boolean")return null;var n=e;if(B.isValidElement(e)&&(n=e.props),!Wt(n))return null;var a={};return Object.keys(n).forEach(function(i){di.includes(i)&&(a[i]=r||function(o){return n[i](n,o)})}),a},cs=function(e,r,n){return function(a){return e(r,n,a),null}},Ve=function(e,r,n){if(!Wt(e)||pa(e)!=="object")return null;var a=null;return Object.keys(e).forEach(function(i){var o=e[i];di.includes(i)&&typeof o=="function"&&(a||(a={}),a[i]=cs(o,r,n))}),a},ls=["children"],us=["children"];function Di(t,e){if(t==null)return{};var r=ss(t,e),n,a;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(a=0;a<i.length;a++)n=i[a],!(e.indexOf(n)>=0)&&Object.prototype.propertyIsEnumerable.call(t,n)&&(r[n]=t[n])}return r}function ss(t,e){if(t==null)return{};var r={},n=Object.keys(t),a,i;for(i=0;i<n.length;i++)a=n[i],!(e.indexOf(a)>=0)&&(r[a]=t[a]);return r}function va(t){"@babel/helpers - typeof";return va=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},va(t)}var Mi={click:"onClick",mousedown:"onMouseDown",mouseup:"onMouseUp",mouseover:"onMouseOver",mousemove:"onMouseMove",mouseout:"onMouseOut",mouseenter:"onMouseEnter",mouseleave:"onMouseLeave",touchcancel:"onTouchCancel",touchend:"onTouchEnd",touchmove:"onTouchMove",touchstart:"onTouchStart"},De=function(e){return typeof e=="string"?e:e?e.displayName||e.name||"Component":""},Bi=null,ra=null,pi=function t(e){if(e===Bi&&Array.isArray(ra))return ra;var r=[];return B.Children.forEach(e,function(n){z(n)||(da.isFragment(n)?r=r.concat(t(n.props.children)):r.push(n))}),ra=r,Bi=e,r};function de(t,e){var r=[],n=[];return Array.isArray(e)?n=e.map(function(a){return De(a)}):n=[De(e)],pi(t).forEach(function(a){var i=ye(a,"type.displayName")||ye(a,"type.name");n.indexOf(i)!==-1&&r.push(a)}),r}function he(t,e){var r=de(t,e);return r&&r[0]}var Ni=function(e){if(!e||!e.props)return!1;var r=e.props,n=r.width,a=r.height;return!(!M(n)||n<=0||!M(a)||a<=0)},fs=["a","altGlyph","altGlyphDef","altGlyphItem","animate","animateColor","animateMotion","animateTransform","circle","clipPath","color-profile","cursor","defs","desc","ellipse","feBlend","feColormatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","filter","font","font-face","font-face-format","font-face-name","font-face-url","foreignObject","g","glyph","glyphRef","hkern","image","line","lineGradient","marker","mask","metadata","missing-glyph","mpath","path","pattern","polygon","polyline","radialGradient","rect","script","set","stop","style","svg","switch","symbol","text","textPath","title","tref","tspan","use","view","vkern"],ds=function(e){return e&&e.type&&Wr(e.type)&&fs.indexOf(e.type)>=0},Gc=function(e){return e&&va(e)==="object"&&"cx"in e&&"cy"in e&&"r"in e},ps=function(e,r,n,a){var i,o=(i=ta==null?void 0:ta[a])!==null&&i!==void 0?i:[];return!W(e)&&(a&&o.includes(r)||os.includes(r))||n&&di.includes(r)},R=function(e,r,n){if(!e||typeof e=="function"||typeof e=="boolean")return null;var a=e;if(B.isValidElement(e)&&(a=e.props),!Wt(a))return null;var i={};return Object.keys(a).forEach(function(o){var c;ps((c=a)===null||c===void 0?void 0:c[o],o,r,n)&&(i[o]=a[o])}),i},ha=function t(e,r){if(e===r)return!0;var n=B.Children.count(e);if(n!==B.Children.count(r))return!1;if(n===0)return!0;if(n===1)return Li(Array.isArray(e)?e[0]:e,Array.isArray(r)?r[0]:r);for(var a=0;a<n;a++){var i=e[a],o=r[a];if(Array.isArray(i)||Array.isArray(o)){if(!t(i,o))return!1}else if(!Li(i,o))return!1}return!0},Li=function(e,r){if(z(e)&&z(r))return!0;if(!z(e)&&!z(r)){var n=e.props||{},a=n.children,i=Di(n,ls),o=r.props||{},c=o.children,l=Di(o,us);return a&&c?Ot(i,l)&&ha(a,c):!a&&!c?Ot(i,l):!1}return!1},Ri=function(e,r){var n=[],a={};return pi(e).forEach(function(i,o){if(ds(i))n.push(i);else if(i){var c=De(i.type),l=r[c]||{},u=l.handler,s=l.once;if(u&&(!s||!a[c])){var f=u(i,c,o);n.push(f),a[c]=!0}}}),n},vs=function(e){var r=e&&e.type;return r&&Mi[r]?Mi[r]:null},hs=function(e,r){return pi(r).indexOf(e)},ys=["children","width","height","viewBox","className","style","title","desc"];function ya(){return ya=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(t[n]=r[n])}return t},ya.apply(this,arguments)}function ms(t,e){if(t==null)return{};var r=gs(t,e),n,a;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(a=0;a<i.length;a++)n=i[a],!(e.indexOf(n)>=0)&&Object.prototype.propertyIsEnumerable.call(t,n)&&(r[n]=t[n])}return r}function gs(t,e){if(t==null)return{};var r={},n=Object.keys(t),a,i;for(i=0;i<n.length;i++)a=n[i],!(e.indexOf(a)>=0)&&(r[a]=t[a]);return r}function ma(t){var e=t.children,r=t.width,n=t.height,a=t.viewBox,i=t.className,o=t.style,c=t.title,l=t.desc,u=ms(t,ys),s=a||{width:r,height:n,x:0,y:0},f=X("recharts-surface",i);return A.createElement("svg",ya({},R(u,!0,"svg"),{className:f,width:r,height:n,style:o,viewBox:"".concat(s.x," ").concat(s.y," ").concat(s.width," ").concat(s.height)}),A.createElement("title",null,c),A.createElement("desc",null,l),e)}var bs=["children","className"];function ga(){return ga=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(t[n]=r[n])}return t},ga.apply(this,arguments)}function xs(t,e){if(t==null)return{};var r=Os(t,e),n,a;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(a=0;a<i.length;a++)n=i[a],!(e.indexOf(n)>=0)&&Object.prototype.propertyIsEnumerable.call(t,n)&&(r[n]=t[n])}return r}function Os(t,e){if(t==null)return{};var r={},n=Object.keys(t),a,i;for(i=0;i<n.length;i++)a=n[i],!(e.indexOf(a)>=0)&&(r[a]=t[a]);return r}var H=A.forwardRef(function(t,e){var r=t.children,n=t.className,a=xs(t,bs),i=X("recharts-layer",n);return A.createElement("g",ga({className:i},R(a,!0),{ref:e}),r)}),je=function(e,r){for(var n=arguments.length,a=new Array(n>2?n-2:0),i=2;i<n;i++)a[i-2]=arguments[i]};function sr(t){"@babel/helpers - typeof";return sr=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},sr(t)}var As=["type","size","sizeType"];function ba(){return ba=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(t[n]=r[n])}return t},ba.apply(this,arguments)}function zi(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(a){return Object.getOwnPropertyDescriptor(t,a).enumerable})),r.push.apply(r,n)}return r}function Wi(t){for(var e=1;e<arguments.length;e++){var r=arguments[e]!=null?arguments[e]:{};e%2?zi(Object(r),!0).forEach(function(n){ws(t,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):zi(Object(r)).forEach(function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(r,n))})}return t}function ws(t,e,r){return e=Ps(e),e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function Ps(t){var e=Ss(t,"string");return sr(e)=="symbol"?e:String(e)}function Ss(t,e){if(sr(t)!="object"||!t)return t;var r=t[Symbol.toPrimitive];if(r!==void 0){var n=r.call(t,e||"default");if(sr(n)!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function js(t,e){if(t==null)return{};var r=Es(t,e),n,a;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(a=0;a<i.length;a++)n=i[a],!(e.indexOf(n)>=0)&&Object.prototype.propertyIsEnumerable.call(t,n)&&(r[n]=t[n])}return r}function Es(t,e){if(t==null)return{};var r={},n=Object.keys(t),a,i;for(i=0;i<n.length;i++)a=n[i],!(e.indexOf(a)>=0)&&(r[a]=t[a]);return r}var Hc={symbolCircle:Kc,symbolCross:xu,symbolDiamond:Ou,symbolSquare:Au,symbolStar:wu,symbolTriangle:Pu,symbolWye:Su},$s=Math.PI/180,Ts=function(e){var r="symbol".concat(Dn(e));return Hc[r]||Kc},ks=function(e,r,n){if(r==="area")return e;switch(n){case"cross":return 5*e*e/9;case"diamond":return .5*e*e/Math.sqrt(3);case"square":return e*e;case"star":{var a=18*$s;return 1.25*e*e*(Math.tan(a)-Math.tan(a*2)*Math.pow(Math.tan(a),2))}case"triangle":return Math.sqrt(3)*e*e/4;case"wye":return(21-10*Math.sqrt(3))*e*e/8;default:return Math.PI*e*e/4}},Is=function(e,r){Hc["symbol".concat(Dn(e))]=r},Bn=function(e){var r=e.type,n=r===void 0?"circle":r,a=e.size,i=a===void 0?64:a,o=e.sizeType,c=o===void 0?"area":o,l=js(e,As),u=Wi(Wi({},l),{},{type:n,size:i,sizeType:c}),s=function(){var g=Ts(n),O=bu().type(g).size(ks(i,c,n));return O()},f=u.className,d=u.cx,p=u.cy,m=R(u,!0);return d===+d&&p===+p&&i===+i?A.createElement("path",ba({},m,{className:X("recharts-symbols",f),transform:"translate(".concat(d,", ").concat(p,")"),d:s()})):null};Bn.registerSymbol=Is;function wt(t){"@babel/helpers - typeof";return wt=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},wt(t)}function xa(){return xa=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(t[n]=r[n])}return t},xa.apply(this,arguments)}function Ki(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(a){return Object.getOwnPropertyDescriptor(t,a).enumerable})),r.push.apply(r,n)}return r}function _s(t){for(var e=1;e<arguments.length;e++){var r=arguments[e]!=null?arguments[e]:{};e%2?Ki(Object(r),!0).forEach(function(n){fr(t,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):Ki(Object(r)).forEach(function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(r,n))})}return t}function Cs(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function Ds(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,Yc(n.key),n)}}function Ms(t,e,r){return e&&Ds(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t}function Bs(t,e,r){return e=ln(e),Ns(t,Uc()?Reflect.construct(e,r||[],ln(t).constructor):e.apply(t,r))}function Ns(t,e){if(e&&(wt(e)==="object"||typeof e=="function"))return e;if(e!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return Ls(t)}function Ls(t){if(t===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function Uc(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch{}return(Uc=function(){return!!t})()}function ln(t){return ln=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(r){return r.__proto__||Object.getPrototypeOf(r)},ln(t)}function Rs(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&Oa(t,e)}function Oa(t,e){return Oa=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(n,a){return n.__proto__=a,n},Oa(t,e)}function fr(t,e,r){return e=Yc(e),e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function Yc(t){var e=zs(t,"string");return wt(e)=="symbol"?e:String(e)}function zs(t,e){if(wt(t)!="object"||!t)return t;var r=t[Symbol.toPrimitive];if(r!==void 0){var n=r.call(t,e||"default");if(wt(n)!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}var be=32,vi=function(t){Rs(e,t);function e(){return Cs(this,e),Bs(this,e,arguments)}return Ms(e,[{key:"renderIcon",value:function(n){var a=this.props.inactiveColor,i=be/2,o=be/6,c=be/3,l=n.inactive?a:n.color;if(n.type==="plainline")return A.createElement("line",{strokeWidth:4,fill:"none",stroke:l,strokeDasharray:n.payload.strokeDasharray,x1:0,y1:i,x2:be,y2:i,className:"recharts-legend-icon"});if(n.type==="line")return A.createElement("path",{strokeWidth:4,fill:"none",stroke:l,d:"M0,".concat(i,"h").concat(c,`
|
|
1
|
+
import{c2 as Wr,c3 as gu,c4 as zt,c5 as ye,c6 as Wt,r as B,c7 as W,c8 as z,c9 as da,ca as X,R as A,cb as Dn,cc as bu,cd as Kc,ce as xu,cf as Ou,cg as Au,ch as wu,ci as Pu,cj as Su,ck as Ti,cl as fi,cm as Fc,cn as Z,co as at,cp as ki,cq as Ii,cr as rn,cs as _i,ct as Mn,cu as Re,cv as ju,cw as Eu,cx as $u,cy as Fe,cz as Tu,cA as ku,cB as Iu,cC as _u,cD as Cu,cE as Hr,cF as Du,cG as Vc,cH as Mu,cI as Bu,cJ as Nu,cK as Lu,cL as Ru,cM as zu,cN as Wu,cO as Ku,cP as Fu,cQ as Vu,cR as Xu,cS as Gu,cT as Me,cU as Hu,cV as Uu,cW as Yu,cX as qu,cY as an,cZ as Zu,c_ as Xc,c$ as Ju,d0 as Qu,d1 as es,d2 as ts}from"./vendor-CP0b0YG0.js";var se=function(e){return e===0?0:e>0?1:-1},tt=function(e){return Wr(e)&&e.indexOf("%")===e.length-1},M=function(e){return gu(e)&&!zt(e)},ne=function(e){return M(e)||Wr(e)},rs=0,Xe=function(e){var r=++rs;return"".concat(e||"").concat(r)},fe=function(e,r){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(!M(e)&&!Wr(e))return n;var i;if(tt(e)){var o=e.indexOf("%");i=r*parseFloat(e.slice(0,o))/100}else i=+e;return zt(i)&&(i=n),a&&i>r&&(i=r),i},Le=function(e){if(!e)return null;var r=Object.keys(e);return r&&r.length?e[r[0]]:null},ns=function(e){if(!Array.isArray(e))return!1;for(var r=e.length,n={},a=0;a<r;a++)if(!n[e[a]])n[e[a]]=!0;else return!0;return!1},te=function(e,r){return M(e)&&M(r)?function(n){return e+n*(r-e)}:function(){return r}};function on(t,e,r){return!t||!t.length?null:t.find(function(n){return n&&(typeof e=="function"?e(n):ye(n,e))===r})}var as=function(e){if(!e||!e.length)return null;for(var r=e.length,n=0,a=0,i=0,o=0,c=1/0,l=-1/0,u=0,s=0,f=0;f<r;f++)u=e[f].cx||0,s=e[f].cy||0,n+=u,a+=s,i+=u*s,o+=u*u,c=Math.min(c,u),l=Math.max(l,u);var d=r*o!==n*n?(r*i-n*a)/(r*o-n*n):0;return{xmin:c,xmax:l,a:d,b:(a-d*n)/r}};function Ot(t,e){for(var r in t)if({}.hasOwnProperty.call(t,r)&&(!{}.hasOwnProperty.call(e,r)||t[r]!==e[r]))return!1;for(var n in e)if({}.hasOwnProperty.call(e,n)&&!{}.hasOwnProperty.call(t,n))return!1;return!0}function pa(t){"@babel/helpers - typeof";return pa=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},pa(t)}var is=["viewBox","children"],os=["aria-activedescendant","aria-atomic","aria-autocomplete","aria-busy","aria-checked","aria-colcount","aria-colindex","aria-colspan","aria-controls","aria-current","aria-describedby","aria-details","aria-disabled","aria-errormessage","aria-expanded","aria-flowto","aria-haspopup","aria-hidden","aria-invalid","aria-keyshortcuts","aria-label","aria-labelledby","aria-level","aria-live","aria-modal","aria-multiline","aria-multiselectable","aria-orientation","aria-owns","aria-placeholder","aria-posinset","aria-pressed","aria-readonly","aria-relevant","aria-required","aria-roledescription","aria-rowcount","aria-rowindex","aria-rowspan","aria-selected","aria-setsize","aria-sort","aria-valuemax","aria-valuemin","aria-valuenow","aria-valuetext","className","color","height","id","lang","max","media","method","min","name","style","target","width","role","tabIndex","accentHeight","accumulate","additive","alignmentBaseline","allowReorder","alphabetic","amplitude","arabicForm","ascent","attributeName","attributeType","autoReverse","azimuth","baseFrequency","baselineShift","baseProfile","bbox","begin","bias","by","calcMode","capHeight","clip","clipPath","clipPathUnits","clipRule","colorInterpolation","colorInterpolationFilters","colorProfile","colorRendering","contentScriptType","contentStyleType","cursor","cx","cy","d","decelerate","descent","diffuseConstant","direction","display","divisor","dominantBaseline","dur","dx","dy","edgeMode","elevation","enableBackground","end","exponent","externalResourcesRequired","fill","fillOpacity","fillRule","filter","filterRes","filterUnits","floodColor","floodOpacity","focusable","fontFamily","fontSize","fontSizeAdjust","fontStretch","fontStyle","fontVariant","fontWeight","format","from","fx","fy","g1","g2","glyphName","glyphOrientationHorizontal","glyphOrientationVertical","glyphRef","gradientTransform","gradientUnits","hanging","horizAdvX","horizOriginX","href","ideographic","imageRendering","in2","in","intercept","k1","k2","k3","k4","k","kernelMatrix","kernelUnitLength","kerning","keyPoints","keySplines","keyTimes","lengthAdjust","letterSpacing","lightingColor","limitingConeAngle","local","markerEnd","markerHeight","markerMid","markerStart","markerUnits","markerWidth","mask","maskContentUnits","maskUnits","mathematical","mode","numOctaves","offset","opacity","operator","order","orient","orientation","origin","overflow","overlinePosition","overlineThickness","paintOrder","panose1","pathLength","patternContentUnits","patternTransform","patternUnits","pointerEvents","pointsAtX","pointsAtY","pointsAtZ","preserveAlpha","preserveAspectRatio","primitiveUnits","r","radius","refX","refY","renderingIntent","repeatCount","repeatDur","requiredExtensions","requiredFeatures","restart","result","rotate","rx","ry","seed","shapeRendering","slope","spacing","specularConstant","specularExponent","speed","spreadMethod","startOffset","stdDeviation","stemh","stemv","stitchTiles","stopColor","stopOpacity","strikethroughPosition","strikethroughThickness","string","stroke","strokeDasharray","strokeDashoffset","strokeLinecap","strokeLinejoin","strokeMiterlimit","strokeOpacity","strokeWidth","surfaceScale","systemLanguage","tableValues","targetX","targetY","textAnchor","textDecoration","textLength","textRendering","to","transform","u1","u2","underlinePosition","underlineThickness","unicode","unicodeBidi","unicodeRange","unitsPerEm","vAlphabetic","values","vectorEffect","version","vertAdvY","vertOriginX","vertOriginY","vHanging","vIdeographic","viewTarget","visibility","vMathematical","widths","wordSpacing","writingMode","x1","x2","x","xChannelSelector","xHeight","xlinkActuate","xlinkArcrole","xlinkHref","xlinkRole","xlinkShow","xlinkTitle","xlinkType","xmlBase","xmlLang","xmlns","xmlnsXlink","xmlSpace","y1","y2","y","yChannelSelector","z","zoomAndPan","ref","key","angle"],Ci=["points","pathLength"],ta={svg:is,polygon:Ci,polyline:Ci},di=["dangerouslySetInnerHTML","onCopy","onCopyCapture","onCut","onCutCapture","onPaste","onPasteCapture","onCompositionEnd","onCompositionEndCapture","onCompositionStart","onCompositionStartCapture","onCompositionUpdate","onCompositionUpdateCapture","onFocus","onFocusCapture","onBlur","onBlurCapture","onChange","onChangeCapture","onBeforeInput","onBeforeInputCapture","onInput","onInputCapture","onReset","onResetCapture","onSubmit","onSubmitCapture","onInvalid","onInvalidCapture","onLoad","onLoadCapture","onError","onErrorCapture","onKeyDown","onKeyDownCapture","onKeyPress","onKeyPressCapture","onKeyUp","onKeyUpCapture","onAbort","onAbortCapture","onCanPlay","onCanPlayCapture","onCanPlayThrough","onCanPlayThroughCapture","onDurationChange","onDurationChangeCapture","onEmptied","onEmptiedCapture","onEncrypted","onEncryptedCapture","onEnded","onEndedCapture","onLoadedData","onLoadedDataCapture","onLoadedMetadata","onLoadedMetadataCapture","onLoadStart","onLoadStartCapture","onPause","onPauseCapture","onPlay","onPlayCapture","onPlaying","onPlayingCapture","onProgress","onProgressCapture","onRateChange","onRateChangeCapture","onSeeked","onSeekedCapture","onSeeking","onSeekingCapture","onStalled","onStalledCapture","onSuspend","onSuspendCapture","onTimeUpdate","onTimeUpdateCapture","onVolumeChange","onVolumeChangeCapture","onWaiting","onWaitingCapture","onAuxClick","onAuxClickCapture","onClick","onClickCapture","onContextMenu","onContextMenuCapture","onDoubleClick","onDoubleClickCapture","onDrag","onDragCapture","onDragEnd","onDragEndCapture","onDragEnter","onDragEnterCapture","onDragExit","onDragExitCapture","onDragLeave","onDragLeaveCapture","onDragOver","onDragOverCapture","onDragStart","onDragStartCapture","onDrop","onDropCapture","onMouseDown","onMouseDownCapture","onMouseEnter","onMouseLeave","onMouseMove","onMouseMoveCapture","onMouseOut","onMouseOutCapture","onMouseOver","onMouseOverCapture","onMouseUp","onMouseUpCapture","onSelect","onSelectCapture","onTouchCancel","onTouchCancelCapture","onTouchEnd","onTouchEndCapture","onTouchMove","onTouchMoveCapture","onTouchStart","onTouchStartCapture","onPointerDown","onPointerDownCapture","onPointerMove","onPointerMoveCapture","onPointerUp","onPointerUpCapture","onPointerCancel","onPointerCancelCapture","onPointerEnter","onPointerEnterCapture","onPointerLeave","onPointerLeaveCapture","onPointerOver","onPointerOverCapture","onPointerOut","onPointerOutCapture","onGotPointerCapture","onGotPointerCaptureCapture","onLostPointerCapture","onLostPointerCaptureCapture","onScroll","onScrollCapture","onWheel","onWheelCapture","onAnimationStart","onAnimationStartCapture","onAnimationEnd","onAnimationEndCapture","onAnimationIteration","onAnimationIterationCapture","onTransitionEnd","onTransitionEndCapture"],cn=function(e,r){if(!e||typeof e=="function"||typeof e=="boolean")return null;var n=e;if(B.isValidElement(e)&&(n=e.props),!Wt(n))return null;var a={};return Object.keys(n).forEach(function(i){di.includes(i)&&(a[i]=r||function(o){return n[i](n,o)})}),a},cs=function(e,r,n){return function(a){return e(r,n,a),null}},Ve=function(e,r,n){if(!Wt(e)||pa(e)!=="object")return null;var a=null;return Object.keys(e).forEach(function(i){var o=e[i];di.includes(i)&&typeof o=="function"&&(a||(a={}),a[i]=cs(o,r,n))}),a},ls=["children"],us=["children"];function Di(t,e){if(t==null)return{};var r=ss(t,e),n,a;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(a=0;a<i.length;a++)n=i[a],!(e.indexOf(n)>=0)&&Object.prototype.propertyIsEnumerable.call(t,n)&&(r[n]=t[n])}return r}function ss(t,e){if(t==null)return{};var r={},n=Object.keys(t),a,i;for(i=0;i<n.length;i++)a=n[i],!(e.indexOf(a)>=0)&&(r[a]=t[a]);return r}function va(t){"@babel/helpers - typeof";return va=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},va(t)}var Mi={click:"onClick",mousedown:"onMouseDown",mouseup:"onMouseUp",mouseover:"onMouseOver",mousemove:"onMouseMove",mouseout:"onMouseOut",mouseenter:"onMouseEnter",mouseleave:"onMouseLeave",touchcancel:"onTouchCancel",touchend:"onTouchEnd",touchmove:"onTouchMove",touchstart:"onTouchStart"},De=function(e){return typeof e=="string"?e:e?e.displayName||e.name||"Component":""},Bi=null,ra=null,pi=function t(e){if(e===Bi&&Array.isArray(ra))return ra;var r=[];return B.Children.forEach(e,function(n){z(n)||(da.isFragment(n)?r=r.concat(t(n.props.children)):r.push(n))}),ra=r,Bi=e,r};function de(t,e){var r=[],n=[];return Array.isArray(e)?n=e.map(function(a){return De(a)}):n=[De(e)],pi(t).forEach(function(a){var i=ye(a,"type.displayName")||ye(a,"type.name");n.indexOf(i)!==-1&&r.push(a)}),r}function he(t,e){var r=de(t,e);return r&&r[0]}var Ni=function(e){if(!e||!e.props)return!1;var r=e.props,n=r.width,a=r.height;return!(!M(n)||n<=0||!M(a)||a<=0)},fs=["a","altGlyph","altGlyphDef","altGlyphItem","animate","animateColor","animateMotion","animateTransform","circle","clipPath","color-profile","cursor","defs","desc","ellipse","feBlend","feColormatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","filter","font","font-face","font-face-format","font-face-name","font-face-url","foreignObject","g","glyph","glyphRef","hkern","image","line","lineGradient","marker","mask","metadata","missing-glyph","mpath","path","pattern","polygon","polyline","radialGradient","rect","script","set","stop","style","svg","switch","symbol","text","textPath","title","tref","tspan","use","view","vkern"],ds=function(e){return e&&e.type&&Wr(e.type)&&fs.indexOf(e.type)>=0},Gc=function(e){return e&&va(e)==="object"&&"cx"in e&&"cy"in e&&"r"in e},ps=function(e,r,n,a){var i,o=(i=ta==null?void 0:ta[a])!==null&&i!==void 0?i:[];return!W(e)&&(a&&o.includes(r)||os.includes(r))||n&&di.includes(r)},R=function(e,r,n){if(!e||typeof e=="function"||typeof e=="boolean")return null;var a=e;if(B.isValidElement(e)&&(a=e.props),!Wt(a))return null;var i={};return Object.keys(a).forEach(function(o){var c;ps((c=a)===null||c===void 0?void 0:c[o],o,r,n)&&(i[o]=a[o])}),i},ha=function t(e,r){if(e===r)return!0;var n=B.Children.count(e);if(n!==B.Children.count(r))return!1;if(n===0)return!0;if(n===1)return Li(Array.isArray(e)?e[0]:e,Array.isArray(r)?r[0]:r);for(var a=0;a<n;a++){var i=e[a],o=r[a];if(Array.isArray(i)||Array.isArray(o)){if(!t(i,o))return!1}else if(!Li(i,o))return!1}return!0},Li=function(e,r){if(z(e)&&z(r))return!0;if(!z(e)&&!z(r)){var n=e.props||{},a=n.children,i=Di(n,ls),o=r.props||{},c=o.children,l=Di(o,us);return a&&c?Ot(i,l)&&ha(a,c):!a&&!c?Ot(i,l):!1}return!1},Ri=function(e,r){var n=[],a={};return pi(e).forEach(function(i,o){if(ds(i))n.push(i);else if(i){var c=De(i.type),l=r[c]||{},u=l.handler,s=l.once;if(u&&(!s||!a[c])){var f=u(i,c,o);n.push(f),a[c]=!0}}}),n},vs=function(e){var r=e&&e.type;return r&&Mi[r]?Mi[r]:null},hs=function(e,r){return pi(r).indexOf(e)},ys=["children","width","height","viewBox","className","style","title","desc"];function ya(){return ya=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(t[n]=r[n])}return t},ya.apply(this,arguments)}function ms(t,e){if(t==null)return{};var r=gs(t,e),n,a;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(a=0;a<i.length;a++)n=i[a],!(e.indexOf(n)>=0)&&Object.prototype.propertyIsEnumerable.call(t,n)&&(r[n]=t[n])}return r}function gs(t,e){if(t==null)return{};var r={},n=Object.keys(t),a,i;for(i=0;i<n.length;i++)a=n[i],!(e.indexOf(a)>=0)&&(r[a]=t[a]);return r}function ma(t){var e=t.children,r=t.width,n=t.height,a=t.viewBox,i=t.className,o=t.style,c=t.title,l=t.desc,u=ms(t,ys),s=a||{width:r,height:n,x:0,y:0},f=X("recharts-surface",i);return A.createElement("svg",ya({},R(u,!0,"svg"),{className:f,width:r,height:n,style:o,viewBox:"".concat(s.x," ").concat(s.y," ").concat(s.width," ").concat(s.height)}),A.createElement("title",null,c),A.createElement("desc",null,l),e)}var bs=["children","className"];function ga(){return ga=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(t[n]=r[n])}return t},ga.apply(this,arguments)}function xs(t,e){if(t==null)return{};var r=Os(t,e),n,a;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(a=0;a<i.length;a++)n=i[a],!(e.indexOf(n)>=0)&&Object.prototype.propertyIsEnumerable.call(t,n)&&(r[n]=t[n])}return r}function Os(t,e){if(t==null)return{};var r={},n=Object.keys(t),a,i;for(i=0;i<n.length;i++)a=n[i],!(e.indexOf(a)>=0)&&(r[a]=t[a]);return r}var H=A.forwardRef(function(t,e){var r=t.children,n=t.className,a=xs(t,bs),i=X("recharts-layer",n);return A.createElement("g",ga({className:i},R(a,!0),{ref:e}),r)}),je=function(e,r){for(var n=arguments.length,a=new Array(n>2?n-2:0),i=2;i<n;i++)a[i-2]=arguments[i]};function sr(t){"@babel/helpers - typeof";return sr=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},sr(t)}var As=["type","size","sizeType"];function ba(){return ba=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(t[n]=r[n])}return t},ba.apply(this,arguments)}function zi(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(a){return Object.getOwnPropertyDescriptor(t,a).enumerable})),r.push.apply(r,n)}return r}function Wi(t){for(var e=1;e<arguments.length;e++){var r=arguments[e]!=null?arguments[e]:{};e%2?zi(Object(r),!0).forEach(function(n){ws(t,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):zi(Object(r)).forEach(function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(r,n))})}return t}function ws(t,e,r){return e=Ps(e),e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function Ps(t){var e=Ss(t,"string");return sr(e)=="symbol"?e:String(e)}function Ss(t,e){if(sr(t)!="object"||!t)return t;var r=t[Symbol.toPrimitive];if(r!==void 0){var n=r.call(t,e||"default");if(sr(n)!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function js(t,e){if(t==null)return{};var r=Es(t,e),n,a;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(a=0;a<i.length;a++)n=i[a],!(e.indexOf(n)>=0)&&Object.prototype.propertyIsEnumerable.call(t,n)&&(r[n]=t[n])}return r}function Es(t,e){if(t==null)return{};var r={},n=Object.keys(t),a,i;for(i=0;i<n.length;i++)a=n[i],!(e.indexOf(a)>=0)&&(r[a]=t[a]);return r}var Hc={symbolCircle:Kc,symbolCross:xu,symbolDiamond:Ou,symbolSquare:Au,symbolStar:wu,symbolTriangle:Pu,symbolWye:Su},$s=Math.PI/180,Ts=function(e){var r="symbol".concat(Dn(e));return Hc[r]||Kc},ks=function(e,r,n){if(r==="area")return e;switch(n){case"cross":return 5*e*e/9;case"diamond":return .5*e*e/Math.sqrt(3);case"square":return e*e;case"star":{var a=18*$s;return 1.25*e*e*(Math.tan(a)-Math.tan(a*2)*Math.pow(Math.tan(a),2))}case"triangle":return Math.sqrt(3)*e*e/4;case"wye":return(21-10*Math.sqrt(3))*e*e/8;default:return Math.PI*e*e/4}},Is=function(e,r){Hc["symbol".concat(Dn(e))]=r},Bn=function(e){var r=e.type,n=r===void 0?"circle":r,a=e.size,i=a===void 0?64:a,o=e.sizeType,c=o===void 0?"area":o,l=js(e,As),u=Wi(Wi({},l),{},{type:n,size:i,sizeType:c}),s=function(){var g=Ts(n),O=bu().type(g).size(ks(i,c,n));return O()},f=u.className,d=u.cx,p=u.cy,m=R(u,!0);return d===+d&&p===+p&&i===+i?A.createElement("path",ba({},m,{className:X("recharts-symbols",f),transform:"translate(".concat(d,", ").concat(p,")"),d:s()})):null};Bn.registerSymbol=Is;function wt(t){"@babel/helpers - typeof";return wt=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},wt(t)}function xa(){return xa=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(t[n]=r[n])}return t},xa.apply(this,arguments)}function Ki(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(a){return Object.getOwnPropertyDescriptor(t,a).enumerable})),r.push.apply(r,n)}return r}function _s(t){for(var e=1;e<arguments.length;e++){var r=arguments[e]!=null?arguments[e]:{};e%2?Ki(Object(r),!0).forEach(function(n){fr(t,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):Ki(Object(r)).forEach(function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(r,n))})}return t}function Cs(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function Ds(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,Yc(n.key),n)}}function Ms(t,e,r){return e&&Ds(t.prototype,e),Object.defineProperty(t,"prototype",{writable:!1}),t}function Bs(t,e,r){return e=ln(e),Ns(t,Uc()?Reflect.construct(e,r||[],ln(t).constructor):e.apply(t,r))}function Ns(t,e){if(e&&(wt(e)==="object"||typeof e=="function"))return e;if(e!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return Ls(t)}function Ls(t){if(t===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function Uc(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch{}return(Uc=function(){return!!t})()}function ln(t){return ln=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(r){return r.__proto__||Object.getPrototypeOf(r)},ln(t)}function Rs(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&Oa(t,e)}function Oa(t,e){return Oa=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(n,a){return n.__proto__=a,n},Oa(t,e)}function fr(t,e,r){return e=Yc(e),e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function Yc(t){var e=zs(t,"string");return wt(e)=="symbol"?e:String(e)}function zs(t,e){if(wt(t)!="object"||!t)return t;var r=t[Symbol.toPrimitive];if(r!==void 0){var n=r.call(t,e||"default");if(wt(n)!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}var be=32,vi=function(t){Rs(e,t);function e(){return Cs(this,e),Bs(this,e,arguments)}return Ms(e,[{key:"renderIcon",value:function(n){var a=this.props.inactiveColor,i=be/2,o=be/6,c=be/3,l=n.inactive?a:n.color;if(n.type==="plainline")return A.createElement("line",{strokeWidth:4,fill:"none",stroke:l,strokeDasharray:n.payload.strokeDasharray,x1:0,y1:i,x2:be,y2:i,className:"recharts-legend-icon"});if(n.type==="line")return A.createElement("path",{strokeWidth:4,fill:"none",stroke:l,d:"M0,".concat(i,"h").concat(c,`
|
|
2
2
|
A`).concat(o,",").concat(o,",0,1,1,").concat(2*c,",").concat(i,`
|
|
3
3
|
H`).concat(be,"M").concat(2*c,",").concat(i,`
|
|
4
4
|
A`).concat(o,",").concat(o,",0,1,1,").concat(c,",").concat(i),className:"recharts-legend-icon"});if(n.type==="rect")return A.createElement("path",{stroke:"none",fill:l,d:"M0,".concat(be/8,"h").concat(be,"v").concat(be*3/4,"h").concat(-be,"z"),className:"recharts-legend-icon"});if(A.isValidElement(n.legendIcon)){var u=_s({},n);return delete u.legendIcon,A.cloneElement(n.legendIcon,u)}return A.createElement(Bn,{fill:l,cx:i,cy:i,size:be,sizeType:"diameter",type:n.type})}},{key:"renderItems",value:function(){var n=this,a=this.props,i=a.payload,o=a.iconSize,c=a.layout,l=a.formatter,u=a.inactiveColor,s={x:0,y:0,width:be,height:be},f={display:c==="horizontal"?"inline-block":"block",marginRight:10},d={display:"inline-block",verticalAlign:"middle",marginRight:4};return i.map(function(p,m){var y=p.formatter||l,g=X(fr(fr({"recharts-legend-item":!0},"legend-item-".concat(m),!0),"inactive",p.inactive));if(p.type==="none")return null;var O=W(p.value)?null:p.value;je(!W(p.value),`The name property is also required when using a function for the dataKey of a chart's cartesian components. Ex: <Bar name="Name of my Data"/>`);var b=p.inactive?u:p.color;return A.createElement("li",xa({className:g,style:f,key:"legend-item-".concat(m)},Ve(n.props,p,m)),A.createElement(ma,{width:o,height:o,viewBox:s,style:d},n.renderIcon(p)),A.createElement("span",{className:"recharts-legend-item-text",style:{color:b}},y?y(O,p,m):O))})}},{key:"render",value:function(){var n=this.props,a=n.payload,i=n.layout,o=n.align;if(!a||!a.length)return null;var c={padding:0,margin:0,textAlign:i==="horizontal"?o:"left"};return A.createElement("ul",{className:"recharts-default-legend",style:c},this.renderItems())}}]),e}(B.PureComponent);fr(vi,"displayName","Legend");fr(vi,"defaultProps",{iconSize:14,layout:"horizontal",align:"center",verticalAlign:"middle",inactiveColor:"#ccc"});function qc(t,e,r){return e===!0?Ti(t,r):W(e)?Ti(t,e):t}function Pt(t){"@babel/helpers - typeof";return Pt=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Pt(t)}var Ws=["ref"];function Fi(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(a){return Object.getOwnPropertyDescriptor(t,a).enumerable})),r.push.apply(r,n)}return r}function Ze(t){for(var e=1;e<arguments.length;e++){var r=arguments[e]!=null?arguments[e]:{};e%2?Fi(Object(r),!0).forEach(function(n){Nn(t,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):Fi(Object(r)).forEach(function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(r,n))})}return t}function Ks(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function Vi(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,Qc(n.key),n)}}function Fs(t,e,r){return e&&Vi(t.prototype,e),r&&Vi(t,r),Object.defineProperty(t,"prototype",{writable:!1}),t}function Vs(t,e,r){return e=un(e),Xs(t,Zc()?Reflect.construct(e,r||[],un(t).constructor):e.apply(t,r))}function Xs(t,e){if(e&&(Pt(e)==="object"||typeof e=="function"))return e;if(e!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return Jc(t)}function Zc(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch{}return(Zc=function(){return!!t})()}function un(t){return un=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(r){return r.__proto__||Object.getPrototypeOf(r)},un(t)}function Jc(t){if(t===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function Gs(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&Aa(t,e)}function Aa(t,e){return Aa=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(n,a){return n.__proto__=a,n},Aa(t,e)}function Nn(t,e,r){return e=Qc(e),e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function Qc(t){var e=Hs(t,"string");return Pt(e)=="symbol"?e:String(e)}function Hs(t,e){if(Pt(t)!="object"||!t)return t;var r=t[Symbol.toPrimitive];if(r!==void 0){var n=r.call(t,e||"default");if(Pt(n)!="object")return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function Us(t,e){if(t==null)return{};var r=Ys(t,e),n,a;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(a=0;a<i.length;a++)n=i[a],!(e.indexOf(n)>=0)&&Object.prototype.propertyIsEnumerable.call(t,n)&&(r[n]=t[n])}return r}function Ys(t,e){if(t==null)return{};var r={},n=Object.keys(t),a,i;for(i=0;i<n.length;i++)a=n[i],!(e.indexOf(a)>=0)&&(r[a]=t[a]);return r}function qs(t){return t.value}function Zs(t,e){if(A.isValidElement(t))return A.cloneElement(t,e);if(typeof t=="function")return A.createElement(t,e);e.ref;var r=Us(e,Ws);return A.createElement(vi,r)}var Xi=1,dr=function(t){Gs(e,t);function e(){var r;Ks(this,e);for(var n=arguments.length,a=new Array(n),i=0;i<n;i++)a[i]=arguments[i];return r=Vs(this,e,[].concat(a)),Nn(Jc(r),"lastBoundingBox",{width:-1,height:-1}),r}return Fs(e,[{key:"componentDidMount",value:function(){this.updateBBox()}},{key:"componentDidUpdate",value:function(){this.updateBBox()}},{key:"getBBox",value:function(){if(this.wrapperNode&&this.wrapperNode.getBoundingClientRect){var n=this.wrapperNode.getBoundingClientRect();return n.height=this.wrapperNode.offsetHeight,n.width=this.wrapperNode.offsetWidth,n}return null}},{key:"updateBBox",value:function(){var n=this.props.onBBoxUpdate,a=this.getBBox();a?(Math.abs(a.width-this.lastBoundingBox.width)>Xi||Math.abs(a.height-this.lastBoundingBox.height)>Xi)&&(this.lastBoundingBox.width=a.width,this.lastBoundingBox.height=a.height,n&&n(a)):(this.lastBoundingBox.width!==-1||this.lastBoundingBox.height!==-1)&&(this.lastBoundingBox.width=-1,this.lastBoundingBox.height=-1,n&&n(null))}},{key:"getBBoxSnapshot",value:function(){return this.lastBoundingBox.width>=0&&this.lastBoundingBox.height>=0?Ze({},this.lastBoundingBox):{width:0,height:0}}},{key:"getDefaultPosition",value:function(n){var a=this.props,i=a.layout,o=a.align,c=a.verticalAlign,l=a.margin,u=a.chartWidth,s=a.chartHeight,f,d;if(!n||(n.left===void 0||n.left===null)&&(n.right===void 0||n.right===null))if(o==="center"&&i==="vertical"){var p=this.getBBoxSnapshot();f={left:((u||0)-p.width)/2}}else f=o==="right"?{right:l&&l.right||0}:{left:l&&l.left||0};if(!n||(n.top===void 0||n.top===null)&&(n.bottom===void 0||n.bottom===null))if(c==="middle"){var m=this.getBBoxSnapshot();d={top:((s||0)-m.height)/2}}else d=c==="bottom"?{bottom:l&&l.bottom||0}:{top:l&&l.top||0};return Ze(Ze({},f),d)}},{key:"render",value:function(){var n=this,a=this.props,i=a.content,o=a.width,c=a.height,l=a.wrapperStyle,u=a.payloadUniqBy,s=a.payload,f=Ze(Ze({position:"absolute",width:o||"auto",height:c||"auto"},this.getDefaultPosition(l)),l);return A.createElement("div",{className:"recharts-legend-wrapper",style:f,ref:function(p){n.wrapperNode=p}},Zs(i,Ze(Ze({},this.props),{},{payload:qc(s,u,qs)})))}}],[{key:"getWithHeight",value:function(n,a){var i=n.props.layout;return i==="vertical"&&M(n.props.height)?{height:n.props.height}:i==="horizontal"?{width:n.props.width||a}:null}}]),e}(B.PureComponent);Nn(dr,"displayName","Legend");Nn(dr,"defaultProps",{iconSize:14,layout:"horizontal",align:"center",verticalAlign:"bottom"});function pr(t){"@babel/helpers - typeof";return pr=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},pr(t)}function wa(){return wa=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(t[n]=r[n])}return t},wa.apply(this,arguments)}function Js(t,e){return rf(t)||tf(t,e)||ef(t,e)||Qs()}function Qs(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
|
phoenix/server/thread_server.py
CHANGED
|
@@ -4,7 +4,7 @@ from threading import Thread
|
|
|
4
4
|
from time import sleep, time
|
|
5
5
|
from typing import Generator
|
|
6
6
|
|
|
7
|
-
from
|
|
7
|
+
from fastapi import FastAPI
|
|
8
8
|
from uvicorn import Config, Server
|
|
9
9
|
from uvicorn.config import LoopSetupType
|
|
10
10
|
|
|
@@ -24,7 +24,7 @@ class ThreadServer(Server):
|
|
|
24
24
|
|
|
25
25
|
def __init__(
|
|
26
26
|
self,
|
|
27
|
-
app:
|
|
27
|
+
app: FastAPI,
|
|
28
28
|
host: str,
|
|
29
29
|
port: int,
|
|
30
30
|
root_path: str,
|
phoenix/server/types.py
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
from typing import AsyncContextManager, Callable
|
|
2
|
+
|
|
3
|
+
from sqlalchemy.ext.asyncio import AsyncSession
|
|
4
|
+
|
|
5
|
+
from phoenix.db.helpers import SupportedSQLDialect
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class DbSessionFactory:
|
|
9
|
+
def __init__(
|
|
10
|
+
self,
|
|
11
|
+
db: Callable[[], AsyncContextManager[AsyncSession]],
|
|
12
|
+
dialect: str,
|
|
13
|
+
):
|
|
14
|
+
self._db = db
|
|
15
|
+
self.dialect = SupportedSQLDialect(dialect)
|
|
16
|
+
|
|
17
|
+
def __call__(self) -> AsyncContextManager[AsyncSession]:
|
|
18
|
+
return self._db()
|
phoenix/session/client.py
CHANGED
|
@@ -49,6 +49,7 @@ from phoenix.session.data_extractor import DEFAULT_SPAN_LIMIT, TraceDataExtracto
|
|
|
49
49
|
from phoenix.trace import Evaluations, TraceDataset
|
|
50
50
|
from phoenix.trace.dsl import SpanQuery
|
|
51
51
|
from phoenix.trace.otel import encode_span_to_otlp
|
|
52
|
+
from phoenix.utilities.client import VersionedClient
|
|
52
53
|
|
|
53
54
|
logger = logging.getLogger(__name__)
|
|
54
55
|
|
|
@@ -92,7 +93,7 @@ class Client(TraceDataExtractor):
|
|
|
92
93
|
host = "127.0.0.1"
|
|
93
94
|
base_url = endpoint or get_env_collector_endpoint() or f"http://{host}:{get_env_port()}"
|
|
94
95
|
self._base_url = base_url if base_url.endswith("/") else base_url + "/"
|
|
95
|
-
self._client =
|
|
96
|
+
self._client = VersionedClient(headers=headers)
|
|
96
97
|
weakref.finalize(self, self._client.close)
|
|
97
98
|
if warn_if_server_not_running:
|
|
98
99
|
self._warn_if_phoenix_is_not_running()
|
|
@@ -301,14 +302,15 @@ class Client(TraceDataExtractor):
|
|
|
301
302
|
for otlp_span in otlp_spans:
|
|
302
303
|
serialized = otlp_span.SerializeToString()
|
|
303
304
|
content = gzip.compress(serialized)
|
|
304
|
-
self._client.post(
|
|
305
|
+
response = self._client.post(
|
|
305
306
|
url=urljoin(self._base_url, "v1/traces"),
|
|
306
307
|
content=content,
|
|
307
308
|
headers={
|
|
308
309
|
"content-type": "application/x-protobuf",
|
|
309
310
|
"content-encoding": "gzip",
|
|
310
311
|
},
|
|
311
|
-
)
|
|
312
|
+
)
|
|
313
|
+
response.raise_for_status()
|
|
312
314
|
|
|
313
315
|
def _get_dataset_id_by_name(self, name: str) -> str:
|
|
314
316
|
"""
|
phoenix/session/session.py
CHANGED
|
@@ -41,13 +41,13 @@ from phoenix.core.model_schema_adapter import create_model_from_inferences
|
|
|
41
41
|
from phoenix.inferences.inferences import EMPTY_INFERENCES, Inferences
|
|
42
42
|
from phoenix.pointcloud.umap_parameters import get_umap_parameters
|
|
43
43
|
from phoenix.server.app import (
|
|
44
|
-
SessionFactory,
|
|
45
44
|
_db,
|
|
46
45
|
create_app,
|
|
47
46
|
create_engine_and_run_migrations,
|
|
48
47
|
instrument_engine_if_enabled,
|
|
49
48
|
)
|
|
50
49
|
from phoenix.server.thread_server import ThreadServer
|
|
50
|
+
from phoenix.server.types import DbSessionFactory
|
|
51
51
|
from phoenix.services import AppService
|
|
52
52
|
from phoenix.session.client import Client
|
|
53
53
|
from phoenix.session.data_extractor import DEFAULT_SPAN_LIMIT, TraceDataExtractor
|
|
@@ -375,7 +375,7 @@ class ThreadSession(Session):
|
|
|
375
375
|
# Initialize an app service that keeps the server running
|
|
376
376
|
engine = create_engine_and_run_migrations(database_url)
|
|
377
377
|
instrumentation_cleanups = instrument_engine_if_enabled(engine)
|
|
378
|
-
factory =
|
|
378
|
+
factory = DbSessionFactory(db=_db(engine), dialect=engine.dialect.name)
|
|
379
379
|
self.app = create_app(
|
|
380
380
|
db=factory,
|
|
381
381
|
export_path=self.export_path,
|
phoenix/trace/dsl/filter.py
CHANGED
|
@@ -56,11 +56,7 @@ class AliasedAnnotationRelation:
|
|
|
56
56
|
table = aliased(models.SpanAnnotation, name=table_alias)
|
|
57
57
|
object.__setattr__(self, "_label_attribute_alias", label_attribute_alias)
|
|
58
58
|
object.__setattr__(self, "_score_attribute_alias", score_attribute_alias)
|
|
59
|
-
object.__setattr__(
|
|
60
|
-
self,
|
|
61
|
-
"table",
|
|
62
|
-
table,
|
|
63
|
-
)
|
|
59
|
+
object.__setattr__(self, "table", table)
|
|
64
60
|
|
|
65
61
|
@property
|
|
66
62
|
def attributes(self) -> typing.Iterator[typing.Tuple[str, Mapped[typing.Any]]]:
|
|
@@ -236,7 +232,7 @@ class SpanFilter:
|
|
|
236
232
|
for eval_alias in self._aliased_annotation_relations:
|
|
237
233
|
eval_name = eval_alias.name
|
|
238
234
|
AliasedSpanAnnotation = eval_alias.table
|
|
239
|
-
stmt = stmt.
|
|
235
|
+
stmt = stmt.outerjoin(
|
|
240
236
|
AliasedSpanAnnotation,
|
|
241
237
|
onclause=(
|
|
242
238
|
sqlalchemy.and_(
|
phoenix/trace/fixtures.py
CHANGED
|
@@ -8,7 +8,6 @@ from random import getrandbits
|
|
|
8
8
|
from tempfile import NamedTemporaryFile
|
|
9
9
|
from time import sleep, time
|
|
10
10
|
from typing import Dict, Iterable, Iterator, List, NamedTuple, Optional, Sequence, Tuple, cast
|
|
11
|
-
from urllib import request
|
|
12
11
|
from urllib.parse import urljoin
|
|
13
12
|
|
|
14
13
|
import httpx
|
|
@@ -20,7 +19,7 @@ import phoenix.trace.v1 as pb
|
|
|
20
19
|
from phoenix import Client
|
|
21
20
|
from phoenix.trace.schemas import Span
|
|
22
21
|
from phoenix.trace.trace_dataset import TraceDataset
|
|
23
|
-
from phoenix.trace.utils import json_lines_to_df
|
|
22
|
+
from phoenix.trace.utils import download_json_traces_fixture, is_jsonl_file, json_lines_to_df
|
|
24
23
|
|
|
25
24
|
logger = logging.getLogger(__name__)
|
|
26
25
|
|
|
@@ -86,7 +85,7 @@ class TracesFixture:
|
|
|
86
85
|
llama_index_rag_fixture = TracesFixture(
|
|
87
86
|
name="llama_index_rag",
|
|
88
87
|
description="Traces from running the llama_index on a RAG use case.",
|
|
89
|
-
file_name="llama_index_rag_v8.
|
|
88
|
+
file_name="llama_index_rag_v8.parquet",
|
|
90
89
|
evaluation_fixtures=(
|
|
91
90
|
EvaluationFixture(
|
|
92
91
|
evaluation_name="Q&A Correctness",
|
|
@@ -136,31 +135,31 @@ llama_index_rag_fixture = TracesFixture(
|
|
|
136
135
|
llama_index_calculator_agent_fixture = TracesFixture(
|
|
137
136
|
name="llama_index_calculator_agent",
|
|
138
137
|
description="Traces from running the llama_index with calculator tools.",
|
|
139
|
-
file_name="llama_index_calculator_agent_v3.
|
|
138
|
+
file_name="llama_index_calculator_agent_v3.parquet",
|
|
140
139
|
)
|
|
141
140
|
|
|
142
141
|
llama_index_rag_fixture_with_davinci = TracesFixture(
|
|
143
142
|
name="llama_index_rag_with_davinci",
|
|
144
143
|
description="Traces from running llama_index on a RAG use case with the completions API.",
|
|
145
|
-
file_name="llama_index_rag_with_davinci_v0.
|
|
144
|
+
file_name="llama_index_rag_with_davinci_v0.parquet",
|
|
146
145
|
)
|
|
147
146
|
|
|
148
147
|
langchain_rag_stuff_document_chain_fixture = TracesFixture(
|
|
149
148
|
name="langchain_rag_stuff_document_chain",
|
|
150
149
|
description="LangChain RAG data",
|
|
151
|
-
file_name="langchain_rag.
|
|
150
|
+
file_name="langchain_rag.parquet",
|
|
152
151
|
)
|
|
153
152
|
|
|
154
153
|
langchain_titanic_csv_agent_evaluator_fixture = TracesFixture(
|
|
155
154
|
name="lc_titanic",
|
|
156
155
|
description="LangChain titanic.csv Agent Evaluator",
|
|
157
|
-
file_name="lc_titanic.
|
|
156
|
+
file_name="lc_titanic.parquet",
|
|
158
157
|
)
|
|
159
158
|
|
|
160
159
|
langchain_qa_with_sources_fixture = TracesFixture(
|
|
161
160
|
name="langchain_qa_with_sources",
|
|
162
161
|
description="LangChain QA with sources on financial data",
|
|
163
|
-
file_name="langchain_qa_with_sources_chain.
|
|
162
|
+
file_name="langchain_qa_with_sources_chain.parquet",
|
|
164
163
|
)
|
|
165
164
|
|
|
166
165
|
random_fixture = TracesFixture(
|
|
@@ -197,26 +196,21 @@ def get_trace_fixture_by_name(fixture_name: str) -> TracesFixture:
|
|
|
197
196
|
return NAME_TO_TRACES_FIXTURE[fixture_name]
|
|
198
197
|
|
|
199
198
|
|
|
200
|
-
def download_traces_fixture(
|
|
201
|
-
fixture: TracesFixture,
|
|
202
|
-
host: Optional[str] = "https://storage.googleapis.com/",
|
|
203
|
-
bucket: Optional[str] = "arize-assets",
|
|
204
|
-
prefix: Optional[str] = "phoenix/traces/",
|
|
205
|
-
) -> List[str]:
|
|
206
|
-
"""
|
|
207
|
-
Downloads the traces fixture from the phoenix bucket.
|
|
208
|
-
"""
|
|
209
|
-
url = f"{host}{bucket}/{prefix}{fixture.file_name}"
|
|
210
|
-
with request.urlopen(url) as f:
|
|
211
|
-
return cast(List[str], f.readlines())
|
|
212
|
-
|
|
213
|
-
|
|
214
199
|
def load_example_traces(fixture_name: str) -> TraceDataset:
|
|
215
200
|
"""
|
|
216
201
|
Loads a trace dataframe by name.
|
|
217
202
|
"""
|
|
203
|
+
host = "https://storage.googleapis.com/"
|
|
204
|
+
bucket = "arize-phoenix-assets"
|
|
205
|
+
prefix = "traces/"
|
|
218
206
|
fixture = get_trace_fixture_by_name(fixture_name)
|
|
219
|
-
|
|
207
|
+
|
|
208
|
+
url = f"{host}{bucket}/{prefix}{fixture.file_name}"
|
|
209
|
+
|
|
210
|
+
if is_jsonl_file(fixture.file_name):
|
|
211
|
+
return TraceDataset(json_lines_to_df(download_json_traces_fixture(url)))
|
|
212
|
+
|
|
213
|
+
return TraceDataset(pd.read_parquet(url))
|
|
220
214
|
|
|
221
215
|
|
|
222
216
|
def get_dataset_fixtures(fixture_name: str) -> Iterable[DatasetFixture]:
|
phoenix/trace/utils.py
CHANGED
|
@@ -1,11 +1,34 @@
|
|
|
1
1
|
import json
|
|
2
|
+
import os
|
|
2
3
|
import re
|
|
3
4
|
from traceback import format_exception
|
|
4
5
|
from typing import List, Optional, Tuple, cast
|
|
6
|
+
from urllib import request
|
|
5
7
|
|
|
6
8
|
import pandas as pd
|
|
7
9
|
|
|
8
10
|
|
|
11
|
+
def is_jsonl_file(file_path: str) -> bool:
|
|
12
|
+
"""
|
|
13
|
+
Check if the given file is a Parquet file.
|
|
14
|
+
"""
|
|
15
|
+
file_extension = os.path.splitext(file_path)[-1]
|
|
16
|
+
if file_extension == ".jsonl":
|
|
17
|
+
return True
|
|
18
|
+
return False
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def download_json_traces_fixture(
|
|
22
|
+
url: str,
|
|
23
|
+
) -> List[str]:
|
|
24
|
+
"""
|
|
25
|
+
Stores the traces fixture as list of jsons from the jsonl files in the phoenix bucket.
|
|
26
|
+
"""
|
|
27
|
+
|
|
28
|
+
with request.urlopen(url) as f:
|
|
29
|
+
return cast(List[str], f.readlines())
|
|
30
|
+
|
|
31
|
+
|
|
9
32
|
def json_lines_to_df(lines: List[str]) -> pd.DataFrame:
|
|
10
33
|
"""
|
|
11
34
|
Convert a list of JSON line strings to a Pandas DataFrame.
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import warnings
|
|
2
|
+
from typing import Any
|
|
3
|
+
|
|
4
|
+
import httpx
|
|
5
|
+
|
|
6
|
+
PHOENIX_SERVER_VERSION_HEADER = "x-phoenix-server-version"
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class VersionedClient(httpx.Client):
|
|
10
|
+
"""
|
|
11
|
+
A httpx.Client wrapper that warns if there is a server/client version mismatch.
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
def __init__(self, *args: Any, **kwargs: Any):
|
|
15
|
+
from phoenix import __version__ as phoenix_version
|
|
16
|
+
|
|
17
|
+
super().__init__(*args, **kwargs)
|
|
18
|
+
self._client_phoenix_version = phoenix_version
|
|
19
|
+
self._warned_on_minor_version_mismatch = False
|
|
20
|
+
|
|
21
|
+
def _check_version(self, response: httpx.Response) -> None:
|
|
22
|
+
server_version = response.headers.get(PHOENIX_SERVER_VERSION_HEADER)
|
|
23
|
+
|
|
24
|
+
if server_version is None:
|
|
25
|
+
warnings.warn(
|
|
26
|
+
"The Phoenix server has an unknown version and may have compatibility issues."
|
|
27
|
+
)
|
|
28
|
+
return
|
|
29
|
+
|
|
30
|
+
try:
|
|
31
|
+
client_major, client_minor, client_patch = map(
|
|
32
|
+
int, self._client_phoenix_version.split(".")
|
|
33
|
+
)
|
|
34
|
+
server_major, server_minor, server_patch = map(int, server_version.split("."))
|
|
35
|
+
if abs(server_major - client_major) >= 1:
|
|
36
|
+
warnings.warn(
|
|
37
|
+
f"⚠️⚠️ The Phoenix server ({server_version}) and client "
|
|
38
|
+
f"({self._client_phoenix_version}) versions are severely mismatched. Upgrade "
|
|
39
|
+
" either the client or server to ensure API compatibility ⚠️⚠️"
|
|
40
|
+
)
|
|
41
|
+
elif (
|
|
42
|
+
abs(server_minor - client_minor) >= 1 and not self._warned_on_minor_version_mismatch
|
|
43
|
+
):
|
|
44
|
+
self._warned_on_minor_version_mismatch = True
|
|
45
|
+
warnings.warn(
|
|
46
|
+
f"The Phoenix server ({server_version}) and client "
|
|
47
|
+
f"({self._client_phoenix_version}) versions are mismatched and may have "
|
|
48
|
+
"compatibility issues."
|
|
49
|
+
)
|
|
50
|
+
except ValueError:
|
|
51
|
+
# if either the client or server version includes a suffix e.g. "rc1", check for an
|
|
52
|
+
# exact version match of the version string
|
|
53
|
+
if self._client_phoenix_version != server_version:
|
|
54
|
+
warnings.warn(
|
|
55
|
+
f"The Phoenix server ({server_version}) and client "
|
|
56
|
+
f"({self._client_phoenix_version}) versions are mismatched and may have "
|
|
57
|
+
"compatibility issues."
|
|
58
|
+
)
|
|
59
|
+
|
|
60
|
+
def request(self, *args: Any, **kwargs: Any) -> httpx.Response:
|
|
61
|
+
response = super().request(*args, **kwargs)
|
|
62
|
+
self._check_version(response)
|
|
63
|
+
return response
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
class VersionedAsyncClient(httpx.AsyncClient):
|
|
67
|
+
"""
|
|
68
|
+
A httpx.Client wrapper that warns if there is a server/client version mismatch.
|
|
69
|
+
"""
|
|
70
|
+
|
|
71
|
+
def __init__(self, *args: Any, **kwargs: Any):
|
|
72
|
+
from phoenix import __version__ as phoenix_version
|
|
73
|
+
|
|
74
|
+
super().__init__(*args, **kwargs)
|
|
75
|
+
self._client_phoenix_version = phoenix_version
|
|
76
|
+
self._warned_on_minor_version_mismatch = False
|
|
77
|
+
|
|
78
|
+
def _check_version(self, response: httpx.Response) -> None:
|
|
79
|
+
server_version = response.headers.get(PHOENIX_SERVER_VERSION_HEADER)
|
|
80
|
+
|
|
81
|
+
if server_version is None:
|
|
82
|
+
return
|
|
83
|
+
|
|
84
|
+
try:
|
|
85
|
+
client_major, client_minor, client_patch = map(
|
|
86
|
+
int, self._client_phoenix_version.split(".")
|
|
87
|
+
)
|
|
88
|
+
server_major, server_minor, server_patch = map(int, server_version.split("."))
|
|
89
|
+
if abs(server_major - client_major) >= 1:
|
|
90
|
+
warnings.warn(
|
|
91
|
+
f"⚠️⚠️ The Phoenix server ({server_version}) and client "
|
|
92
|
+
f"({self._client_phoenix_version}) versions are severely mismatched. Upgrade "
|
|
93
|
+
" either the client or server to ensure API compatibility ⚠️⚠️"
|
|
94
|
+
)
|
|
95
|
+
elif (
|
|
96
|
+
abs(server_minor - client_minor) >= 1 and not self._warned_on_minor_version_mismatch
|
|
97
|
+
):
|
|
98
|
+
self._warned_on_minor_version_mismatch = True
|
|
99
|
+
warnings.warn(
|
|
100
|
+
f"The Phoenix server ({server_version}) and client "
|
|
101
|
+
f"({self._client_phoenix_version}) versions are mismatched and may have "
|
|
102
|
+
"compatibility issues."
|
|
103
|
+
)
|
|
104
|
+
except ValueError:
|
|
105
|
+
# if the version includes a suffix e.g. "rc1", check for an exact version match
|
|
106
|
+
if self._client_phoenix_version != server_version:
|
|
107
|
+
warnings.warn(
|
|
108
|
+
f"The Phoenix server ({server_version}) and client "
|
|
109
|
+
f"({self._client_phoenix_version}) versions are mismatched and may have "
|
|
110
|
+
"compatibility issues."
|
|
111
|
+
)
|
|
112
|
+
|
|
113
|
+
async def request(self, *args: Any, **kwargs: Any) -> httpx.Response:
|
|
114
|
+
response = await super().request(*args, **kwargs)
|
|
115
|
+
self._check_version(response)
|
|
116
|
+
return response
|
phoenix/utilities/project.py
CHANGED
|
@@ -9,5 +9,5 @@ from phoenix.config import DEFAULT_PROJECT_NAME
|
|
|
9
9
|
def get_project_name(attributes: Iterable[KeyValue]) -> str:
|
|
10
10
|
for kv in attributes:
|
|
11
11
|
if kv.key == ResourceAttributes.PROJECT_NAME and (v := kv.value.string_value):
|
|
12
|
-
return v
|
|
12
|
+
return str(v)
|
|
13
13
|
return DEFAULT_PROJECT_NAME
|
phoenix/version.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = "4.
|
|
1
|
+
__version__ = "4.16.0"
|