dara-core 1.21.7__py3-none-any.whl → 1.21.9__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.
@@ -22898,6 +22898,10 @@
22898
22898
  line-height: 1.1;
22899
22899
  }
22900
22900
 
22901
+ h1 code {
22902
+ font-size: 2.5rem;
22903
+ }
22904
+
22901
22905
  h2 {
22902
22906
  margin-top: 2rem;
22903
22907
  margin-bottom: 1rem;
@@ -22907,6 +22911,10 @@
22907
22911
  line-height: 1.3;
22908
22912
  }
22909
22913
 
22914
+ h2 code {
22915
+ font-size: 2rem;
22916
+ }
22917
+
22910
22918
  h3 {
22911
22919
  margin-top: 1.6rem;
22912
22920
  margin-bottom: 0.6rem;
@@ -22916,6 +22924,10 @@
22916
22924
  line-height: 1.25;
22917
22925
  }
22918
22926
 
22927
+ h3 code {
22928
+ font-size: 1.25rem;
22929
+ }
22930
+
22919
22931
  h4 {
22920
22932
  margin-top: 1.5rem;
22921
22933
  margin-bottom: 0.5rem;
@@ -22941,14 +22953,6 @@
22941
22953
  color: ${(props) => props.theme.colors.grey5};
22942
22954
  }
22943
22955
 
22944
- h2 code {
22945
- font-size: 0.875rem;
22946
- }
22947
-
22948
- h3 code {
22949
- font-size: 0.9rem;
22950
- }
22951
-
22952
22956
  pre:first-child {
22953
22957
  margin-top: 0;
22954
22958
  }
@@ -50734,9 +50738,11 @@ You must set sticky: 'left' | 'right' for the '${bugWithUnderColumnsSticky.Heade
50734
50738
  await validateResponse(res, `Failed to cancel task with id: ${taskId}`);
50735
50739
  return true;
50736
50740
  }
50737
- function getUniqueIdentifier(variable) {
50741
+ function getUniqueIdentifier(variable, opts = {
50742
+ useNested: true
50743
+ }) {
50738
50744
  let identifier = variable.uid;
50739
- if ("nested" in variable) {
50745
+ if (opts.useNested && "nested" in variable) {
50740
50746
  identifier += variable.nested.join(",");
50741
50747
  }
50742
50748
  return identifier;
@@ -50748,12 +50754,14 @@ You must set sticky: 'left' | 'right' for the '${bugWithUnderColumnsSticky.Heade
50748
50754
  const selectorFamilyRegistry = /* @__PURE__ */ new Map();
50749
50755
  const selectorFamilyMembersRegistry = /* @__PURE__ */ new Map();
50750
50756
  const depsRegistry = /* @__PURE__ */ new Map();
50757
+ const SHARED_KEY_TYPES = ["result-selector", "derived-selector"];
50751
50758
  function getRegistryKey(variable, type) {
50752
50759
  let extras = "";
50753
50760
  if (isDerivedVariable(variable)) {
50754
50761
  extras = variable.loop_instance_uid ?? "";
50755
50762
  }
50756
- return `${getUniqueIdentifier(variable)}-${type}-${extras}`;
50763
+ const opts = { useNested: !SHARED_KEY_TYPES.includes(type) };
50764
+ return `${getUniqueIdentifier(variable, opts)}-${type}-${extras}`;
50757
50765
  }
50758
50766
  function clearRegistries_TEST() {
50759
50767
  for (const registry2 of [
@@ -50785,7 +50793,7 @@ You must set sticky: 'left' | 'right' for the '${bugWithUnderColumnsSticky.Heade
50785
50793
  return atomFamilyMembersRegistry.get(family).size > 0;
50786
50794
  }
50787
50795
  case "DerivedVariable": {
50788
- const key = getRegistryKey(variable, "selector");
50796
+ const key = getRegistryKey(variable, "selector-nested");
50789
50797
  return selectorFamilyRegistry.has(key);
50790
50798
  }
50791
50799
  default:
@@ -50930,7 +50938,7 @@ You must set sticky: 'left' | 'right' for the '${bugWithUnderColumnsSticky.Heade
50930
50938
  return context.config;
50931
50939
  }
50932
50940
  /**
50933
- * react-router v7.8.2
50941
+ * react-router v7.9.1
50934
50942
  *
50935
50943
  * Copyright (c) Remix Software Inc.
50936
50944
  *
@@ -51289,13 +51297,13 @@ You must set sticky: 'left' | 'right' for the '${bugWithUnderColumnsSticky.Heade
51289
51297
  }
51290
51298
  return new URL(href2, base);
51291
51299
  }
51292
- function unstable_createContext(defaultValue) {
51300
+ function createContext(defaultValue) {
51293
51301
  return { defaultValue };
51294
51302
  }
51295
51303
  var _map;
51296
- var unstable_RouterContextProvider = class {
51304
+ var RouterContextProvider$1 = class RouterContextProvider {
51297
51305
  /**
51298
- * Create a new `unstable_RouterContextProvider` instance
51306
+ * Create a new `RouterContextProvider` instance
51299
51307
  * @param init An optional initial context map to populate the provider with
51300
51308
  */
51301
51309
  constructor(init) {
@@ -51355,7 +51363,7 @@ You must set sticky: 'left' | 'right' for the '${bugWithUnderColumnsSticky.Heade
51355
51363
  "path",
51356
51364
  "id",
51357
51365
  "index",
51358
- "unstable_middleware",
51366
+ "middleware",
51359
51367
  "children"
51360
51368
  ]);
51361
51369
  function isUnsupportedLazyRouteFunctionKey(key) {
@@ -52390,7 +52398,7 @@ You must set sticky: 'left' | 'right' for the '${bugWithUnderColumnsSticky.Heade
52390
52398
  pendingNavigationController.signal,
52391
52399
  opts && opts.submission
52392
52400
  );
52393
- let scopedContext = init.unstable_getContext ? await init.unstable_getContext() : new unstable_RouterContextProvider();
52401
+ let scopedContext = init.getContext ? await init.getContext() : new RouterContextProvider$1();
52394
52402
  let pendingActionResult;
52395
52403
  if (opts && opts.pendingError) {
52396
52404
  pendingActionResult = [
@@ -52680,7 +52688,7 @@ You must set sticky: 'left' | 'right' for the '${bugWithUnderColumnsSticky.Heade
52680
52688
  pendingActionResult
52681
52689
  );
52682
52690
  pendingNavigationLoadId = ++incrementingLoadId;
52683
- if (!init.dataStrategy && !dsMatches.some((m) => m.shouldLoad) && !dsMatches.some((m) => m.route.unstable_middleware) && revalidatingFetchers.length === 0) {
52691
+ if (!init.dataStrategy && !dsMatches.some((m) => m.shouldLoad) && !dsMatches.some((m) => m.route.middleware) && revalidatingFetchers.length === 0) {
52684
52692
  let updatedFetchers2 = markFetchRedirectsDone();
52685
52693
  completeNavigation(
52686
52694
  location2,
@@ -52834,7 +52842,7 @@ You must set sticky: 'left' | 'right' for the '${bugWithUnderColumnsSticky.Heade
52834
52842
  setFetcherError(key, routeId, error, { flushSync });
52835
52843
  return;
52836
52844
  }
52837
- let scopedContext = init.unstable_getContext ? await init.unstable_getContext() : new unstable_RouterContextProvider();
52845
+ let scopedContext = init.getContext ? await init.getContext() : new RouterContextProvider$1();
52838
52846
  let preventScrollReset = (opts && opts.preventScrollReset) === true;
52839
52847
  if (submission && isMutationMethod(submission.formMethod)) {
52840
52848
  await handleFetcherAction(
@@ -53685,13 +53693,13 @@ You must set sticky: 'left' | 'right' for the '${bugWithUnderColumnsSticky.Heade
53685
53693
  skipLoaderErrorBubbling,
53686
53694
  skipRevalidation,
53687
53695
  dataStrategy,
53688
- unstable_generateMiddlewareResponse: generateMiddlewareResponse
53696
+ generateMiddlewareResponse
53689
53697
  } = {}) {
53690
53698
  let url = new URL(request2.url);
53691
53699
  let method = request2.method;
53692
53700
  let location2 = createLocation("", createPath(url), null, "default");
53693
53701
  let matches2 = matchRoutes(dataRoutes, location2, basename);
53694
- requestContext = requestContext != null ? requestContext : new unstable_RouterContextProvider();
53702
+ requestContext = requestContext != null ? requestContext : new RouterContextProvider$1();
53695
53703
  if (!isValidMethod(method) && method !== "HEAD") {
53696
53704
  let error = getInternalRouterError(405, { method });
53697
53705
  let { matches: methodNotAllowedMatches, route } = getShortCircuitMatches(dataRoutes);
@@ -53729,8 +53737,8 @@ You must set sticky: 'left' | 'right' for the '${bugWithUnderColumnsSticky.Heade
53729
53737
  }
53730
53738
  if (generateMiddlewareResponse) {
53731
53739
  invariant(
53732
- requestContext instanceof unstable_RouterContextProvider,
53733
- "When using middleware in `staticHandler.query()`, any provided `requestContext` must be an instance of `unstable_RouterContextProvider`"
53740
+ requestContext instanceof RouterContextProvider$1,
53741
+ "When using middleware in `staticHandler.query()`, any provided `requestContext` must be an instance of `RouterContextProvider`"
53734
53742
  );
53735
53743
  try {
53736
53744
  await loadLazyMiddlewareForMatches(
@@ -53759,7 +53767,7 @@ You must set sticky: 'left' | 'right' for the '${bugWithUnderColumnsSticky.Heade
53759
53767
  dataStrategy || null,
53760
53768
  skipLoaderErrorBubbling === true,
53761
53769
  null,
53762
- "filterMatchesToLoad" in opts2 ? opts2.filterMatchesToLoad ?? null : null,
53770
+ "filterMatchesToLoad" in opts2 ? opts2.filterMatchesToLoad ?? null : filterMatchesToLoad ?? null,
53763
53771
  skipRevalidation === true
53764
53772
  );
53765
53773
  if (isResponse(result2)) {
@@ -53857,13 +53865,13 @@ You must set sticky: 'left' | 'right' for the '${bugWithUnderColumnsSticky.Heade
53857
53865
  routeId,
53858
53866
  requestContext,
53859
53867
  dataStrategy,
53860
- unstable_generateMiddlewareResponse: generateMiddlewareResponse
53868
+ generateMiddlewareResponse
53861
53869
  } = {}) {
53862
53870
  let url = new URL(request2.url);
53863
53871
  let method = request2.method;
53864
53872
  let location2 = createLocation("", createPath(url), null, "default");
53865
53873
  let matches2 = matchRoutes(dataRoutes, location2, basename);
53866
- requestContext = requestContext != null ? requestContext : new unstable_RouterContextProvider();
53874
+ requestContext = requestContext != null ? requestContext : new RouterContextProvider$1();
53867
53875
  if (!isValidMethod(method) && method !== "HEAD" && method !== "OPTIONS") {
53868
53876
  throw getInternalRouterError(405, { method });
53869
53877
  } else if (!matches2) {
@@ -53880,8 +53888,8 @@ You must set sticky: 'left' | 'right' for the '${bugWithUnderColumnsSticky.Heade
53880
53888
  }
53881
53889
  if (generateMiddlewareResponse) {
53882
53890
  invariant(
53883
- requestContext instanceof unstable_RouterContextProvider,
53884
- "When using middleware in `staticHandler.queryRoute()`, any provided `requestContext` must be an instance of `unstable_RouterContextProvider`"
53891
+ requestContext instanceof RouterContextProvider$1,
53892
+ "When using middleware in `staticHandler.queryRoute()`, any provided `requestContext` must be an instance of `RouterContextProvider`"
53885
53893
  );
53886
53894
  await loadLazyMiddlewareForMatches(matches2, manifest, mapRouteProperties2);
53887
53895
  let response = await runServerMiddlewarePipeline(
@@ -54871,11 +54879,11 @@ You must set sticky: 'left' | 'right' for the '${bugWithUnderColumnsSticky.Heade
54871
54879
  }
54872
54880
  function loadLazyMiddlewareForMatches(matches2, manifest, mapRouteProperties2) {
54873
54881
  let promises = matches2.map(({ route }) => {
54874
- if (typeof route.lazy !== "object" || !route.lazy.unstable_middleware) {
54882
+ if (typeof route.lazy !== "object" || !route.lazy.middleware) {
54875
54883
  return void 0;
54876
54884
  }
54877
54885
  return loadLazyRouteProperty({
54878
- key: "unstable_middleware",
54886
+ key: "middleware",
54879
54887
  route,
54880
54888
  manifest,
54881
54889
  mapRouteProperties: mapRouteProperties2
@@ -54893,7 +54901,7 @@ You must set sticky: 'left' | 'right' for the '${bugWithUnderColumnsSticky.Heade
54893
54901
  return keyedResults;
54894
54902
  }
54895
54903
  async function defaultDataStrategyWithMiddleware(args) {
54896
- if (!args.matches.some((m) => m.route.unstable_middleware)) {
54904
+ if (!args.matches.some((m) => m.route.middleware)) {
54897
54905
  return defaultDataStrategy(args);
54898
54906
  }
54899
54907
  return runClientMiddlewarePipeline(args, () => defaultDataStrategy(args));
@@ -54947,7 +54955,7 @@ You must set sticky: 'left' | 'right' for the '${bugWithUnderColumnsSticky.Heade
54947
54955
  async function runMiddlewarePipeline(args, handler, processResult, isResult, errorHandler) {
54948
54956
  let { matches: matches2, request: request2, params, context } = args;
54949
54957
  let tuples = matches2.flatMap(
54950
- (m) => m.route.unstable_middleware ? m.route.unstable_middleware.map((fn) => [m.route.id, fn]) : []
54958
+ (m) => m.route.middleware ? m.route.middleware.map((fn) => [m.route.id, fn]) : []
54951
54959
  );
54952
54960
  let result = await callRouteMiddleware(
54953
54961
  { request: request2, params, context },
@@ -55010,7 +55018,7 @@ You must set sticky: 'left' | 'right' for the '${bugWithUnderColumnsSticky.Heade
55010
55018
  }
55011
55019
  function getDataStrategyMatchLazyPromises(mapRouteProperties2, manifest, request2, match2, lazyRoutePropertiesToSkip) {
55012
55020
  let lazyMiddlewarePromise = loadLazyRouteProperty({
55013
- key: "unstable_middleware",
55021
+ key: "middleware",
55014
55022
  route: match2.route,
55015
55023
  manifest,
55016
55024
  mapRouteProperties: mapRouteProperties2
@@ -55110,9 +55118,9 @@ You must set sticky: 'left' | 'right' for the '${bugWithUnderColumnsSticky.Heade
55110
55118
  context: scopedContext,
55111
55119
  matches: matches2
55112
55120
  };
55113
- let unstable_runClientMiddleware = isStaticHandler ? () => {
55121
+ let runClientMiddleware = isStaticHandler ? () => {
55114
55122
  throw new Error(
55115
- "You cannot call `unstable_runClientMiddleware()` from a static handler `dataStrategy`. Middleware is run outside of `dataStrategy` during SSR in order to bubble up the Response. You can enable middleware via the `respond` API in `query`/`queryRoute`"
55123
+ "You cannot call `runClientMiddleware()` from a static handler `dataStrategy`. Middleware is run outside of `dataStrategy` during SSR in order to bubble up the Response. You can enable middleware via the `respond` API in `query`/`queryRoute`"
55116
55124
  );
55117
55125
  } : (cb) => {
55118
55126
  let typedDataStrategyArgs = dataStrategyArgs;
@@ -55120,9 +55128,9 @@ You must set sticky: 'left' | 'right' for the '${bugWithUnderColumnsSticky.Heade
55120
55128
  return cb({
55121
55129
  ...typedDataStrategyArgs,
55122
55130
  fetcherKey,
55123
- unstable_runClientMiddleware: () => {
55131
+ runClientMiddleware: () => {
55124
55132
  throw new Error(
55125
- "Cannot call `unstable_runClientMiddleware()` from within an `unstable_runClientMiddleware` handler"
55133
+ "Cannot call `runClientMiddleware()` from within an `runClientMiddleware` handler"
55126
55134
  );
55127
55135
  }
55128
55136
  });
@@ -55131,7 +55139,7 @@ You must set sticky: 'left' | 'right' for the '${bugWithUnderColumnsSticky.Heade
55131
55139
  let results = await dataStrategyImpl({
55132
55140
  ...dataStrategyArgs,
55133
55141
  fetcherKey,
55134
- unstable_runClientMiddleware
55142
+ runClientMiddleware
55135
55143
  });
55136
55144
  try {
55137
55145
  await Promise.all(
@@ -55847,6 +55855,7 @@ You must set sticky: 'left' | 'right' for the '${bugWithUnderColumnsSticky.Heade
55847
55855
  FetchersContext.displayName = "Fetchers";
55848
55856
  var AwaitContext = React__namespace.createContext(null);
55849
55857
  AwaitContext.displayName = "Await";
55858
+ var AwaitContextProvider = (props) => React__namespace.createElement(AwaitContext.Provider, props);
55850
55859
  var NavigationContext = React__namespace.createContext(
55851
55860
  null
55852
55861
  );
@@ -56550,7 +56559,7 @@ Please change the parent <Route path="${parentPath}"> to <Route path="${parentPa
56550
56559
  function createMemoryRouter(routes, opts) {
56551
56560
  return createRouter$1({
56552
56561
  basename: opts?.basename,
56553
- unstable_getContext: opts?.unstable_getContext,
56562
+ getContext: opts?.getContext,
56554
56563
  future: opts?.future,
56555
56564
  history: createMemoryHistory({
56556
56565
  initialEntries: opts?.initialEntries,
@@ -57926,19 +57935,16 @@ Please change the parent <Route path="${parentPath}"> to <Route path="${parentPa
57926
57935
  }
57927
57936
  return init;
57928
57937
  }
57929
- var ESCAPE_LOOKUP$1 = {
57938
+ var ESCAPE_LOOKUP = {
57930
57939
  "&": "\\u0026",
57931
57940
  ">": "\\u003e",
57932
57941
  "<": "\\u003c",
57933
57942
  "\u2028": "\\u2028",
57934
57943
  "\u2029": "\\u2029"
57935
57944
  };
57936
- var ESCAPE_REGEX$1 = /[&><\u2028\u2029]/g;
57937
- function escapeHtml$1(html) {
57938
- return html.replace(ESCAPE_REGEX$1, (match2) => ESCAPE_LOOKUP$1[match2]);
57939
- }
57940
- function createHtml(html) {
57941
- return { __html: html };
57945
+ var ESCAPE_REGEX = /[&><\u2028\u2029]/g;
57946
+ function escapeHtml(html) {
57947
+ return html.replace(ESCAPE_REGEX, (match2) => ESCAPE_LOOKUP[match2]);
57942
57948
  }
57943
57949
  function invariant2$1(value, message) {
57944
57950
  if (value === false || value === null || typeof value === "undefined") {
@@ -57987,7 +57993,7 @@ Please change the parent <Route path="${parentPath}"> to <Route path="${parentPa
57987
57993
  {
57988
57994
  nonce,
57989
57995
  dangerouslySetInnerHTML: {
57990
- __html: `window.__reactRouterContext.streamController.enqueue(${escapeHtml$1(
57996
+ __html: `window.__reactRouterContext.streamController.enqueue(${escapeHtml(
57991
57997
  JSON.stringify(value)
57992
57998
  )});`
57993
57999
  }
@@ -58033,7 +58039,7 @@ Please change the parent <Route path="${parentPath}"> to <Route path="${parentPa
58033
58039
  ssr,
58034
58040
  basename
58035
58041
  );
58036
- return async (args) => args.unstable_runClientMiddleware(dataStrategy);
58042
+ return async (args) => args.runClientMiddleware(dataStrategy);
58037
58043
  }
58038
58044
  function getSingleFetchDataStrategyImpl(getRouter, getRouteInfo, fetchAndDecode, ssr, basename, shouldAllowOptOut = () => true) {
58039
58045
  return async (args) => {
@@ -58806,7 +58812,7 @@ Please change the parent <Route path="${parentPath}"> to <Route path="${parentPa
58806
58812
  Object.assign(dataRoute, {
58807
58813
  ...dataRoute,
58808
58814
  ...getRouteComponents(route, routeModule, isSpaMode),
58809
- unstable_middleware: routeModule.unstable_clientMiddleware,
58815
+ middleware: routeModule.clientMiddleware,
58810
58816
  handle: routeModule.handle,
58811
58817
  shouldRevalidate: getShouldRevalidateFunction(
58812
58818
  dataRoute.path,
@@ -58948,17 +58954,14 @@ Please change the parent <Route path="${parentPath}"> to <Route path="${parentPa
58948
58954
  }
58949
58955
  });
58950
58956
  } : void 0,
58951
- unstable_middleware: route.hasClientMiddleware ? async () => {
58952
- let { unstable_clientMiddleware } = route.clientMiddlewareModule ? await import(
58957
+ middleware: route.hasClientMiddleware ? async () => {
58958
+ let { clientMiddleware } = route.clientMiddlewareModule ? await import(
58953
58959
  /* @vite-ignore */
58954
58960
  /* webpackIgnore: true */
58955
58961
  route.clientMiddlewareModule
58956
58962
  ) : await getLazyRoute();
58957
- invariant2$1(
58958
- unstable_clientMiddleware,
58959
- "No `unstable_clientMiddleware` export found"
58960
- );
58961
- return unstable_clientMiddleware;
58963
+ invariant2$1(clientMiddleware, "No `clientMiddleware` export found");
58964
+ return clientMiddleware;
58962
58965
  } : void 0,
58963
58966
  shouldRevalidate: async () => {
58964
58967
  let lazyRoute = await getLazyRoute();
@@ -59039,7 +59042,7 @@ Please change the parent <Route path="${parentPath}"> to <Route path="${parentPa
59039
59042
  return {
59040
59043
  Component: getRouteModuleComponent(routeModule),
59041
59044
  ErrorBoundary: routeModule.ErrorBoundary,
59042
- unstable_clientMiddleware: routeModule.unstable_clientMiddleware,
59045
+ clientMiddleware: routeModule.clientMiddleware,
59043
59046
  clientAction: routeModule.clientAction,
59044
59047
  clientLoader: routeModule.clientLoader,
59045
59048
  handle: routeModule.handle,
@@ -59587,7 +59590,7 @@ Please change the parent <Route path="${parentPath}"> to <Route path="${parentPa
59587
59590
  {
59588
59591
  key: `script:ld+json:${json}`,
59589
59592
  type: "application/ld+json",
59590
- dangerouslySetInnerHTML: { __html: json }
59593
+ dangerouslySetInnerHTML: { __html: escapeHtml(json) }
59591
59594
  }
59592
59595
  );
59593
59596
  } catch (err2) {
@@ -59692,7 +59695,7 @@ import(${JSON.stringify(manifest.entry.module)});`;
59692
59695
  {
59693
59696
  ...scriptProps,
59694
59697
  suppressHydrationWarning: true,
59695
- dangerouslySetInnerHTML: createHtml(contextScript),
59698
+ dangerouslySetInnerHTML: { __html: contextScript },
59696
59699
  type: void 0
59697
59700
  }
59698
59701
  ), /* @__PURE__ */ React__namespace.createElement(
@@ -59700,7 +59703,7 @@ import(${JSON.stringify(manifest.entry.module)});`;
59700
59703
  {
59701
59704
  ...scriptProps,
59702
59705
  suppressHydrationWarning: true,
59703
- dangerouslySetInnerHTML: createHtml(routeModulesScript),
59706
+ dangerouslySetInnerHTML: { __html: routeModulesScript },
59704
59707
  type: "module",
59705
59708
  async: true
59706
59709
  }
@@ -59873,14 +59876,14 @@ import(${JSON.stringify(manifest.entry.module)});`;
59873
59876
  try {
59874
59877
  if (isBrowser) {
59875
59878
  window.__reactRouterVersion = // @ts-expect-error
59876
- "7.8.2";
59879
+ "7.9.1";
59877
59880
  }
59878
59881
  } catch (e2) {
59879
59882
  }
59880
59883
  function createBrowserRouter(routes, opts) {
59881
59884
  return createRouter$1({
59882
59885
  basename: opts?.basename,
59883
- unstable_getContext: opts?.unstable_getContext,
59886
+ getContext: opts?.getContext,
59884
59887
  future: opts?.future,
59885
59888
  history: createBrowserHistory({ window: opts?.window }),
59886
59889
  hydrationData: opts?.hydrationData || parseHydrationData(),
@@ -59895,7 +59898,7 @@ import(${JSON.stringify(manifest.entry.module)});`;
59895
59898
  function createHashRouter(routes, opts) {
59896
59899
  return createRouter$1({
59897
59900
  basename: opts?.basename,
59898
- unstable_getContext: opts?.unstable_getContext,
59901
+ getContext: opts?.getContext,
59899
59902
  future: opts?.future,
59900
59903
  history: createHashHistory({ window: opts?.window }),
59901
59904
  hydrationData: opts?.hydrationData || parseHydrationData(),
@@ -60878,7 +60881,7 @@ import(${JSON.stringify(manifest.entry.module)});`;
60878
60881
  },
60879
60882
  get future() {
60880
60883
  return {
60881
- unstable_middleware: false,
60884
+ v8_middleware: false,
60882
60885
  ...opts?.future
60883
60886
  };
60884
60887
  },
@@ -61308,7 +61311,7 @@ import(${JSON.stringify(manifest.entry.module)});`;
61308
61311
  }
61309
61312
  var setCookieExports = /* @__PURE__ */ requireSetCookie();
61310
61313
  /**
61311
- * react-router v7.8.2
61314
+ * react-router v7.9.1
61312
61315
  *
61313
61316
  * Copyright (c) Remix Software Inc.
61314
61317
  *
@@ -61397,7 +61400,7 @@ import(${JSON.stringify(manifest.entry.module)});`;
61397
61400
  frameworkContextRef.current = {
61398
61401
  future: {
61399
61402
  unstable_subResourceIntegrity: future?.unstable_subResourceIntegrity === true,
61400
- unstable_middleware: future?.unstable_middleware === true
61403
+ v8_middleware: future?.v8_middleware === true
61401
61404
  },
61402
61405
  manifest: {
61403
61406
  routes: {},
@@ -61414,7 +61417,7 @@ import(${JSON.stringify(manifest.entry.module)});`;
61414
61417
  // @ts-expect-error `StubRouteObject` is stricter about `loader`/`action`
61415
61418
  // types compared to `AgnosticRouteObject`
61416
61419
  convertRoutesToDataRoutes(routes, (r2) => r2),
61417
- _context !== void 0 ? _context : future?.unstable_middleware ? new unstable_RouterContextProvider() : {},
61420
+ _context !== void 0 ? _context : future?.v8_middleware ? new RouterContextProvider$1() : {},
61418
61421
  frameworkContextRef.current.manifest,
61419
61422
  frameworkContextRef.current.routeModules
61420
61423
  );
@@ -61841,7 +61844,7 @@ import(${JSON.stringify(manifest.entry.module)});`;
61841
61844
  hasErrorBoundary: route.id === "root" || route.module.ErrorBoundary != null,
61842
61845
  id: route.id,
61843
61846
  path: route.path,
61844
- unstable_middleware: route.module.unstable_middleware,
61847
+ middleware: route.module.middleware,
61845
61848
  // Need to use RR's version in the param typed here to permit the optional
61846
61849
  // context even though we know it'll always be provided in remix
61847
61850
  loader: route.module.loader ? async (args) => {
@@ -61905,17 +61908,6 @@ import(${JSON.stringify(manifest.entry.module)});`;
61905
61908
  };
61906
61909
  });
61907
61910
  }
61908
- var ESCAPE_LOOKUP = {
61909
- "&": "\\u0026",
61910
- ">": "\\u003e",
61911
- "<": "\\u003c",
61912
- "\u2028": "\\u2028",
61913
- "\u2029": "\\u2029"
61914
- };
61915
- var ESCAPE_REGEX = /[&><\u2028\u2029]/g;
61916
- function escapeHtml(html) {
61917
- return html.replace(ESCAPE_REGEX, (match2) => ESCAPE_LOOKUP[match2]);
61918
- }
61919
61911
  function createServerHandoffString(serverHandoff) {
61920
61912
  return escapeHtml(JSON.stringify(serverHandoff));
61921
61913
  }
@@ -62005,7 +61997,7 @@ import(${JSON.stringify(manifest.entry.module)});`;
62005
61997
  requestContext: loadContext,
62006
61998
  skipLoaderErrorBubbling: true,
62007
61999
  skipRevalidation: true,
62008
- unstable_generateMiddlewareResponse: build2.future.unstable_middleware ? async (query) => {
62000
+ generateMiddlewareResponse: build2.future.v8_middleware ? async (query) => {
62009
62001
  try {
62010
62002
  let innerResult = await query(handlerRequest);
62011
62003
  return handleQueryResult(innerResult);
@@ -62069,7 +62061,7 @@ import(${JSON.stringify(manifest.entry.module)});`;
62069
62061
  requestContext: loadContext,
62070
62062
  filterMatchesToLoad: (m) => !loadRouteIds || loadRouteIds.has(m.route.id),
62071
62063
  skipLoaderErrorBubbling: true,
62072
- unstable_generateMiddlewareResponse: build2.future.unstable_middleware ? async (query) => {
62064
+ generateMiddlewareResponse: build2.future.v8_middleware ? async (query) => {
62073
62065
  try {
62074
62066
  let innerResult = await query(handlerRequest);
62075
62067
  return handleQueryResult(innerResult);
@@ -62284,15 +62276,15 @@ import(${JSON.stringify(manifest.entry.module)});`;
62284
62276
  request: request2
62285
62277
  });
62286
62278
  };
62287
- if (_build.future.unstable_middleware) {
62288
- if (initialContext && !(initialContext instanceof unstable_RouterContextProvider)) {
62279
+ if (_build.future.v8_middleware) {
62280
+ if (initialContext && !(initialContext instanceof RouterContextProvider$1)) {
62289
62281
  let error = new Error(
62290
- "Invalid `context` value provided to `handleRequest`. When middleware is enabled you must return an instance of `unstable_RouterContextProvider` from your `getLoadContext` function."
62282
+ "Invalid `context` value provided to `handleRequest`. When middleware is enabled you must return an instance of `RouterContextProvider` from your `getLoadContext` function."
62291
62283
  );
62292
62284
  handleError(error);
62293
62285
  return returnLastResortErrorResponse(error, serverMode);
62294
62286
  }
62295
- loadContext = initialContext || new unstable_RouterContextProvider();
62287
+ loadContext = initialContext || new RouterContextProvider$1();
62296
62288
  } else {
62297
62289
  loadContext = initialContext || {};
62298
62290
  }
@@ -62520,7 +62512,7 @@ import(${JSON.stringify(manifest.entry.module)});`;
62520
62512
  try {
62521
62513
  let result = await staticHandler.query(request2, {
62522
62514
  requestContext: loadContext,
62523
- unstable_generateMiddlewareResponse: build2.future.unstable_middleware ? async (query) => {
62515
+ generateMiddlewareResponse: build2.future.v8_middleware ? async (query) => {
62524
62516
  try {
62525
62517
  let innerResult = await query(request2);
62526
62518
  if (!isResponse(innerResult)) {
@@ -62656,7 +62648,7 @@ import(${JSON.stringify(manifest.entry.module)});`;
62656
62648
  let result = await staticHandler.queryRoute(request2, {
62657
62649
  routeId,
62658
62650
  requestContext: loadContext,
62659
- unstable_generateMiddlewareResponse: build2.future.unstable_middleware ? async (queryRoute) => {
62651
+ generateMiddlewareResponse: build2.future.v8_middleware ? async (queryRoute) => {
62660
62652
  try {
62661
62653
  let innerResult = await queryRoute(request2);
62662
62654
  return handleQueryRouteResult(innerResult);
@@ -62868,24 +62860,36 @@ ${String(error)}`;
62868
62860
  }
62869
62861
  function href(path, ...args) {
62870
62862
  let params = args[0];
62871
- return path.split("/").map((segment) => {
62872
- if (segment === "*") {
62873
- return params ? params["*"] : void 0;
62874
- }
62875
- const match2 = segment.match(/^:([\w-]+)(\?)?/);
62876
- if (!match2) return segment;
62877
- const param = match2[1];
62878
- const value = params ? params[param] : void 0;
62879
- const isRequired = match2[2] === void 0;
62880
- if (isRequired && value === void 0) {
62881
- throw Error(
62882
- `Path '${path}' requires param '${param}' but it was not provided`
62883
- );
62863
+ let result = path.replace(/\/*\*?$/, "").replace(
62864
+ /\/:([\w-]+)(\?)?/g,
62865
+ // same regex as in .\router\utils.ts: compilePath().
62866
+ (_, param, questionMark) => {
62867
+ const isRequired = questionMark === void 0;
62868
+ const value = params ? params[param] : void 0;
62869
+ if (isRequired && value === void 0) {
62870
+ throw new Error(
62871
+ `Path '${path}' requires param '${param}' but it was not provided`
62872
+ );
62873
+ }
62874
+ return value === void 0 ? "" : "/" + value;
62884
62875
  }
62885
- return value;
62886
- }).filter((segment) => segment !== void 0).join("/");
62876
+ );
62877
+ if (path.endsWith("*")) {
62878
+ const value = params ? params["*"] : void 0;
62879
+ if (value !== void 0) {
62880
+ result += "/" + value;
62881
+ }
62882
+ }
62883
+ return result || "/";
62887
62884
  }
62888
- function getHydrationData(state, routes, getRouteInfo, location2, basename, isSpaMode) {
62885
+ function getHydrationData({
62886
+ state,
62887
+ routes,
62888
+ getRouteInfo,
62889
+ location: location2,
62890
+ basename,
62891
+ isSpaMode
62892
+ }) {
62889
62893
  let hydrationData = {
62890
62894
  ...state,
62891
62895
  loaderData: { ...state.loaderData }
@@ -63130,7 +63134,7 @@ ${String(error)}`;
63130
63134
  function createRouterFromPayload({
63131
63135
  fetchImplementation,
63132
63136
  createFromReadableStream,
63133
- unstable_getContext,
63137
+ getContext,
63134
63138
  payload
63135
63139
  }) {
63136
63140
  const globalVar = window;
@@ -63168,17 +63172,17 @@ ${String(error)}`;
63168
63172
  }, []);
63169
63173
  globalVar.__reactRouterDataRouter = createRouter$1({
63170
63174
  routes,
63171
- unstable_getContext,
63175
+ getContext,
63172
63176
  basename: payload.basename,
63173
63177
  history: createBrowserHistory(),
63174
- hydrationData: getHydrationData(
63175
- {
63178
+ hydrationData: getHydrationData({
63179
+ state: {
63176
63180
  loaderData: payload.loaderData,
63177
63181
  actionData: payload.actionData,
63178
63182
  errors: payload.errors
63179
63183
  },
63180
63184
  routes,
63181
- (routeId) => {
63185
+ getRouteInfo: (routeId) => {
63182
63186
  let match2 = payload.matches.find((m) => m.id === routeId);
63183
63187
  invariant(match2, "Route not found in payload");
63184
63188
  return {
@@ -63187,10 +63191,10 @@ ${String(error)}`;
63187
63191
  hasHydrateFallback: match2.hydrateFallbackElement != null
63188
63192
  };
63189
63193
  },
63190
- payload.location,
63191
- void 0,
63192
- false
63193
- ),
63194
+ location: payload.location,
63195
+ basename: payload.basename,
63196
+ isSpaMode: false
63197
+ }),
63194
63198
  async patchRoutesOnNavigation({ path, signal }) {
63195
63199
  if (discoveredPaths.has(path)) {
63196
63200
  return;
@@ -63278,7 +63282,7 @@ ${String(error)}`;
63278
63282
  routeModules: globalVar.__reactRouterRouteModules
63279
63283
  };
63280
63284
  }
63281
- var renderedRoutesContext = unstable_createContext();
63285
+ var renderedRoutesContext = createContext();
63282
63286
  function getRSCSingleFetchDataStrategy(getRouter, ssr, basename, createFromReadableStream, fetchImplementation) {
63283
63287
  let dataStrategy = getSingleFetchDataStrategyImpl(
63284
63288
  getRouter,
@@ -63305,7 +63309,7 @@ ${String(error)}`;
63305
63309
  return M.route.hasComponent && !M.route.element;
63306
63310
  }
63307
63311
  );
63308
- return async (args) => args.unstable_runClientMiddleware(async () => {
63312
+ return async (args) => args.runClientMiddleware(async () => {
63309
63313
  let context = args.context;
63310
63314
  context.set(renderedRoutesContext, []);
63311
63315
  let results = await dataStrategy(args);
@@ -63391,22 +63395,17 @@ ${String(error)}`;
63391
63395
  fetch: fetchImplementation = fetch,
63392
63396
  payload,
63393
63397
  routeDiscovery = "eager",
63394
- unstable_getContext
63398
+ getContext
63395
63399
  }) {
63396
63400
  if (payload.type !== "render") throw new Error("Invalid payload type");
63397
63401
  let { router, routeModules } = React__namespace.useMemo(
63398
63402
  () => createRouterFromPayload({
63399
63403
  payload,
63400
63404
  fetchImplementation,
63401
- unstable_getContext,
63405
+ getContext,
63402
63406
  createFromReadableStream
63403
63407
  }),
63404
- [
63405
- createFromReadableStream,
63406
- payload,
63407
- fetchImplementation,
63408
- unstable_getContext
63409
- ]
63408
+ [createFromReadableStream, payload, fetchImplementation, getContext]
63410
63409
  );
63411
63410
  React__namespace.useEffect(() => {
63412
63411
  setIsHydrated();
@@ -63478,7 +63477,7 @@ ${String(error)}`;
63478
63477
  future: {
63479
63478
  // These flags have no runtime impact so can always be false. If we add
63480
63479
  // flags that drive runtime behavior they'll need to be proxied through.
63481
- unstable_middleware: false,
63480
+ v8_middleware: false,
63482
63481
  unstable_subResourceIntegrity: false
63483
63482
  },
63484
63483
  isSpaMode: false,
@@ -63764,19 +63763,48 @@ ${String(error)}`;
63764
63763
  if (!serverResponse.body) {
63765
63764
  throw new Error("Missing body in server response");
63766
63765
  }
63766
+ const detectRedirectResponse = serverResponse.clone();
63767
63767
  let serverResponseB = null;
63768
63768
  if (hydrate2) {
63769
63769
  serverResponseB = serverResponse.clone();
63770
63770
  }
63771
63771
  const body = serverResponse.body;
63772
- let payloadPromise;
63772
+ let buffer;
63773
+ let streamControllers = [];
63774
+ const createStream = () => {
63775
+ if (!buffer) {
63776
+ buffer = [];
63777
+ return body.pipeThrough(
63778
+ new TransformStream({
63779
+ transform(chunk, controller) {
63780
+ buffer.push(chunk);
63781
+ controller.enqueue(chunk);
63782
+ streamControllers.forEach((c) => c.enqueue(chunk));
63783
+ },
63784
+ flush() {
63785
+ streamControllers.forEach((c) => c.close());
63786
+ streamControllers = [];
63787
+ }
63788
+ })
63789
+ );
63790
+ }
63791
+ return new ReadableStream({
63792
+ start(controller) {
63793
+ buffer.forEach((chunk) => controller.enqueue(chunk));
63794
+ streamControllers.push(controller);
63795
+ }
63796
+ });
63797
+ };
63773
63798
  const getPayload = async () => {
63774
- if (payloadPromise) return payloadPromise;
63775
- payloadPromise = createFromReadableStream(body);
63776
- return payloadPromise;
63799
+ return createFromReadableStream(createStream());
63777
63800
  };
63778
63801
  try {
63779
- const payload = await getPayload();
63802
+ if (!detectRedirectResponse.body) {
63803
+ throw new Error("Failed to clone server response");
63804
+ }
63805
+ const payload = await createFromReadableStream(
63806
+ detectRedirectResponse.body
63807
+ );
63780
63808
  if (serverResponse.status === SINGLE_FETCH_REDIRECT_STATUS && payload.type === "redirect") {
63781
63809
  const headers2 = new Headers(serverResponse.headers);
63782
63810
  headers2.delete("Content-Encoding");
@@ -63887,7 +63915,7 @@ ${String(error)}`;
63887
63915
  future: {
63888
63916
  // These flags have no runtime impact so can always be false. If we add
63889
63917
  // flags that drive runtime behavior they'll need to be proxied through.
63890
- unstable_middleware: false,
63918
+ v8_middleware: false,
63891
63919
  unstable_subResourceIntegrity: false
63892
63920
  },
63893
63921
  isSpaMode: false,
@@ -63993,7 +64021,7 @@ ${String(error)}`;
63993
64021
  return /* @__PURE__ */ React__namespace.createElement(RouterProvider, { flushSync: ReactDOM__namespace.flushSync, ...props });
63994
64022
  }
63995
64023
  /**
63996
- * react-router v7.8.2
64024
+ * react-router v7.9.1
63997
64025
  *
63998
64026
  * Copyright (c) Remix Software Inc.
63999
64027
  *
@@ -64022,6 +64050,7 @@ ${String(error)}`;
64022
64050
  PrefetchPageLinks,
64023
64051
  Route,
64024
64052
  Router,
64053
+ RouterContextProvider: RouterContextProvider$1,
64025
64054
  RouterProvider,
64026
64055
  Routes,
64027
64056
  Scripts,
@@ -64029,6 +64058,7 @@ ${String(error)}`;
64029
64058
  ServerRouter,
64030
64059
  StaticRouter,
64031
64060
  StaticRouterProvider,
64061
+ UNSAFE_AwaitContextProvider: AwaitContextProvider,
64032
64062
  UNSAFE_DataRouterContext: DataRouterContext,
64033
64063
  UNSAFE_DataRouterStateContext: DataRouterStateContext,
64034
64064
  UNSAFE_ErrorResponseImpl: ErrorResponseImpl,
@@ -64064,6 +64094,7 @@ ${String(error)}`;
64064
64094
  UNSAFE_withErrorBoundaryProps: withErrorBoundaryProps,
64065
64095
  UNSAFE_withHydrateFallbackProps: withHydrateFallbackProps,
64066
64096
  createBrowserRouter,
64097
+ createContext,
64067
64098
  createCookie,
64068
64099
  createCookieSessionStorage,
64069
64100
  createHashRouter,
@@ -64096,9 +64127,7 @@ ${String(error)}`;
64096
64127
  unstable_HistoryRouter: HistoryRouter,
64097
64128
  unstable_RSCHydratedRouter: RSCHydratedRouter,
64098
64129
  unstable_RSCStaticRouter: RSCStaticRouter,
64099
- unstable_RouterContextProvider,
64100
64130
  unstable_createCallServer: createCallServer,
64101
- unstable_createContext,
64102
64131
  unstable_getRSCStream: getRSCStream,
64103
64132
  unstable_routeRSCServerRequest: routeRSCServerRequest,
64104
64133
  unstable_setDevServerHooks: setDevServerHooks,
@@ -64619,7 +64648,7 @@ Inferred class string: "${iconClasses}."`
64619
64648
  }
64620
64649
  atomFamilyMembersRegistry.get(family).set(extrasSerializable.toJSON(), atomInstance);
64621
64650
  if (isNested) {
64622
- const key = getRegistryKey(variable, "selector");
64651
+ const key = getRegistryKey(variable, "selector-nested");
64623
64652
  if (!selectorFamilyRegistry.has(key)) {
64624
64653
  selectorFamilyRegistry.set(
64625
64654
  key,
@@ -69908,8 +69937,8 @@ Inferred class string: "${iconClasses}."`
69908
69937
  return selectorInstance;
69909
69938
  }
69910
69939
  const NOT_SET$1 = Symbol("NOT_SET");
69911
- function getOrRegisterDerivedVariable(variable, wsClient, taskContext, currentExtras) {
69912
- const key = getRegistryKey(variable, "selector");
69940
+ function getOrRegisterDerivedVariableValue(variable, wsClient, taskContext, currentExtras) {
69941
+ const key = getRegistryKey(variable, "derived-selector");
69913
69942
  if (!selectorFamilyRegistry.has(key)) {
69914
69943
  getOrRegisterTrigger(variable);
69915
69944
  selectorFamilyRegistry.set(
@@ -70010,7 +70039,6 @@ Inferred class string: "${iconClasses}."`
70010
70039
  } else {
70011
70040
  variableValue = variableResponse.value;
70012
70041
  }
70013
- variableValue = "nested" in variable ? resolveNested(variableValue, variable.nested) : variableValue;
70014
70042
  depsRegistry.set(derivedResult.depsKey, {
70015
70043
  args: derivedResult.relevantValues,
70016
70044
  result: variableValue
@@ -70030,6 +70058,35 @@ Inferred class string: "${iconClasses}."`
70030
70058
  selectorFamilyMembersRegistry.get(family).set(serializableExtras.toJSON(), selectorInstance);
70031
70059
  return selectorInstance;
70032
70060
  }
70061
+ function getOrRegisterDerivedVariable(variable, wsClient, taskContext, currentExtras) {
70062
+ const key = getRegistryKey(variable, "selector-nested");
70063
+ if (!selectorFamilyRegistry.has(key)) {
70064
+ selectorFamilyRegistry.set(
70065
+ key,
70066
+ Recoil_index_11({
70067
+ get: (extrasSerializable) => ({ get }) => {
70068
+ const dvSelector = getOrRegisterDerivedVariableValue(
70069
+ variable,
70070
+ wsClient,
70071
+ taskContext,
70072
+ extrasSerializable.extras
70073
+ );
70074
+ const value = get(dvSelector);
70075
+ return "nested" in variable ? resolveNested(value, variable.nested) : value;
70076
+ },
70077
+ key: nanoid$1()
70078
+ })
70079
+ );
70080
+ }
70081
+ const family = selectorFamilyRegistry.get(key);
70082
+ const serializableExtras = new RequestExtrasSerializable(currentExtras);
70083
+ const selectorInstance = family(serializableExtras);
70084
+ if (!selectorFamilyMembersRegistry.has(family)) {
70085
+ selectorFamilyMembersRegistry.set(family, /* @__PURE__ */ new Map());
70086
+ }
70087
+ selectorFamilyMembersRegistry.get(family).set(serializableExtras.toJSON(), selectorInstance);
70088
+ return selectorInstance;
70089
+ }
70033
70090
  function preloadDerivedValue({
70034
70091
  key,
70035
70092
  variables,
@@ -74628,7 +74685,7 @@ body,
74628
74685
  element: /* @__PURE__ */ React__namespace.createElement(AuthenticatedRoot, { daraData: config2 }),
74629
74686
  loader: createAuthenticatedRootLoader(config2),
74630
74687
  // token must be set to access the authenticated routes
74631
- unstable_middleware: [
74688
+ middleware: [
74632
74689
  async () => {
74633
74690
  if (verifiedToken) {
74634
74691
  return;
@@ -98688,6 +98745,7 @@ body,
98688
98745
  exports.getIcon = getIcon;
98689
98746
  exports.getOrRegisterDerivedVariable = getOrRegisterDerivedVariable;
98690
98747
  exports.getOrRegisterDerivedVariableResult = getOrRegisterDerivedVariableResult;
98748
+ exports.getOrRegisterDerivedVariableValue = getOrRegisterDerivedVariableValue;
98691
98749
  exports.getOrRegisterServerVariable = getOrRegisterServerVariable;
98692
98750
  exports.getRegistryKey = getRegistryKey;
98693
98751
  exports.getSessionToken = getSessionToken;
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dara-core
3
- Version: 1.21.7
3
+ Version: 1.21.9
4
4
  Summary: Dara Framework Core
5
5
  Home-page: https://dara.causalens.com/
6
6
  License: Apache-2.0
@@ -21,10 +21,10 @@ Requires-Dist: cachetools (>=5.0.0,<6.0.0)
21
21
  Requires-Dist: certifi (>=2024.7.4)
22
22
  Requires-Dist: click (==8.1.3)
23
23
  Requires-Dist: colorama (>=0.4.6,<0.5.0)
24
- Requires-Dist: create-dara-app (==1.21.7)
24
+ Requires-Dist: create-dara-app (==1.21.9)
25
25
  Requires-Dist: croniter (>=1.0.15,<3.0.0)
26
26
  Requires-Dist: cryptography (>=42.0.4)
27
- Requires-Dist: dara-components (==1.21.7) ; extra == "all"
27
+ Requires-Dist: dara-components (==1.21.9) ; extra == "all"
28
28
  Requires-Dist: exceptiongroup (>=1.1.3,<2.0.0)
29
29
  Requires-Dist: fastapi (>=0.115.0,<0.116.0)
30
30
  Requires-Dist: fastapi_vite_dara (==0.4.0)
@@ -55,7 +55,7 @@ Description-Content-Type: text/markdown
55
55
 
56
56
  # Dara Application Framework
57
57
 
58
- <img src="https://github.com/causalens/dara/blob/v1.21.7/img/dara_light.svg?raw=true">
58
+ <img src="https://github.com/causalens/dara/blob/v1.21.9/img/dara_light.svg?raw=true">
59
59
 
60
60
  ![Master tests](https://github.com/causalens/dara/actions/workflows/tests.yml/badge.svg?branch=master)
61
61
  [![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://www.apache.org/licenses/LICENSE-2.0)
@@ -100,7 +100,7 @@ source .venv/bin/activate
100
100
  dara start
101
101
  ```
102
102
 
103
- ![Dara App](https://github.com/causalens/dara/blob/v1.21.7/img/components_gallery.png?raw=true)
103
+ ![Dara App](https://github.com/causalens/dara/blob/v1.21.9/img/components_gallery.png?raw=true)
104
104
 
105
105
  Note: `pip` installation uses [PEP 660](https://peps.python.org/pep-0660/) `pyproject.toml`-based editable installs which require `pip >= 21.3` and `setuptools >= 64.0.0`. You can upgrade both with:
106
106
 
@@ -117,9 +117,9 @@ Explore some of our favorite apps - a great way of getting started and getting t
117
117
 
118
118
  | Dara App | Description |
119
119
  | -------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
120
- | ![Large Language Model](https://github.com/causalens/dara/blob/v1.21.7/img/llm.png?raw=true) | Demonstrates how to use incorporate a LLM chat box into your decision app to understand model insights |
121
- | ![Plot Interactivity](https://github.com/causalens/dara/blob/v1.21.7/img/plot_interactivity.png?raw=true) | Demonstrates how to enable the user to interact with plots, trigger actions based on clicks, mouse movements and other interactions with `Bokeh` or `Plotly` plots |
122
- | ![Graph Editor](https://github.com/causalens/dara/blob/v1.21.7/img/graph_viewer.png?raw=true) | Demonstrates how to use the `CausalGraphViewer` component to display your graphs or networks, customising the displayed information through colors and tooltips, and updating the page based on user interaction. |
120
+ | ![Large Language Model](https://github.com/causalens/dara/blob/v1.21.9/img/llm.png?raw=true) | Demonstrates how to use incorporate a LLM chat box into your decision app to understand model insights |
121
+ | ![Plot Interactivity](https://github.com/causalens/dara/blob/v1.21.9/img/plot_interactivity.png?raw=true) | Demonstrates how to enable the user to interact with plots, trigger actions based on clicks, mouse movements and other interactions with `Bokeh` or `Plotly` plots |
122
+ | ![Graph Editor](https://github.com/causalens/dara/blob/v1.21.9/img/graph_viewer.png?raw=true) | Demonstrates how to use the `CausalGraphViewer` component to display your graphs or networks, customising the displayed information through colors and tooltips, and updating the page based on user interaction. |
123
123
 
124
124
  Check out our [App Gallery](https://dara.causalens.com/gallery) for more inspiration!
125
125
 
@@ -146,9 +146,9 @@ And the supporting UI packages and tools.
146
146
  - `ui-utils` - miscellaneous utility functions
147
147
  - `ui-widgets` - widget components
148
148
 
149
- More information on the repository structure can be found in the [CONTRIBUTING.md](https://github.com/causalens/dara/blob/v1.21.7/CONTRIBUTING.md) file.
149
+ More information on the repository structure can be found in the [CONTRIBUTING.md](https://github.com/causalens/dara/blob/v1.21.9/CONTRIBUTING.md) file.
150
150
 
151
151
  ## License
152
152
 
153
- Dara is open-source and licensed under the [Apache 2.0 License](https://github.com/causalens/dara/blob/v1.21.7/LICENSE).
153
+ Dara is open-source and licensed under the [Apache 2.0 License](https://github.com/causalens/dara/blob/v1.21.9/LICENSE).
154
154
 
@@ -93,7 +93,7 @@ dara/core/router/compat.py,sha256=WAVzDcJFJOVoIQ5inplIhXD58TWsWwTTebTCqpG4nGs,31
93
93
  dara/core/router/components.py,sha256=K6bj04_ZPJcU9JQjaxPJkbUeaHtA_jeJNEvCqQbDf3A,5090
94
94
  dara/core/router/dependency_graph.py,sha256=AyjSk3DuvCgACrgpID4oSpms1X6GQJUbt-scY5X_LN4,2305
95
95
  dara/core/router/router.py,sha256=1r3rFGiftOXC6GP66hKqTdcVNDRJsZWBWvL74wNG4dA,29719
96
- dara/core/umd/dara.core.umd.cjs,sha256=ijZEPc3z9W93K4pxOPMmSsa45GULhjoXy-HtjVWIEvQ,5148648
96
+ dara/core/umd/dara.core.umd.cjs,sha256=_3lj4wdDwfrH5bP1BzlH_2cTZatXsiIOOHwRcxwIRY8,5150233
97
97
  dara/core/umd/style.css,sha256=yT3PKpi2sKI2-kQIF8xtVbTPQqgpK7-Ua7tfzDPuSsI,4095881
98
98
  dara/core/visual/__init__.py,sha256=QN0wbG9HPQ_vXh8BO8DnBXeYLIENVTNtRmYzZf1lx7c,577
99
99
  dara/core/visual/components/__init__.py,sha256=nmCsnMLXeZAjkhMYz-mIFodpVY-69IO1fvwwXbFlMQ4,2447
@@ -120,8 +120,8 @@ dara/core/visual/themes/__init__.py,sha256=aM4mgoIYo2neBSw5FRzswsht7PUKjLthiHLmF
120
120
  dara/core/visual/themes/dark.py,sha256=UQGDooOc8ric73eHs9E0ltYP4UCrwqQ3QxqN_fb4PwY,1942
121
121
  dara/core/visual/themes/definitions.py,sha256=5g83t24w8Ar51Cl9REBJfCU7_DtlashBQeUTKDg3D1M,2862
122
122
  dara/core/visual/themes/light.py,sha256=-Tviq8oEwGbdFULoDOqPuHO0UpAZGsBy8qFi0kAGolQ,1944
123
- dara_core-1.21.7.dist-info/LICENSE,sha256=r9u1w2RvpLMV6YjuXHIKXRBKzia3fx_roPwboGcLqCc,10944
124
- dara_core-1.21.7.dist-info/METADATA,sha256=810d-0xWmjV7KC-LzGt26ZgrZj0Q66v2Yv3BxtzNCl4,7534
125
- dara_core-1.21.7.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
126
- dara_core-1.21.7.dist-info/entry_points.txt,sha256=H__D5sNIGuPIhVam0DChNL-To5k8Y7nY7TAFz9Mz6cc,139
127
- dara_core-1.21.7.dist-info/RECORD,,
123
+ dara_core-1.21.9.dist-info/LICENSE,sha256=r9u1w2RvpLMV6YjuXHIKXRBKzia3fx_roPwboGcLqCc,10944
124
+ dara_core-1.21.9.dist-info/METADATA,sha256=TNCrcVLJcY7-PIrkbEgbN1q2U5v6Zncu4DD5K1lnwR4,7534
125
+ dara_core-1.21.9.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
126
+ dara_core-1.21.9.dist-info/entry_points.txt,sha256=H__D5sNIGuPIhVam0DChNL-To5k8Y7nY7TAFz9Mz6cc,139
127
+ dara_core-1.21.9.dist-info/RECORD,,