PCF Dev support for Windows Hyper-V

Installing 'Docker for Windows' has resulted in an unexpected side effect - it requires Windows Hyper-V feature on, which has a direct impact on Virtualbox. This has something to do with the hardware VT-x not visible to Virtualbox when Hyper-V is switched on.
More and more of my development environment is based around docker and cannot think of an alternative other than not using Virtualbox.
Vagrant comes with Hyper-V support, which I haven't tried though, but eventually might have to.
So I'm requesting that please consider Hyper-V virtualisation in your near future releases.

Hi @amitoj,
Thanks for the feature request.
The vast majority of our OS X users are able to take advantage of OS X native virtualization, while the majority of our Windows users are unable to take advantage of Hyper-V. While we hope to support Hyper-V at some point in the future, it will likely be after we support OS X native virtualization and various cloud platforms.
In the meantime, you can use Docker Machine (which is still available in Docker for Windows) with Virtualbox instead of Hyper-V if you need to run Docker and PCF Dev at the same time. I understand that Docker in Virtualbox is not quite as smooth an experience as Docker in Hyper-V, and I apologize if this is inconvenient.

+1

+1

+1

+1

+1

+1

Over a year now.... any progress on this or are Windows developers second class customers?

Hi @adminnz & @sergey-morenets,
The latest official release of PCF Dev provides the same feature set and (Virtualbox-based) experience for macOS, Windows 7-10, and Linux. We have put more effort into supporting Windows than macOS or Linux, due to the differences between Windows 7, 8, and 10.
I understand that Windows 10 has limitations that prevent Hyper-V and Virtualbox from running simultaneously, and that this causes friction when PCF Dev is used with Docker for Windows. This is one reason why support for Hyper-V continues to be a priority on our roadmap.
We recently started re-writing PCF Dev from scratch on top of the native hypervisors (xhyve/Hypervisor.Framework on Mac, Hyper-V on Windows, and KVM on Linux) along with a fully-functional BOSH director. The first publicly available alpha releases of this re-write will be for macOS exclusively, but we intend to release full support for Hyper-V on Windows shortly after that.
I am re-opening this issue for increased visibility.

+1

+1

I think this is now tracked at cfdev

The latest iteration of CF Dev takes advantage of native virtualization - including Hyper-V on any Windows 10+ machine.


[add world tp] world tp via other plugins, cannot use back

Can't go back to previous position when I use other plugins for world tp
I wish to add world tp to function or Capture tp from other plugins (If can
thanks
I have another question, the plugin will be slow to respond on any tp, I use SQLite, don't know if the problem is from my device
This will last for a few seconds, sometimes with SQL Error

Hm, have you a bungeecord/waterfall setup with multiple servers on different machines/locations? Please also provide the SQL errors.
Regarding your first question I don't think I got your point there...

Can't go back to previous position when I use other plugins for world tp
I wish to add world tp to function or Capture tp from other plugins

This isn't something that will be supported, sorry.
Regarding your SQL issues, that's a separate issue, you may need to perform some diagnostics there.


chore: update gatekeeper and azure policy images to patched ones

What type of PR is this?
/kind chore
What this PR does / why we need it:
Patch CVEs in policy+Gatekeeper images, will remove unpatched once deployed in AKS, also removes old images to clear space+CVEs
Which issue(s) this PR fixes:
Requirements:

[x] uses conventional commit messages

[ ] includes documentation
[ ] adds unit tests
[x] tested upgrade from previous version

Special notes for your reviewer:
Release note:
none

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 79.007%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
2243

Relevant Lines:
2839

💛  - Coveralls


[CORE] Count native iterator build duration into pipeline metric

What changes were proposed in this pull request?
Count native iterator build duration in common code path.
(Fixes: #ISSUE-ID)
How was this patch tested?
GHA

===== Performance report for TPCH SF2000 with Velox backend, for reference only ====

query
log/native_3848_time.csv
log/native_master_11_26_2023_f456a7e86_time.csv
difference
percentage

q1
32.67
34.38
1.713
105.24%

q2
24.87
24.62
-0.243
99.02%

q3
38.74
37.74
-1.000
97.42%

q4
37.04
36.67
-0.371
99.00%

q5
71.15
68.82
-2.335
96.72%

q6
7.12
7.12
-0.000
99.99%

q7
85.44
82.01
-3.429
95.99%

q8
88.13
87.72
-0.409
99.54%

q9
127.08
120.79
-6.291
95.05%

q10
45.06
44.22
-0.849
98.12%

q11
20.55
19.96
-0.590
97.13%

q12
27.50
28.56
1.057
103.84%

q13
45.75
46.61
0.851
101.86%

q14
15.61
14.35
-1.264
91.90%

q15
28.29
29.15
0.863
103.05%

q16
15.56
15.41
-0.157
98.99%

q17
103.27
100.98
-2.287
97.79%

q18
150.91
145.61
-5.307
96.48%

q19
14.47
12.88
-1.585
89.04%

q20
28.80
27.79
-1.002
96.52%

q21
226.05
223.56
-2.488
98.90%

q22
13.20
13.03
-0.166
98.74%

total
1247.27
1221.98
-25.291
97.97%

thank you! @PHILO-HE


HDDS-6004. Use changes from HDDS-5881 for volume chroot.

What changes were proposed in this pull request?
Use changes from HDDS-5881 to have the access ID passed to the OM to determine which tenant volume to use for S3 requests. This is a much cleaner solution than the temporary workaround implemented in HDDS-5645.
Change Summary

Deletes many changes from HDDS-5645 (original chroot implementation).
Reverts HDDS-5476, since the principal of incoming requests will always be that of the s3 gateway, and access IDs are now carried in a proto field.
Moves s3 secrets for tenants out of the tenant specific table they were in before, and in to the same s3 secret table already used on master.

Compatibility
Under this PR, we will adopt similar OM <-> S3g compatibility requirements as HDDS-5881:
- A newer s3g cannot talk to an older OM, since the new s3g will always use its kerberos principal, not a principal the same as the calling user's access ID.
- An older s3g can talk to a newer OM, because if the s3 auth fields of the proto are not set, the OM will default to using the principal used by s3g as the access ID.
What is the link to the Apache JIRA
HDDS-6004
How was this patch tested?

Existing integration and acceptance tests that were used to test the original implementation in HDDS-5645.

The acceptance tests failing after the recent merge with master to the feature branch should pass after this PR.

Cross compatibility testing and client versioning is a larger item that is being addressed separately as an upgrade task for all features that may need it, like EC, FSO, S3 gateway changes, etc.

It is beyond the scope of this PR, which just uses existing changes.

@kerneltime Hi Ritesh, feel free to take a look at this if you are interested.

Thanks for the review @smengcl. The new commits should address the comments.


Uncaught AttributeError in sendchat.py line 21

Aider version: 0.57.1
Python version: 3.10.12
Platform: Linux-6.9.3-76060903-generic-x86_64-with-glibc2.35
Python implementation: CPython
Virtual environment: No
OS: Linux 6.9.3-76060903-generic (64bit)
Git version: git version 2.34.1
An uncaught exception occurred:
Traceback (most recent call last):
  File "base_coder.py", line 1115, in send_message
    yield from self.send(messages, functions=self.functions)
  File "base_coder.py", line 1392, in send
    hash_object, completion = send_completion(
  File "sendchat.py", line 87, in send_completion
    res = litellm.completion(**kwargs)
  File "llm.py", line 23, in __getattr__
    self._load_litellm()
  File "llm.py", line 30, in _load_litellm
    self._lazy_module = importlib.import_module("litellm")
  File "__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 883, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "__init__.py", line 8, in <module>
    from litellm.llms.custom_httpx.http_handler import AsyncHTTPHandler, HTTPHandler
  File "http_handler.py", line 7, in <module>
    from httpx import USE_CLIENT_DEFAULT
ImportError: cannot import name 'USE_CLIENT_DEFAULT' from 'httpx' (/home/tuxed/.local/lib/python3.10/site-packages/httpx/__init__.py)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "aider", line 8, in <module>
    sys.exit(main())
  File "main.py", line 709, in main
    coder.run()
  File "base_coder.py", line 723, in run
    self.run_one(user_message, preproc)
  File "base_coder.py", line 766, in run_one
    list(self.send_message(message))
  File "base_coder.py", line 1117, in send_message
    except retry_exceptions() as err:
  File "sendchat.py", line 21, in retry_exceptions
    httpx.ConnectError,
AttributeError: module 'httpx' has no attribute 'ConnectError'

Solved!
rm -Rf /home/tuxed/.local/lib/python3.10/site-packages/httpx/
python3 -m pip install --upgrade git+https://github.com/paul-gauthier/aider.git


feat:  SfImage add webp and different formats of src and srcset

Related issue

Closes #741 #1042 related to #1055
Scope of work

Add new possibilities of adding source of image (srcset as array or string), change computed properies, add some new stories with different srcset and src props.
Screenshots of visual changes

Checklist

[x] No commented blocks of code left
[ ] Run tests and docs
[x] Self code-reviewed

If applicable:

[x] I followed composition rules for my component
[x] I tested the component in most common device sizes (can be tested in Storybook from viewport addon in top menu)
[x] I accept Individual Contributor License Agreement

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.2 out of 3 committers have signed the CLA.:white_check_mark: AdamPawlinski:white_check_mark: pspaczek:x: Michal-DziedzinskiYou have signed the CLA already but the status is still pending? Let us recheck it.

@Michal-Dziedzinski can you check this PR again and try to refactor it. We should have two-way to use this component and add deprecation for our API {desktop; mobile} and remove pictureBreakpoint
New API
1.
<SfImage  src="product.jpg"/>

render as

<SfImage
  src="product.jpg"
  srcset="product-480.jpg 480w, product-800.jpg 800w"
  sizes="(max-width: 600px) 480px, 800px"
/>

render as

<SfImage
src="product.jpg"
srcset="[
  {
    src: `product-480.jpg`,
    media: `(max-width: 480px)`, // optional
    type: `image/webp` //optional
  },
  {
    src: `product-720.jpg`,
    media: `(min-width: 480px) and (max-width: 720px)`, // optional
    type: `image/webp` //optional
  },
  {
    src: `product-1250.jpg`,
    media: `(min-width: 1240px)`, // optional
    type: `image/webp` //optional
  }
]"
/>

render as
<picture>
  <source/>

</picture>

please add some proxy to parse old API to new and use static pictureBreakpoint=1024 for this translation


⚠ Bofrost.lu has degraded performance

In b043a02, Bofrost.lu (https://www.bofrost.lu) experienced degraded performance:

HTTP code: 200
Response time: 2109 ms

Resolved: Bofrost.lu performance has improved in 5a5df22.


[Dimensionality reduction] Correlation between high- and low-dimensional distances as a metric

What is the metric?
Correlation between high-dimensional and low-dimensional pairwise distances. Can be efficiently approximated if we sample e.g. 1000 random points and compute all pairwise distances between those. I prefer rank correlation (Spearman) here instead of Pearson. This is supposed to quantify "global" structure.
Suggested here: https://www.nature.com/articles/nbt.4314
Also used here: https://www.nature.com/articles/s41467-019-13056-x
How should it be implemented?
subset = np.random.choice(X.shape[0], size=subsetsize, replace=False)
d1 = pdist(X[subset,:])
d2 = pdist(Z[subset,:])
rho = scipy.stats.spearmanr(d1[:,None],d2[:,None]).correlation

Which task(s) could it be used for?
Dimensionality reduction.

Why not both spearman and pearson as two metrics? I would assume pearson might be more sensitive and hence discerning?
But then what I always struggle with is that the whole point of dimensionality reduction is that distances in high dimensions are similar and not that informative... so why use them as a ground truth?

Why not both -- well, personally I find having two very similar metrics rather confusing than helpful. The same for two very similar methods. Also, then there is no stopping: if we add Spearman and Pearson, then why not add Kendall as well? Etc.

distances in high dimensions are similar and not that informative

I think it's a misconception. When we do PCA, we use high-dim distances, and it works just fine. When we use t-SNE, we use kNN graph, constructed using high-dim distances. Etc.
Of course, distances in high dim are similar, yes, which is why we should not use mean squared error on distances (the only currently implemented metric -- and I think it should be removed). But correlation is fine, imho.

When we do PCA, we use high-dim distances, and it works just fine. When we use t-SNE, we use kNN graph, constructed using high-dim distances. Etc.

Might be my naivety here... but I've never looked at PCA as using high dim distances. Where do we use high dim distances for PCA?
And then wouldn't you build a kNN graph for t-SNE from euclidean distances on PCA?

Where do we use high dim distances in PCA?

Okay, you are right, that was a sloppy formulation, but I do think it's true that PCA typically will preserve large distances, see e.g. illustration here https://stats.stackexchange.com/a/176801/28666. That's not a formal argument though.

And then wouldn't you build a kNN graph for t-SNE from euclidean distances on PCA?

Yes, but mostly to accelerate kNN graph construction (and maybe also to "denoise" the data a bit). But the t-SNE usually works just fine and looks very similar if you were to build the kNN graph on the original data without PCA.

This argument is that PCA preserves the largest distances, but that's quite distinct from saying PCA preserves distances in high dimensions, no? In the end PC-reduced data should have more discernable distances than high dimensional data... which is also why we use this (or so my interpretation).
You clearly know more about t-SNE initialization... but I had interpreted your recent blog post about PHATE specifically that initialization matters (and PCA-based initialization is good).

Morning, Malte! Do these two figures help?

This definitely helps... but i was thinking about 10k gene expression space with less well-defined clustering. You still think that PC-initialization doesn't change much there?

Yes, sorry... i'm confusing initialization with dim red for kNN graph computation. The latter is what we're discussing. I will take a look at this when I have a bit more bandwidth after the jamboree :). Thanks for the code!


After 2 rounds of playing (all users have sent emojis for 2 rounds), every player can see a voting panel with each player’s username to decide who is the “spy”.

66cfe5ca07db5d42f97938667813f517198c8286
1a96b2881c6228baa1666f40827cb7c0d14fce46


New action request: softprops/action-gh-release

Action name
uses: softprops/action-gh-release
Reasons
softprops/action-gh-release

Intended usage
softprops/action-gh-release

I have checked the internal marketplace for similar actions and couldn't find one that works for us.

[X] I have checked the internal marketplace first

:robot: Found these results:

Check
Results
Links

CodeQL on the forked repo
:white_check_mark:
CodeQL run

Security scan:

Check
Result

No Dependabot configuration found
⛔

No CodeQL Init found
⛔

No CodeQL Analyze found
⛔

:robot: Found these results:

Check
Results
Links

CodeQL on the forked repo
:white_check_mark:
CodeQL run

Security scan:

Check
Result

No Dependabot configuration found
⛔

No CodeQL Init found
⛔

No CodeQL Analyze found
⛔

:robot: Check completed with result: ✅
Found 1 Dependabot security vulnerabilities:
1 where high and 0 where moderate.
Use this link to verify the alerts.


Multiple of the same variants didn't applied properly on responsive styles

Bug report
Previously I've created a discussion in https://github.com/modulz/stitches/discussions/724
Describe the bug
When 2 or more of the same variants are applied on different responsive styles breakpoints, only the last one is applied properly on the component.
To Reproduce
I've got this config:
// stitch.config.js
export const { styled } = createCss({
  ...
  media: {
    phone: `(min-width: 420px)`,
    tablet: `(min-width: 720px)`,
    desktop: `(min-width: 1024px)`,
    wide: `(min-width: 1536px)`,
  },
  ...
})

And then a Flex component that received a justify props and set it according to its variants
// Flex.js
const Flex = styled('div', {
  ...,
  variants: {
    justify: {
      start: { justifyContent: "flex-start" },
      center: { justifyContent: "center" },
      end: { justifyContent: "flex-end" },
      between: { justifyContent: "space-between" },
      evenly: { justifyContent: "space-evenly" }
    },
  },
  ...
})

// usage of Flex
return (
  <Flex justify={{
        "@initial": "start",
        "@phone": "center",
        "@tablet": "end",
        "@desktop": "between",
        "@wide": "end"
  }}>
   {...items}
  </Flex>
)

When I run it, the media query for @tablet never applied on the <Flex />
You can try this too:
justify={{
  "@initial": "start",
  "@phone": "center",
  "@tablet": "end",
  "@desktop": "end",
  "@wide": "end"
}}

And the end variant will only be applied on the @wide screen. The tablet @tablet and @desktop screen still has the center variant.
Here's a sandbox demo: https://codesandbox.io/s/stitches-responsive-problem-r43lf
System information

OS: [macOS]
Browser: tried on Chrome, Safari TP, and Firefox Nightly
Version of Stitches: Tried on 0.2.5 and 1.0.0-canary.10

@jonathantneal can you verify? thanks!

I’m not certain this is a bug, but is instead a misunderstanding of media queries, and mostly because the old syntax for media queries is not very helpful to authors.
I recommend using the newer media query ranges syntax in your stitches.config.js:
import { createStitches } from "@stitches/react";

export const { styled } = createStitches({
  media: {
    phone: "(width < 720px)",
    tablet: "(720px <= width < 1024px)",
    desktop: "(1024px <= width < 1536px)",
    wide: "(1536px <= width)",
  },
});

With these breakpoints, I verified that the correct styles were applying to the correct breakpoints in the correct order.
https://codesandbox.io/s/stitches-responsive-problem-forked-ghszg?file=/src/stitches.config.js

Sorry @jonathantneal, I tried your sandbox but it still has not applied correctly
<Flex
  justify={{
    '@initial': 'start',
    '@phone': 'center',
    '@tablet': 'end',
    '@desktop': 'between',
    '@wide': 'end',
  }}
>

The @phone and @wide has end variant on it, but the applied flex are start (which is the @initial one)

You are right, @vasilenka! I have been investigating this. While I don’t understand why it is happening, it has something to do with end being used twice; if that helps you with any work arounds before the fix is in.

@jonathantneal I made another fork of the sandbox and try to explore the problem, you can find it here: https://codesandbox.io/s/stitches-responsive-problem-forked-nz3ui
https://nz3ui.csb.app/
You may already notice it, but here're what I found:
Using the old media syntax (min-width: value)

This is the result when viewed on the @wide screen (>= 1536px)
The media for @tablet appeared here, but no declaration for @wide media
It's as if the logic is to take all the same variants that applied to different breakpoints, choose the most relevant rule (in this case min-width: 720px), and then applied to the latest/highest breakpoint.
I added more cases on the sandbox too, you might want to check it yourself to see the behavior. But here're some notes:

Adding max-value to the range media syntax like this: (min-value < width < max-value) will yield a different result from the old syntax with only (min-width: min-value), even though the expected result is the same because the applied rules should be the same.
It's even wilder if you add more duplicated variants. e.g. start, center, end, end, center will only apply the start value on every breakpoint

I hope this could help you in solving the issue

We haven’t had a chance to look into this much deeper. However, we can see the problem in the final output of the CSS. You will see that the shared key/value pairs under different media queries get mixed together.
--sxs {
	--sxs: 2 c-kZriBw
}

@media {
	 .c-kZriBw {
		display: flex;
		width: 100vw;
		height: 100vh;
	}
}

--sxs {
	--sxs: 3 c-kZriBw-awKDG-justify-start c-kZriBw-ceSYxj-justify-center c-kZriBw-cgrpcB-justify-between c-kZriBw-lfUpcg-justify-end
}

@media {
	 .c-kZriBw-awKDG-justify-start {
		justify-content: flex-start;
	}
	 @media (max-width: 719.9375px) {
		 .c-kZriBw-ceSYxj-justify-center {
			justify-content: center;
		}

	}
	 @media (min-width: 1024px) and (max-width: 1535.9375px) {
		 .c-kZriBw-cgrpcB-justify-between {
			justify-content: space-between;
		}

	}
	 @media (min-width: 1536px) {
		 @media (min-width: 720px) and (max-width: 1023.9375px) {
			 .c-kZriBw-lfUpcg-justify-end {
				justify-content: flex-end;
			}

		}

	}

}

I have been dealing with a similar issue today, and I did find a couple of things that seem to matter;

The sequence inside stitches.config. Here is my current setup:

export const {
  styled,
  css,
  globalCss,
  keyframes,
  getCssText,
  theme,
  createTheme,
  config,
} = createStitches({
  media: {
    // IMPORTANT! The sequence here seems to be important!
    laptops: "(1024px <= width)",
    tablets: "(768px <= width < 1024px)",
    phones: "(width < 768px)",
  },
  theme: {
 ....

Assign a variant to every break-point:

<WeLoveStichCompoenent
  screenSize={{
    "@laptops": "laptop",
    "@tablets": "tablet",
    "@phones": "phone",
    "@initial": "phone",
  }}
/>

Notice that I mirror the sequence I have in my stitches.config inside the component as well. I did not have time to investigate further, but it is fair to believe that this issue gets worse with number of break-points. So for now I have limited myself to three in my case

@jkhoel would you mind validating that https://github.com/modulz/stitches/pull/869 is working as you'd expect?

@hadihallak sorry for taking so long to get back to this
I'm confused on how or which version should I test it with? there're lots of different canary version on Codesandbox
Also, I tried it on 1.2.5 and 1.0.0-canary.19 but it doesn't seems like it's working as expected yet
I already made a codesandbox project that you can use as reference for the expected result, you can see it here:
https://codesandbox.io/s/stitches-responsive-problem-forked-nz3ui?file=/src/App.js
https://nz3ui.csb.app
It's just testing the justify-content property
I used 2 different configs for the media query syntax to see if the result will be different

@vasilenka No worries and thank you so much for taking a look again.
Sorry, I should've clarified that but the PR isn't currently published to npm and can only be tested on the codesandbox link in the PR
I did take a look at the link you provided and I believe that the fix is matching the behavior you described here.
Thanks again, super helpful!

this is now fixed in #875 and is pending release so i'm gonna keep the issue open until we release it publicly

This is now fixed in a release candidate under the version 1.2.6-0 under a canary tag.
Should be pretty stable if you'd like to upgrade now but expect a final release sometime next week once we finish migrating our products to use the updated version.
Please, don't hesitate in providing us with any feedback regarding this release. very much appreciated 🙏

thank you for the hard work!
you can close this issue anytime you need to

Thanks for this, I just want to verify my implementation as it seems to not be working using 1.2.6-0 in codesandbox: https://codesandbox.io/s/stitches-responsive-problem-forked-umghp?file=/src/App.js

Hey @coreybruyere 👋
you just need to make sure that your media queries have a defined range like in this codesandbox if you know you're going to use them in a responsive variant combo where multiple media queries can match at the same time

thanks @hadihallak - is the reasoning for this going to be documented anywhere?

Published under 1.2.6 🎉


Add CSS Layout

Pull Request Template
Please ensure all items below are checked before creating a pull request:

[x] My submission is formatted according to the guidelines in the contributing guide
[x] My submission is ordered alphabetically
[x] My submission has a useful description
[x] I have searched the repository for any relevant issues or pull requests
[x] All changes have been squashed into a single commit

Thank you for the contribution, again! :)


Print table info from all schemas

Request
Currently, only the default schema ("public" in Postgres, which is what I use) is queried for table information. I would like it if all schemas were processed.
Thoughts
It looks like :schema-adapter is threaded through most of the main functions, so I'm not sure if this would be easy or not. For Postgres only, you could change prep and get-tables like this to get the full list of tables into a map grouped by the schema:
(defn prep
  "returns metadata needed to construct xray"
  [conn & [adapter-opts]]
  (let [metadata (.getMetaData conn)
        dbtype   (dbx/database-product-name metadata)
        schemas
        (jdbc/execute!
          conn
          ["SELECT table_schema
           FROM information_schema.tables
           WHERE table_type = 'BASE TABLE'
           AND table_schema NOT IN ('pg_catalog', 'information_schema')
           GROUP BY table_schema;"])
        dbmd     {:metadata     metadata
                  :dbtype       dbtype
                  :catalog      (-> metadata .getConnection .getCatalog)
                  :schemas schemas
                  :include-raw? (:include-raw? adapter-opts)}]
    (assoc dbmd :dbadapter (merge (dbx/adapter dbmd) adapter-opts))))

(defn get-tables
  [{:keys [metadata catalog schemas]}]
  (binding [njdf/*datafy-failure* :omit]
    (->> schemas
         (keep :tables/table_schema)
         (mapcat #(-> metadata
                      (.getTables catalog % nil (into-array ["TABLE"]))
                      (dbx/datafy-result-set)))
         (group-by :table_schem))))

and then maybe switch out each of the getX functions to mapcat over each of the pairs of schema to list of tables.
Thanks so much!

This is great! I made a lot of assumptions when putting this together just to get something working, hoping I'd get feedback like this. I've been in conference prep mode for my talk for reclojure tomorrow, but hope to get to this in the next few days.
Thank you!

Ayy good luck with your talk! Can't wait to watch it when the vod goes up.

Ok here's what I'm thinking: you can call ~xray~ like ~(xray conn {:schema-pattern "schema-x"})~ for each of your schemas, and that should override the default. Would that work for your use case?
Perhaps I could introduce another function that would do this for you, and then return a map of ~{"schema-x" xray-x, "schema-y" xray-y}~ (hopefully that makes sense). I don't have enough experience with this to know what would be most useful unfortunately


PubMedFetcher: Article titles are truncated when PubMed article title include italics

Description of issue
Some PubMed articles includes italics. When this occurs metapub is returning only a portion (truncation) of the title. It returns the text preceding the first instance of the  tag within the XML title field.  I've traced it down to the _get method that follows _get_title method.
Possible Solution
It seems that lxml is thinking that the  elements are XML sub-elements. However, they are actually part of the title. Maybe we need to iterate over the ArticleTitle element's children and concatenate them into a single string.
Possible location of issue:
pubmedarticle.py > line 359 > return self._get(self._root+'/Article/ArticleTitle')
base.py > line 82 > return elem.text
Code to reproduce issue
from metapub import PubMedFetcher
# List of example PMIDs that cause title issues
myPMID=['30109010','30735122','30644289','30319856','30127828']

#Titles from PubMed website
truePlainTextTitles=[
	'Discovery of a Tetrazolyl β-Carboline With in vitro and in vivo Osteoprotective Activity Under Estrogen-Deficient Conditions',
	'Reactivation of a Developmental Bmp2 Signaling Center Is Required for Therapeutic Control of the Murine Periosteal Niche',
	'Characterization of Different in vitro Culture Conditions to Induce a Fibro-Chondrogenic Differentiation of Swine Adipose-Derived Stem Cells',
	'Sialoglycoprotein From Gadous morhua Eggs Improve High Bone Turnover Activity via Down-Regulating BMP-2/Smads and Wnt/β-catenin Signal Pathways',
	'Ethyl Acetate Extract of Licorice Root (Glycyrrhiza glabra) Enhances Proliferation and Osteogenic Differentiation of Human Bone Marrow Mesenchymal Stem Cells']

#Titles from metapub's XML data returned from PubMed
APIXMLPlainTextTitles=[
        'Discovery of a tetrazolyl \xce\xb2-carboline with in vitro and in vivo osteoprotective activity under estrogen-deficient conditions.',
        'Reactivation of a developmental Bmp2 signaling center is required for therapeutic control of the murine periosteal niche.',
        'Characterization of different in vitro culture conditions to induce a fibro-chondrogenic differentiation of swine adipose-derived stem cells.',
        'Sialoglycoprotein from Gadous morhua eggs improve high bone turnover activity via down-regulating BMP-2/Smads and Wnt/\xce\xb2-catenin signal pathways.',
        'Ethyl Acetate Extract of Licorice Root (Glycyrrhiza glabra) Enhances Proliferation and Osteogenic Differentiation of Human Bone Marrow Mesenchymal Stem Cells.']

fetch = PubMedFetcher() #create fetch object

i=0
for pmid in myPMID:
    article = fetch.article_by_pmid(pmid)
    print('\nPMID: ',pmid)
    print('PubMed Title: ',truePlainTextTitles[i])
    print('XML Title: ',APIXMLPlainTextTitles[i])
    print('Fetched Title: ',article.title)
    i=i+1

Output
Fetched Title = title returned by metapub
NOTE: Notice the  tags within the XML Title strings below.
PMID:  30109010
PubMed Title:  Discovery of a Tetrazolyl β-Carboline With in vitro and in vivo Osteoprotective Activity Under Estrogen-Deficient Conditions
XML Title:  Discovery of a tetrazolyl Î²-carboline with in vitro and in vivo osteoprotective activity under estrogen-deficient conditions.
Fetched Title:  Discovery of a tetrazolyl β-carboline with

PMID:  30735122
PubMed Title:  Reactivation of a Developmental Bmp2 Signaling Center Is Required for Therapeutic Control of the Murine Periosteal Niche
XML Title:  Reactivation of a developmental Bmp2 signaling center is required for therapeutic control of the murine periosteal niche.
Fetched Title:  Reactivation of a developmental

PMID:  30644289
PubMed Title:  Characterization of Different in vitro Culture Conditions to Induce a Fibro-Chondrogenic Differentiation of Swine Adipose-Derived Stem Cells
XML Title:  Characterization of different in vitro culture conditions to induce a fibro-chondrogenic differentiation of swine adipose-derived stem cells.
Fetched Title:  Characterization of different

PMID:  30319856
PubMed Title:  Sialoglycoprotein From Gadous morhua Eggs Improve High Bone Turnover Activity via Down-Regulating BMP-2/Smads and Wnt/β-catenin Signal Pathways
XML Title:  Sialoglycoprotein from Gadous morhua eggs improve high bone turnover activity via down-regulating BMP-2/Smads and Wnt/Î²-catenin signal pathways.
Fetched Title:  Sialoglycoprotein from

PMID:  30127828
PubMed Title:  Ethyl Acetate Extract of Licorice Root (Glycyrrhiza glabra) Enhances Proliferation and Osteogenic Differentiation of Human Bone Marrow Mesenchymal Stem Cells
XML Title:  Ethyl Acetate Extract of Licorice Root (Glycyrrhiza glabra) Enhances Proliferation and Osteogenic Differentiation of Human Bone Marrow Mesenchymal Stem Cells.
Fetched Title:  Ethyl Acetate Extract of Licorice Root

Hey @jramshur thanks for the really nice bug report!   (Apologies for not seeing it right away, I was away for half of November, and I'm just catching up now.)

It seems that lxml is thinking that the  elements are XML sub-elements

That seems very likely.
I wonder if lxml has any concept of ignoring certain tags? If it does, that's the right way to solve this.
Just a quick Google gives me something about lxml.html.fromstring(), and the lxml documentation  says we can invoke an HTML parser on a subtree to get something like this:
   >>> html = etree.HTML(broken_html)
   >>> result = etree.tostring(html, pretty_print=True, method="html")
   >>> print(result)

       <title>test</title>

page title

Then I guess we strip out the tags ourselves.
Thanks for catching this, and especially for providing examples that we can write tests around.

I've been looking into this myself a little as I've run into this issue as well.
It seems that lxml.html does have a relatively straight forward way to strip tags. Unfortunately, it seems to wrap the result in a parent div, so that will need to be stripped again. I will submit a pull request with a proposed solution.

Thanks @jvansan I'll try to check it out tonight -- if not, then tomorrow morning.  Thanks again!

Great work guys. It seems to be working now.


Torchvision.transforms.v2 does nothing & fails silently with numpy array

🐛 Describe the bug

All (or at least most) transforms fail silently when input a numpy array
Even though, the doc say that it supports only PIL images or tensors, it should produce an Exception to let the user know that something did not went right.
See also this discussion Torchvision.transforms.v2 does nothing / fails silently?

Minimal example:
import torch
import numpy as np
import torchvision.transforms.v2 as v2
import matplotlib.pyplot as plt
from PIL import Image

## tensor (works as expected)
tensor_img = torch.tensor(np.ones((1,3,100,100)))
tensor_img_transformed = v2.Pad(50)(tensor_img)
print(float(tensor_img_transformed.mean())) # correctly outputs 0.25
plt.imshow(np.transpose(tensor_img_transformed.squeeze(), (2, 1, 0)))

## np.array (does nothing / fails silently)
np_img = np.ones((100,100,3))
np_img_transformed = v2.Pad(50)(np_img)
print(np.mean(np_img_transformed)) # still 1.0
plt.figure(); plt.imshow(np_img_transformed)

Versions
PyTorch version: 2.4.1+cu121
Is debug build: False
CUDA used to build PyTorch: 12.1
ROCM used to build PyTorch: N/A
OS: Ubuntu 22.04.3 LTS (x86_64)
GCC version: (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0
Clang version: 14.0.0-1ubuntu1.1
CMake version: version 3.30.3
Libc version: glibc-2.35
Python version: 3.10.12 (main, Sep 11 2024, 15:47:36) [GCC 11.4.0] (64-bit runtime)
Python platform: Linux-6.1.85+-x86_64-with-glibc2.35
Is CUDA available: False
CUDA runtime version: 12.2.140
CUDA_MODULE_LOADING set to: N/A
GPU models and configuration: Could not collect
Nvidia driver version: Could not collect
cuDNN version: Probably one of the following:
/usr/lib/x86_64-linux-gnu/libcudnn.so.8.9.6
/usr/lib/x86_64-linux-gnu/libcudnn_adv_infer.so.8.9.6
/usr/lib/x86_64-linux-gnu/libcudnn_adv_train.so.8.9.6
/usr/lib/x86_64-linux-gnu/libcudnn_cnn_infer.so.8.9.6
/usr/lib/x86_64-linux-gnu/libcudnn_cnn_train.so.8.9.6
/usr/lib/x86_64-linux-gnu/libcudnn_ops_infer.so.8.9.6
/usr/lib/x86_64-linux-gnu/libcudnn_ops_train.so.8.9.6
HIP runtime version: N/A
MIOpen runtime version: N/A
Is XNNPACK available: True
CPU:
Architecture:                         x86_64
CPU op-mode(s):                       32-bit, 64-bit
Address sizes:                        46 bits physical, 48 bits virtual
Byte Order:                           Little Endian
CPU(s):                               2
On-line CPU(s) list:                  0,1
Vendor ID:                            GenuineIntel
Model name:                           Intel(R) Xeon(R) CPU @ 2.20GHz
CPU family:                           6
Model:                                79
Thread(s) per core:                   2
Core(s) per socket:                   1
Socket(s):                            1
Stepping:                             0
BogoMIPS:                             4399.99
Flags:                                fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid tsc_known_freq pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single ssbd ibrs ibpb stibp fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm rdseed adx smap xsaveopt arat md_clear arch_capabilities
Hypervisor vendor:                    KVM
Virtualization type:                  full
L1d cache:                            32 KiB (1 instance)
L1i cache:                            32 KiB (1 instance)
L2 cache:                             256 KiB (1 instance)
L3 cache:                             55 MiB (1 instance)
NUMA node(s):                         1
NUMA node0 CPU(s):                    0,1
Vulnerability Gather data sampling:   Not affected
Vulnerability Itlb multihit:          Not affected
Vulnerability L1tf:                   Mitigation; PTE Inversion
Vulnerability Mds:                    Vulnerable; SMT Host state unknown
Vulnerability Meltdown:               Vulnerable
Vulnerability Mmio stale data:        Vulnerable
Vulnerability Reg file data sampling: Not affected
Vulnerability Retbleed:               Vulnerable
Vulnerability Spec rstack overflow:   Not affected
Vulnerability Spec store bypass:      Vulnerable
Vulnerability Spectre v1:             Vulnerable: __user pointer sanitization and usercopy barriers only; no swapgs barriers
Vulnerability Spectre v2:             Vulnerable; IBPB: disabled; STIBP: disabled; PBRSB-eIBRS: Not affected; BHI: Vulnerable (Syscall hardening enabled)
Vulnerability Srbds:                  Not affected
Vulnerability Tsx async abort:        Vulnerable
Versions of relevant libraries:
[pip3] numpy==1.26.4
[pip3] optree==0.12.1
[pip3] torch==2.4.1+cu121
[pip3] torchaudio==2.4.1+cu121
[pip3] torchsummary==1.5.1
[pip3] torchvision==0.19.1+cu121
[conda] Could not collect

Created this PR https://github.com/pytorch/vision/pull/8664
cc @turbotimon @NicolasHug

Hi @turbotimon ,
torchvision does not support transforming numpy arrays (whether it's the v1 or v2 version of the transforms). In v1 you get a loud error, in v2 numpy arrays are treated like any other unsupported objects (str, int, whatever): ithey are passed-through. You can read more here: https://pytorch.org/vision/stable/auto_examples/transforms/plot_transforms_getting_started.html#what-do-i-pass-as-input


Group related articles into a section

Currently the parser just grabs and yield articles based on their Location (an enum of TOP_STORY, MAIN_HEADLINE, or COLUMN), however there is typically more contextual info available when the articles are between <hr>s.
This is primarily an issue for the COLUMN location. It would be better to create a new data structure that composes an image (if available) and the articles in an array (in order) into a sub-section.

Added in 46c138dd64c8a2f5eef0cff61251018dad5a61c4


ButtonGroup component

This PR creates a ButtonGroupComponent based on https://primer.style/css/components/buttons#button-groups and https://primer.style/components/Buttons#default-examples
I decided to make the buttons slots to make it harder to use this component incorrectly, so users don't add things that shouldn't be inside the BtnGroup

Had to recreate because force-push messed some stuff up

Mind adding a CHANGELOG entry?

Mind adding a CHANGELOG entry?

I just noticed that we added a bunch of things without updating the CHANGELOG, I'll merge this as-is and open a PR with the updates!


internal alloy for external access, how ?

@qclaogui Hi Weifeng
First of all, thank you for this helpful repo.
i would like the internal alloy to be accessible from the outside, i.e. 4317, 4318.
i want to use this to send logs, traces and metrics from the outside (alloy client), so that they can be processed by the internal, existing alloy rules.
Thanks for any help.
Stefan

@qclaogui
If i think about it correctly, the internal alloy should be able to be used as a pure ingester for external data,
without internals rules directly on the gateway (nginx).
The external alloy clients should already contain the corresponding rules.


Bug 2090035: Adding alerts card to VM overview page

Signed-off-by: Matan Schatzman<EMAIL_ADDRESS>
📝 Description
Add alerts card to VM overview.
Alerts link will be directed to the monitoring alert.
If there is any critical alert, the accordions will be automatically opened on and show the critical alerts.
🎥 Demo

/retest

@metalice needs rebase

/lgtm


Move execute.py

There is one script used in running OG-USA that is not directly in the OG-USA/ogusa/ folder.  This is the execute.py script that is in OG-USA/ogusa/scripts.
This issue is to suggest we move execute.py to OG-USA/ogusa/ with all other scripts used to build the model.
Any problem with this @hdoupe or @rickecon?

The scripts folder has been removed as of PR #421.


bulk-disseminate Actions will fail if more than 256 submission candidates are found

"A matrix will generate a maximum of 256 jobs per workflow run"
If the run-script stage of any bulk-disseminate Action finds more than 256 works which need to be disseminated based on the Action's inclusion criteria, the run will fail and none of the works will be disseminated. This is because the list of relevant work IDs is passed to a GitHub Actions matrix to create one submission job per work.
Additionally, due to the fact that the list of work IDs found by run-script is not output anywhere (e.g. in logs or artifacts), it's not possible to make up for the failure by disseminating the required works in a more manual fashion.
At present scale, this will rarely be an issue; in most cases, it would require the total number of works produced in a month by all publishers opted-in to a specific dissemination platform to exceed 256 (the current average is closer to 10). However, this did occur in a run of cr-bulk-disseminate, after a bulk database update caused ~6000 works to show up as having been updatedWithRelations within a single dissemination period.
(The update itself wasn't actually one which warranted mass resubmission of metadata anyway; we should consider how to handle similar future updates without unnecessarily overloading distribution platforms.)
Failure report:

Could investigate removing matrix and instead using GitHub API to trigger a new workflow run for each work (instead of a new job within a single run): use cron workflow to do run-script check.


No 1.2.0.M3 spring-cloud-gcp-data-firestore on Spring Milestone repository

Hello.
I was trying to use Spring Cloud GCP for Firestore with this dependency management:
      <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-gcp-dependencies</artifactId>
        <version>1.2.0.M3</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>

Looking at spring milestone repository I was unable to find the 1.2.0.M3 version for spring-cloud-gcp-data-firestore artifact. The repository have only the version 1.2.0.M2.

It was removed by mistake. We'll put it back in so it's available in the next release.

Thanks!


Yii::powered is not using Yii::t

The function Yii:powered is not translated as in version 1.

You can translate it in your view files using Yii::t('app', Yii::powered())

@derekisbusy That will not add the string to the translation file (since it can't resolve Yii::powered() when doing a simple parse).

Thank you

https://github.com/yiisoft/yii2/pull/10178

Done, this can be merged as far as I see

https://github.com/yiisoft/yii2/commit/6d7627c2a51690175875fb8f21d444a3fb656ba6


Trying to create pipeline with no input crashes pachd

What happened?:
I tried to create a pipeline with no input section, and pachd crashed.
Relevant log output:
2018-08-03T17:52:40Z INFO pps.API.call64 {"duration":0.000066093,"request":{"pipeline":{"name":"jdelfino_test"},"transform":{"image":"index.docker.io/library/busybox:latest","cmd":["sh","-c","echo foo \u003e /pfs/out/bar"]},"parallelism_spec":{"constant":1},"salt":"fd459c624ccc45eab10d9851c1c322a2"},"response":null} []
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x10 pc=0xace826]

goroutine 25948 [running]:
github.com/pachyderm/pachyderm/src/server/vendor/github.com/pachyderm/pachyderm/src/client/pps.VisitInput(0x0, 0xc4218ad728)
        /go/src/github.com/pachyderm/pachyderm/src/server/vendor/github.com/pachyderm/pachyderm/src/client/pps/util.go:16 +0x26
github.com/pachyderm/pachyderm/src/server/pps/server.setPipelineDefaults(0xc421332640)
        /go/src/github.com/pachyderm/pachyderm/src/server/pps/server/api_server.go:1928 +0xb6
github.com/pachyderm/pachyderm/src/server/pps/server.(*apiServer).CreatePipeline(0xc420152140, 0x7fc63754a048, 0xc420b06120, 0xc42042d790, 0x0, 0x0, 0x0)
        /go/src/github.com/pachyderm/pachyderm/src/server/pps/server/api_server.go:1743 +0x534
github.com/pachyderm/pachyderm/src/server/vendor/github.com/pachyderm/pachyderm/src/client/pps._API_CreatePipeline_Handler(0x1b8dd60, 0xc420152140, 0x7fc63754a048, 0xc421ab1e30, 0xc420e936c0, 0x0, 0x0, 0x0, 0xc420505460, 0x0)
        /go/src/github.com/pachyderm/pachyderm/src/server/vendor/github.com/pachyderm/pachyderm/src/client/pps/pps.pb.go:3350 +0x241
github.com/pachyderm/pachyderm/src/server/vendor/google.golang.org/grpc.(*Server).processUnaryRPC(0xc42025b1e0, 0x1da5020, 0xc42179e480, 0xc421332500, 0xc420b8c060, 0x2a366e0, 0x0, 0x0, 0x0)
        /go/src/github.com/pachyderm/pachyderm/src/server/vendor/google.golang.org/grpc/server.go:920 +0x848
github.com/pachyderm/pachyderm/src/server/vendor/google.golang.org/grpc.(*Server).handleStream(0xc42025b1e0, 0x1da5020, 0xc42179e480, 0xc421332500, 0x0)
        /go/src/github.com/pachyderm/pachyderm/src/server/vendor/google.golang.org/grpc/server.go:1142 +0x1318
github.com/pachyderm/pachyderm/src/server/vendor/google.golang.org/grpc.(*Server).serveStreams.func1.1(0xc4216471d0, 0xc42025b1e0, 0x1da5020, 0xc42179e480, 0xc421332500)
        /go/src/github.com/pachyderm/pachyderm/src/server/vendor/google.golang.org/grpc/server.go:637 +0x9f
created by github.com/pachyderm/pachyderm/src/server/vendor/google.golang.org/grpc.(*Server).serveStreams.func1
        /go/src/github.com/pachyderm/pachyderm/src/server/vendor/google.golang.org/grpc/server.go:635 +0xa1

What you expected to happen?:
pachd to not crash, and return a helpful error message
How to reproduce it (as minimally and precisely as possible)?:
Call create-pipeline with this input:
{
  "pipeline": {
    "name": "test"
  },
  "transform": {
    "image": "index.docker.io/library/busybox:latest",
    "cmd": ["sh", "-c", "echo foo > /pfs/out/bar"]
  },
  "parallelism_spec": {
    "constant": 1
  }
}

Environment?:

Pachyderm CLI version (use pachctl version): 1.7.4

Closing—just tested this in 1.9.2 and it no longer seems to be an issue


[#191] [Part1] Upgrade JDK version to 11

https://github.com/nimblehq/android-templates/issues/191
What happened 👀
Java 1.8 is old, we should upgrade it to 11 in order to use latest Gradle or Kotlin version
Insight 📝

Upgrade JDK 11 for CI Pull Request Review and Run Detekt/Unit Test

Proof Of Work 📹
N/A

a quick reminder on these places:
https://github.com/nimblehq/android-templates/blob/feature/191-upgrade-jdk-11/template/build.gradle.kts#L34
https://github.com/nimblehq/android-templates/blob/feature/191-upgrade-jdk-11/template/app/build.gradle.kts#L84
https://github.com/nimblehq/android-templates/blob/feature/191-upgrade-jdk-11/template/app/build.gradle.kts#L88
....

@doannimble Any reason we don't include these changes with the other pull request? 🙏

@doannimble Any reason we don't include these changes with the other pull request? 🙏
One more question, if this is "Part 1", what can we expect from "Part 2"?

@Tuubz In this PR, I only need to update the JDK from CI build. Others related our code base will be implement in Part 2

@doannimble Thanks for the clarification 🙏
Do you agree it would be better to combine both pull requests into one?

@Tuubz Possible, we can merge the Part 2 into the Part 1, Let me do it 👍

@doannimble I'm afraid we can't merge the pull request like this (because code coverage has dropped to 0.66%)
If someone wants to generate a project afterward, they will be given an incorrect code coverage
I'll create a ticket for Kover soon, so we can review this pull request again after (next sprint)  🚀

@doannimble Oh, one more thing. Seems like something went wrong with rebasing, because template/buildSrc/src/main/java/plugins/jacoco-report.gradle.kts has been added again 🙏

@doannimble Should we clean up the commit history with the correct issue references? It's quite messy 🙇
Once cleaned up, we can merge this pull request 🚀


allow disabling starttls

use more up-to-date gomail fork
add starttls option

I've had to change the implementation in your PR as it was disabling StartTLS by default. The flag has now been changed to no_starttls which you have to explicitly set to true in order to disable StartTLS, fixing the default behavior.

oh shoot. you're right. i was trying to set a default of "true" but the cli package doesn't offer that on BoolFlag so i eventually missed that -.-


Signature help

This feature enables the Signature Help request.

Implementation
Tests

The current implementation is pretty basic. Good enough for v1 perhaps, though I would love if it were smarter about keyword arguments and optional values.


Creating a Report for the conversion

@lzehl I modified it as per demand.
The number of subject states for each subject is problematic, as it can vary from subject to subject. What are your thoughts on this: should we present the average number, the total number of subjects, or perhaps a list of subjects with their respective number of states?
Here is a example of report file.

It should have a sentence specifying the authors should double checked, and list all the authors as they have been extracted.


Reintroduce login link during checkout

Login link was removed during checkout but it should be brought back.

Tested on dev10 with this config:
      features: {
    level: '1.2',
      },
      checkout: {
        express: true,
     guest: true
   }
SignIn/Register link is available during checkout, and guest user can login at any step of checkout.


Feature: Structured reporting CSVs

Type of feature
🍕 Feature
Current behavior
Today a user can only pull CSV data from superlative filters. But superlatives only work on top level topics.

Suggested solution
Structure the report to list contributions by date.
Open to interpretation, but here is the thought
list all contributions by date

date
contributor
title
contribution

x
x
x
x

list all contributions by grouped by count

date
contributor
lastcommit date
count

x
x
x
x

list all new contributors by date (first PR flag is true on GitHub)

date
contributor
title
contribution

x
x
x
x

What else? Probably a flag for org member true/false
Additional context
https://github.com/open-sauced/ops-backend/issues/6#issuecomment-1526535067
Code of Conduct

[X] I agree to follow this project's Code of Conduct

Contributing Docs

[ ] I agree to follow this project's Contribution Docs

The new link: https://github.com/open-sauced/api.opensauced.pizza//issues/6#issuecomment-1526535067

The new link: https://github.com/open-sauced/api.opensauced.pizza//issues/6#issuecomment-1526535067
commented on the API repo to connect both issues in case if names changed again in the future.

That link is not correct. The recency score is actually we identify trending repositories and contributors.
However we can leverage this to create a structured report.

Did not the ops-backend repo changed to api.opensauced? I was referring to the link in the description of the issue since it's dead right now.

The ops-backend repo is intentionally private. Private shows as 404 for those without access.

We're going to revisit reporting overall, but it has been removed for now


Some interactions are missing from the API/v2/interactions when paging through

When using https://www.dgidb.org/api/v2/interactions.json to page through all interactions, some interactions are missing. One example is interaction ID d7f0673d-d37a-4e5a-9f09-c7dfce1c3f46 (EGFR->TESEVATINIB).

I think this might be caused by us not sorting the items before paginating. This probably also affects the drugs and genes endpoints.


[feat] add both license and contributing information

This addresses the final step of issue #1. See PRs #14 and #13 for context.

Thanks Chrissy, this is exactly what I meant :) If you can update all the links to this repo then this will be ready to merge.

Will do! :)

Thanks Chrissy, this is exactly what I meant :) If you can update all the links to this repo then this will be ready to merge.

Will do! :)

Hi @EmmaDawsonDev! :) I think I go it! :)

Thanks Chrissy!

You're welcome @EmmaDawsonDev


Dynamic route parameters: how to use i18n/setRouteParams to skip param?

I am referring to this part of the docs:
https://i18n.nuxtjs.org/lang-switcher/#dynamic-route-parameters
The following example from the docs is exactly what I need - except that it doesn't show what to do when the post does not exist in some language.
<template>
  <!-- pages/post/_postId.vue -->
</template>

<script>
export default {
  async asyncData ({ store }) {
    await store.dispatch('i18n/setRouteParams', {
      en: { postId: 'my-post' },
      fr: { postId: 'mon-article' }
    })
    return {
      // your data
    }
  }
}
</script>

The example above translates the routes to /post/my-post and /post/mon-article.
How would I however achieve the following:
<script>
export default {
  async asyncData ({ store }) {
    await store.dispatch('i18n/setRouteParams', {
      en: { postId: 'my-post' },
      fr: { postId: 'mon-article' },
      is: { // In this lang the post does not exist, I want the link to route to some specific page (e.g. my post overview page }
    })
    return {
      // your data
    }
  }
}
</script>

Maybe just redirect if the current locale (app.i18n.locale) is not supported.

Maybe just redirect if the current locale (app.i18n.locale) is not supported.

Yes, redirecting would be great. But how would you set that up within the setRouteParams object?

same issue

Here is a hacky solution to this issue, since it seems to be alive still. If someone has something better, that would of course be great.
In short, if I do not have a translation for a certain language I set the postId to a fixed string (e.g. 'redirect-to-article-overview'). I've than set up a server-middleware that removes that string from URL's.
In practice this means that the following URL:
https://www.mywebsite.foo/articles/redirect-to-article-overview/
redirects to
https://www.mywebsite.foo/articles/
<script>
export default {
  async asyncData ({ store }) {
    await store.dispatch('i18n/setRouteParams', {
      en: { postId: 'my-post' }, // I have the article in this language.
      fr: { postId: 'mon-article' }, // I have the article in this language.
      is: { postId: 'redirect-to-article-overview'' } // I do not have the article in this language.
    })
    return {
      // your data
    }
  }
}
</script>

The server-middleware would work something like this:
module.exports = function (req, res, next) {
    const isArticleNotFound = req.url.includes('redirect-to-article-overview')

    if (isArticleNotFound) {
        res.writeHead(307, { Location: req.url.replace('redirect-to-article-overview', '') });
        res.end();
    } else {
        next();
    }
}


Warnings in make env

Hi,
I am a Phd student working on FPGA security. I am trying to use Symbiflow to generate bitstream for Xilinx Artix-7.  I am facing multiple problems while installing the toolchain by following the steps given in getting started section from symbiflow (https://symbiflow.readthedocs.io/en/latest/symbiflow-arch-defs/docs/source/getting-started.html). I have cloned the repository from github and when i executed "make env" in symbiflow-arch-defs there are lot of warnings related to vivado as shown in the attached screenshot. There is another error also regarding Sanitizers which i am attaching the screenshot for. I want to know is this the right way to install the tools and please let me know if any changes are required in my approach.
My goal is to generate bitstream for a given verilog file using symbiflow for Artix 7 FPGA. I am working in Ubuntu without vivado installed in the system.
Any help would be greatly appreciated. Please point me in the right direction if this is not the place to ask.

Regards,
Sandeep
<EMAIL_ADDRESS>

Yes i actually tried to install Vivado for linux and the download constantly failed. I want to know if that is what the warnings are about and is Vivado needed for symbiflow to work or is there anything else to the warnings. I couldn't find any packages for Sanitizers.

Vivado is not required.  Targets that invoke Vivado (e.g. the targets printed in the warnings) will not work without it.  If you aren't invoking one of those targets, I don't believe you care.

Will those targets be invoked if i am generating a bitstream for Xilinx Artix-7 ?. If i follow the next step provided by symbiflow in their website (https://symbiflow.readthedocs.io/en/latest/symbiflow-arch-defs/docs/source/getting-started.html). In the documentation it is asking to execute make all_conda but it is throwing another error.

Will those targets be invoked if i am generating a bitstream for Xilinx Artix-7 ?

No

If i follow the next step provided by symbiflow in their website (https://symbiflow.readthedocs.io/en/latest/symbiflow-arch-defs/docs/source/getting-started.html). In the documentation it is asking to execute make all_conda but it is throwing another error.

That instruction is out of date, it is no longer required.

Hi Sandeep,
There is also an alternative way to build Symbiflow packages that may be easier for you, especially if have used Nix: https://github.com/hackerfoo/nix-symbiflow
You'll need to change use-vivado ? true to use-vivado ? false on the third line of default.nix.
Then:
nix-build ~/src/nix-symbiflow -A symbiflow-arch-defs

will build the toolchain on your machine.
Also note that https://github.com/SymbiFlow/symbiflow-examples will download a prebuilt toolchain, if you'd rather not wait several hours to build the toolchain.
-- Dusty

Hi litghost,
Is there any updated document i can refer to ? Does it mean symbiflow is build and ready to use ? if so what are the commands i should run next ?

Hi litghost,
Is there any updated document i can refer to ? Does it mean symbiflow is build and ready to use ? if so what are the commands i should run next ?

There is an example directly below in the getting-started you linked?  There is also instructions on https://github.com/SymbiFlow/symbiflow-examples

@SSandeep19 While the Nix packages can work for users, I recommend trying https://github.com/SymbiFlow/symbiflow-examples first, as the Nix packages track current development and will take a long time to build.

Hi litghost,
I tried the example provided in getting started document and i faced an error, attached screenshot of it. I want to know how to generate bitstream of the verilog file i have using symbiflow please provide if there is any documentation as such, i tried to find the verilog file of the counter provided as example and couldn't find it.

Hi @SSandeep19, this error is a result of CMake not emitting the <test>_bin targets any more due to a recent change. The readme does not reflect this change. You can generate the bitstream using the following target:
make counter_arty_bit

If your aim though is just to generate bitstreams from a verilog design, without experimenting on the architecture itself, it might be better to make use of the symbiflow examples repository as suggested above.

Hi acomodi,
Thank you it worked. I actually need to work on the toolchain architecture like how to just run Yosis and get eblif file or just run VPR. Is there a way to do it and how to run my verilog file because i cannot figure out where to input my verilog file. Please let me know if there is any documentation. Do you still think https://github.com/SymbiFlow/symbiflow-examples will serve my purpose better.

Hi tcal-x,
Thank you for your reply. I wanted to work on the tool chain architecture like to run yosys to get eblif file or give eblif file as input and run VPR to get net,place and route files. I also want to generate bit file for my verilog code not just the examples given in symbiflow. Any documentation or suggestions on this would greatly help me. Or do you think i can get this done by symbiflow examples.

@SSandeep19 , I agree with the others that symbiflow-examples is the best place to start.   It has a few examples for Artix 7-series devices, and the makefile structure is straightforward for copying and creating your own project.

Hi tcal-x,
Thank you and i started with SymbiFlow examples and i am facing some errors with it so i have a raised a issue in that project and this is the link for the issue https://github.com/SymbiFlow/symbiflow-examples/issues/45#issue-693115212. Any help would be very much appreciated.

@SSandeep19 I believe this issue is resolved.  Please let us know if there is still something remaining.


Added my first Blog

I have added my first blog which is based on personality development.

Hii buddy,
It would be great if you can add 2-3 more points in your blogs so that it doesn't look like a paragraph or note.

Okay... Will do
On Tue, 27 Sep, 2022, 8:47 pm Kishan Kumar Rai, @.***>
wrote:

Hii buddy,
It would be great if you can add 2-3 more points in your blogs so that it
doesn't look like a paragraph or note.
—
Reply to this email directly, view it on GitHub
https://github.com/kishanrajput23/Hacktoberfest-2022/pull/12#issuecomment-1259660606,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AVKT4RLXMDTQUMSYTNBSVP3WAMF2JANCNFSM6AAAAAAQW2WPZU
.
You are receiving this because you authored the thread.Message ID:
@.***>

Please check it now


HTML styled link click events trigger multiple times after resize

Describe the bug
I was looking at the pygame_gui_examples and noticed that styled link click events fire multiple times after resizing the text box.
To Reproduce
Steps to reproduce the behaviour:

Run general_ui_test_app.py from the pygame_gui_examples or anything with a resizable HTML styled link.
Resize the UIMessageWindow created by the #hover_me_button
Click a link within the UIMessageWindow and observe the console output triggered by the events.

Expected behaviour
Events triggered by HTML links should only ever fire once per click.
Screenshots
Not a screenshot but console output:
Time taken to create message window: 0.006
clicked test link at 16:05:10
clicked actually link at 16:05:10
clicked test link at 16:05:10
clicked actually link at 16:05:11

I clicked them alternatingly and it fires as expected.
With some resizing:
clicked test link at 16:06:10
clicked test link at 16:06:10
clicked test link at 16:06:10
clicked test link at 16:06:10
clicked actually link at 16:06:10
clicked test link at 16:06:17
clicked test link at 16:06:17
clicked test link at 16:06:17
clicked test link at 16:06:17
clicked test link at 16:06:17
clicked actually link at 16:06:18
clicked actually link at 16:06:18

Still clicking them alternatingly, i.e. I clicked 'test', 'actually', 'test', 'actually'.
Platform and software (please complete the following information):

OS: Arch Linux
Pygame GUI version: 0.5.7 from pypi
Pygame version: pygame 2.0.1 (SDL 2.0.14, Python 3.9.5)

Additional context
I looked through the code and at elements/ui_text_box.py in particular.
With some good old print statements in process_events() I get this:
Processing event MouseButtonDown (1025) and I have 2 link_hover_chunks:
     Chunk 'test' is link is hovered
     Chunk 'actually' is link
Processing event MouseButtonUp (1026) and I have 2 link_hover_chunks:
     Chunk 'test' is link is hovered is selected
     Chunk 'actually' is link

Processing event UserEvent (32847) and I have 2 link_hover_chunks:
     Chunk 'test' is link is hovered
     Chunk 'actually' is link
clicked test link at 15:39:33

[...]

Processing event MouseButtonDown (1025) and I have 4 link_hover_chunks:
     Chunk 'test' is link is hovered
     Chunk 'actually' is link
     Chunk 'test' is link is hovered
     Chunk 'actually' is link
Processing event MouseButtonUp (1026) and I have 4 link_hover_chunks:
     Chunk 'test' is link is hovered is selected
     Chunk 'actually' is link
     Chunk 'test' is link is hovered is selected
     Chunk 'actually' is link

Processing event UserEvent (32847) and I have 4 link_hover_chunks:
     Chunk 'test' is link is hovered
     Chunk 'actually' is link
     Chunk 'test' is link is hovered
     Chunk 'actually' is link
clicked test link at 15:40:47

Processing event UserEvent (32847) and I have 4 link_hover_chunks:
     Chunk 'test' is link is hovered
     Chunk 'actually' is link
     Chunk 'test' is link is hovered
     Chunk 'actually' is link
clicked test link at 15:40:47

(just printing out len(self.link_hover_chunks) and the list's StyledChunk items)

I saw this at line 550 of ui_text_box.py in full_redraw():
        self.link_hover_chunks = []
        self.formatted_text_block.add_chunks_to_hover_group(self.link_hover_chunks)

but at line 282 of ui_text_box.py in rebuild():
        self.formatted_text_block.add_chunks_to_hover_group(self.link_hover_chunks)

without ever clearing self.link_hover_chunks. (after a call to parse_html_into_style_data() which creates a new self.formatted_text_block = TextBlock(...))

So I think a fix would be to either put a self.link_hover_chunks = [] at line 281, or into parse_html_into_style_data() or potentially both.

Thanks for not only finding this but also looking into what caused it :) Saves me some time for sure.
I'll roll a  fix for this into the next update since it's going over the text boxes anyway.


Add clearer documentation on the format of boxes

Love the blog post, documentation, and utility of this!
Was setting it up myself, and had trouble getting results that I thought would be in the boxes when I set up the first inner list to be the bottom left coordinate and the second inner list to be the top right coordinate for the bounding box.
Maybe I am misinterpreting but when I examined the in_box method it appears as if the comparison is done using the first inner list as the bottom right, and the second as the top left.
I could be a bit misguided, so let me know if I was simply utilizing the BOXES incorrectly.

is it really bottom right and top left in that order?
it seemed to work bottom left and top right?

Here is my justification...
Suppose we have a box with the following two points:
bottom-right: 40, -115 —> box[0][0] = 40, box[0][1] = -115
top-left:  45, -120 —> box[1][0] = 45, box[1][1] = -120
a valid point in this box is  42, -118
coords[0]=42
coords[1]=-118
Let’s sub this into the conditional statement in in_box
if box[0][0] < coords[0] < box[1][0] and box[1][1] < coords[1] < box[0][1]:
>>> 40 < 42 < 45 and -120 < -118 < -115
True

This statement evaluates to true with those co-ordinates specifying the box… So in-box returns True as it should.
Conversely if we were to use bottom-left, top-right, the same box would look like:
bottom-left: 40, -120 —> box[0][0] = 40, box[0][1] = -120
top-right: 45, -115 —> box[1][0] = 45, box[1][1] = -115
Again, subbing this into the conditional:
if box[0][0] < coords[0] < box[1][0] and box[1][1] < coords[1] < box[0][1]:
We get:
>>> 40 < 42 < 45 and -115 <  -118 < -120
False

Which is false by the second part of the conditional…
So in-box returns False when it should return true if the box was defined by bottom-left, top-right.


OCM-3377 | fix: only show warning message about EOL if there is an EOL timestamp

Related issue: https://issues.redhat.com/browse/OCM-3377

/lgtm


Clarify All user operations blocked

First, I quite like the design and implementation.  Thanks!  The doc mentions

Note: if an action is blocked, it is still added to the set. This means that if a user is continually attempting actions more quickly than the allowed rate, all of their actions will be blocked until they pause or slow their requests.

Can you give an example of the effect of this?
In our case we are looking to limit outbound calls so as to not abuse a service.  There are many agents doing calls and they should be limited in aggregate to N calls / second.  Our first try using this library was for each agent to call the limiter and if no limit is available, put the request on an in-memory queue and delay timeLeft ms.  Each agent has many (e..g, 40 processing "loops") so there could be as many as 40 ratelimit attempts in flight. This sort of worked but as soon as one of the loops got ratelimited, all the others seemed to get into a synchronized delay/ratelimit cycle.
The synchronizing makes sense as the timeLeft result for a given interval will indicate the same expiry time for all callers in an interval.  That is, they will all wake up and retry their ratelimit call at about the same time.  I'm guessing that somehow the noted characteristic is coming to play and somehow the ratelimit exhaustion is carrying over into the next time interval.  Does that make sense?

It's hard to know exactly what's happening in your case, but what I mean is that every time an action is attempted, it counts as an action.  So, if the rate is 4 actions per 5 seconds, and we attempt an action every second, we could have the following sequence:
t0: Action permitted (3 remaining)
t1: Action permitted (2 remaining)
t2: Action permitted (1 remaining)
t3: Action permitted (0 remaining)
t4: Action blocked (still 0 remaining)
t5: Action blocked (still 0 remaining)
etc...

The only way to be allowed more actions is to stop attempting them. If the user waiting one second without making a request, they'd be allowed to make another action.

I think we can avoid starvation like this by by removing the "unused" key from the set when our request is rejected.  I.e.
if (tooManyInInterval || timeSinceLastRequest < minDifference) {
    redis.zrem(key, now);
    ...
    remaining = -1;
} else {
    remaining = maxInInterval - userSet.length - 1;
    result = 0;
}

This shouldn't cause problems with atomicity or race conditions.  Making this change gives me the following run sequence:
t0: Action permitted (3 remaining), timeLeft 0)
t1: Action permitted (2 remaining), timeLeft 0)
t2: Action permitted (1 remaining), timeLeft 0)
t3: Action permitted (0 remaining), timeLeft 0)
t4: Action blocked (still -1 remaining, timeLeft 977)
t5: Action permitted (0 remaining), timeLeft 0)
t6: Action permitted (0 remaining), timeLeft 0)
t7: Action permitted (0 remaining), timeLeft 0)
t8: Action permitted (0 remaining), timeLeft 0)
t9: Action blocked (still -1 remaining, timeLeft 983)
t10: Action permitted (0 remaining), timeLeft 0)
t11: Action permitted (0 remaining), timeLeft 0)

The remaining count in the output is 0 after the first exhaustion.  In my particular case the remaining count is not a huge factor but others may be using it.

FWIW, I didn't change the behavior of the remaining count, the existing code returns -1 on exhaustion.  I don't think @peterkhayes example above was from an actual run...

@nonplus I was referring to your output.  t5-t7 have "0 remaining".  That should be 3, 2, 1 respectively.  Otherwise that value (remaining) is not reporting the right value.

Oh, I see.  No, it's actually reporting the correct values.

t0-t3 drained the original bucket.
At t4, activity got blocked because bucket was empty
By t5, one more item was added into the bucked and then was drained by activity (hence 0 remaining)
By t6, one more item was added into the bucked and then was drained by activity (hence 0 remaining)
...
At t9, activity got blocked because bucket was still empty

Sorry I am a little bit confused. Because I did run into the same issue. After I found and read this issue, it sounded like it should work now. However I get the following result with the current version (0.1.5):
t0 -> OK       (timeLeft: 0 | actionsLeft: 0)
t1 -> BLOCK    (timeLeft: 3995 | actionsLeft: -1)
t2 -> BLOCK    (timeLeft: 2994 | actionsLeft: -2)
t3 -> BLOCK    (timeLeft: 1993 | actionsLeft: -3)
t4 -> BLOCK    (timeLeft: 993 | actionsLeft: -4)
t5 -> BLOCK    (timeLeft: 996 | actionsLeft: -4)
t6 -> BLOCK    (timeLeft: 996 | actionsLeft: -4)
t7 -> BLOCK    (timeLeft: 996 | actionsLeft: -4)
t8 -> BLOCK    (timeLeft: 994 | actionsLeft: -4)
t9 -> BLOCK    (timeLeft: 993 | actionsLeft: -4)

Test code:
var RateLimiter = require("rolling-rate-limiter");
var Redis = require("redis");
var redisClient = Redis.createClient();

var limiter = RateLimiter({
  redis: redisClient,
  interval: 5000,
  maxInInterval: 1
});

var count = 0;
var check = function() {
  limiter('test', function(err, timeLeft, actionsLeft) {
    var result = 'UNKNOWN ';
    if (err) {
      result = 'ERROR   ';
    } else if (timeLeft) {
      result = 'BLOCK   ';
    } else {
      result = 'OK      ';
    }
    console.log('t' + (count++) + ' -> ' + result + ' (timeLeft: ' + timeLeft + ' | actionsLeft: ' + actionsLeft + ')');
  });
};

var foo = setInterval(check, 1000);

@nonplus any input from your side? Because it seems like you made the change you proposed which I though would result in that issue to be fixed? At least your example output looked good.

@janober FWIW I created a lib based on this one, because this has some design flaws, one of which I think you are facing here:timeLeft is not correct, demonstrated by this simple example: in case of a 10 minute interval, 1 attempt / 10 minutes cap, and 10 actual attempts equally distributed in this interval, after inserting e.g. the last one will return timeLeft roughly around ~1 minute, however clearly you need to wait 10 minutes. Correctly implementing this requires a linear scan with the current data structure, which can make it practically unusable under certain loads. I resolved this with sampling. The reason I didn't do a PR is that  I needed other features anyways that required a complete rewrite.

There is a new version of this library out. You can see the release notes here. I think it fixes some of these issues mentioned here.
If this behavior is important to you, you can use wouldLimit to first check if an action would be blocked. If it would not be, then you can call limit and ignore the result.


State changes tab for transactions

It would be quite helpful to have a tab of state changes for a transaction, similar to Etherscan. For example:
https://etherscan.io/tx/0xeb5e0dc7eeb4226518e53bc536c83ecd1d6f20b66735ea2adf04e7d50ba337f9#statechange

If I understand correctly, this would probably require a new API but not a new index, since its 'just' a transaction trace presented in a different way.

sure, I guess so.

Definitely agree. What would make this even better than Etherscan is the ability to trace the state changes to the calls that produced them. For example, it might not be clear what storage slot 0xabc123def456 in USDT is, but if right below we have an expandable list of the call(s) that wrote to that state, such as transfer(my address, 100 tokens) for the same address, it becomes clear that the storage slot 0xabc123def456 is the storage slot for your USDT balance.

If we postpone my idea of associating the state changes with the calls that produce them, a straightforward implementation might simply be a more graphical display of trace_replayTransaction using stateDiff as the type of trace.

Ah, thanks for educating me about trace_replayTransaction - Yeah that looks perfect (and presumably exactly what Etherscan are using)

I made a prototype that needs some styling help. I will make a draft PR once I clean up the code a bit.

If we had access to the storageLayout output of the compiled contract, we could probably display nice names for some of the storage locations. I guess the only way to get that output though would be to re-compile the contracts locally, which might be somewhat overkill?

On the other hand, compiling contracts locally would make the contract source code a user sees in Otterscan properly trustless - Right now we're trusting Sourcify not to lie about the source code of a given contract, unless I've missed something?

@JamesHinshelwood Both of your observations are correct. Sourcify's vision is for edge verification to become a reality. For Otterscan, that would mean recompiling and verifying contracts locally. Depending on the user's setup, this could be done from the back end and cached, e.g. if the user is the operator of the Otterscan instance.
I think we could just use lib-sourcify to handle recompilation and verification, so it might be possible to handle storage layout requests.

Thanks for clarifying, much appreciated.


JOSS Review - Specific 3 - Correlation plot

Specific point 3 from JOSS Review:
Correlation plot (data summary) could possibly benefit from being generated with ggcorrplot instead of corrplot, allowing for increased flexibility and visual coherence. (altough the aesthetic gain is indeed relative).

As suggested, I have added another tab for ggcorplot. Hope it can increase our visual coherence.
The original corplot was not deleted because it can still be a useful visualization.
By the way, our design logic is to allow users to easily implement EFA without additional worries; thus, minor options (i.e., color, label, order...etc) are set with reasonable defaults. Users do not need to worry about lots of arguments in the analyses :))

Has been addressed in the latest (1.0.0) release.


Add error boundary around localStorage access

Since browsers may throw an exception upon access of localStorage in incognito tabs (or if security policy is set to deny localStorage access) simply checking the typeof of localStorage may throw an error, breaking this package.
As @tomayac said on twitter adding a try-catch around the initial check should be good enough to prevent errors. Changing security policies in the browser requires a refresh of the tab, thus checking once should be plenty.

CI seems to have failed due to there not being a test for my code. I'm unsure how to test it.

The fix was released in 0.6.2.


GCP: Allow for custom VPC subnet

We need our cluster hosts to be in a different CIDR range than the default so we use a custom subnet.  This allows others to do the same with a simple addition to their config.yaml

Merged as #530


get client working

Current dependencies on/for this PR:

main

PR #28   👈

This stack of pull requests is managed by Graphite.

Merge activity

Jan 31, 1:45 PM EST America/New_York: @willseltzer merged this pull request with Graphite.


Enhance To-Dos Feature

The issues in this Epic have been all solved. This Epic with be closed as completed.


5-Day Forecast

5-Day Forecast
User Story
AS A traveler
I WANT to see the weather outlook for multiple cities
SO THAT I can plan a trip accordingly
Acceptance Criteria
GIVEN a weather dashboard with form inputs
WHEN I view future weather conditions for that city
THEN I am presented with a 5-day forecast that displays the date, an icon representation of weather conditions, the temperature, the wind speed, and the humidity

This has been completed


Tags Tab UI

Hey @shamikakumar, thanks for your efforts with this one! We plan on releasing this feature as part of the next release, when do you think you'll have the time to complete it?

hey @itaiad200 I'm facing issues trying to run the project locally, could you help me out

hey @itaiad200 I'm facing issues trying to run the project locally, could you help me out

Sure @shamikakumar , what seems to be the problem?
Also - sent you a Slack message if you feel IM is more suitable.


How to limit remove on spill to certain area

Custom
I want to limit Remove On Spill to spilling (and removing the item) over a certain area of the screen (usually a
 with a trashcan icon).
Related: is it possible inside the onSpill function to cancel the spill and the item deletion?
The main reason for this request is that when I try to move an item below the bottom one sometimes I go too far below and the item is deleted instead of being moved.
Reproduction
I use knockout-sortable, but I think it makes no difference in the options for Sortable.

			Move

In the deleteListItem routine adding preventDefault() or returning false does not stop cancelling the item:
		deleteListItem(event: any): boolean {
			console.log(event);
			event.preventDefault();
			return false;
		}

Thanks for clarifying!
mario

Are you using the onspill plugin to revert the dropped item back to the list?

Related: is it possible inside the onSpill function to cancel the spill and the item deletion?

I'm not sure about cancelling the spill, but you could try just deleting the item in the onSpill function.

Right now my application is in a comatose state due to problems with RequireJS. As soon as it revives I'll try.

I'm back. At last the application is joyously running.
Unfortunately if I remove removeOnSpill or set it to false the onSpill function is not called at all.
Also with removeOnSpill set to true and the onSpill function doing nothing, the item disappears from the list even if it is not deleted from the internal list. Just a page refresh makes it reappears.
Now I will try to look at the sources for inspiration, otherwise I will try to skip this mechanism altogether and use drag and drop support. Sigh.

I'm back. At last the application is joyously running.
Unfortunately if I remove removeOnSpill or set it to false the onSpill function is not called at all.
Also with removeOnSpill set to true and the onSpill function doing nothing, the item disappears from the list even if it is not deleted from the internal list. Just a page refresh makes it reappears.
Now I will try to look at the sources for inspiration, otherwise I will try to skip this mechanism altogether and use drag and drop support. Sigh.

@crystalfp You can just write custom code in the drop event to handle this, but to do it with removeOnSpill plugin, you can modify this line, remove the toSortable && !toSortable.el.contains(target) and replace it with a check if your trashcan div .contains(target).

@crystalfp You can just write custom code in the drop event to handle this, but to do it with removeOnSpill plugin, you can modify this line, remove the toSortable && !toSortable.el.contains(target) and replace it with a check if your trashcan div .contains(target).

Thanks @owen-m1 !
I will try it soon.
In the meantime I removed removeOnSpill and implemented drag and drop. I already have drag-and-drop to take the entry to another window, so no big issue.
Thanks for the library!
mario

Thanks @owen-m1 !
I will try it soon.
In the meantime I removed removeOnSpill and implemented drag and drop. I already have drag-and-drop to take the entry to another window, so no big issue.
Thanks for the library!
mario


Support --select-1 and --exit-0 from fzf

Lazy option added in v0.0.15
https://pzp.readthedocs.io/en/latest/api/module/#pzp.pzp

Awesome, thanks.

Just a follow-up question: is there a way to tell if pzp didn't find anything (either through lazy mode or the user pressed  on an empty list) or the user aborted? Looking through the docs, it could probably be done through pzp.exceptions somehow, but I'm not sure.

yes, you can change the action binded to the enter key like the following example:
try:
    item = pzp(
        candidates=...
        keys_binding={"custom-accept": ["enter"]},
    )
    print(item)
except CustomAction as action:
    print(f"action: {action.action} selected item: {action.selected_item}")

I tried except AbortAction, but it also did not work.

Oh, pzp doesn't expose that (probably for the best in most cases). Hmmm... not sure what the best way to support that should be.
However, lazy mode doesn't work completely like expected --- even if there's no selections that match input, it still shows a finder, instead of just exiting.

For the lazy mode, I tested the following cases and the finder is not shown.
$ python3 -c 'from pzp import pzp; print(pzp([1], lazy=True))'
1
$ python3 -c 'from pzp import pzp; print(pzp([], lazy=True))'
None

I mean that something like pzp(['foo','bar','baz'],input='btm',lazy=True') should raise some exception saying that nothing was found.

Ok, fixed in the new version v0.0.16. Now your example with input work as expected.
I added an example file examples/number_selector.py exposing the exceptions.

This still doesn't do what I expected --- if no selection is found, it just returns None.

./examples/number_selector.sh --input x --lazy
action: lazy-accept selected item: None

It raises an exception.

Oh, you have to deal with finder directly. Is there a way to expose this to the pzp function itself?

Option handle_actions added. The following example raises exceptions:
pzp(["a", "b", "c"], input="d", lazy=True, handle_actions=None)

Awesome --- it works perfectly!


Health checks for deployment

Hi,
is the deployment waiting for a green health status of the new tasks before it stops the old ones? We saw some behavior that suggested the contrary.
Cheers,
Richard

Can be related to #1082

@neelance according to the code it waits for health checks when they are defined. But I believe to have seen cases where a deployment step ends early.

Is this still an issue with 0.8.x?

@ConnorDoyle I believe you still can see it in 0.8.0, but 0.8.1 should be good, #1082 is probably related.
@neelance you can try 0.8.1-RC1, it should fix the issue.

Looking at #1082 and the deployment code, I don't believe that #1082 also fixed this problem. The deployment actors only look at the AppDefinition whether there are health checks defined. If so, it's not enough that a task is running, but the actor waits for its health update.

I propose to leave this one open and watch the issue. Though I cannot remember having seen this recently.

What I've seen as part of #1082: deployment finishes when health checks for new tasks are green (good), but in api and ui new tasks have unknown health check state (bad). This can be a different issue, but from UI and API it looks the same.

This makes sense. The api code does not see the health check actor with the wrong key, and hence it cannot query it for the task health state. So maybe the deployment were correct all the time, only the UI was wrong.

@drexin I think this issue can be closed then.


[pigeon] Move annotations to a seperate file from pigeon_lib

Use case
The library dependency would be much more lightweight if the annotations were moved to a different file.
Proposal
Create new file with only the annotation classes.

How does this manifest?  Users always use import 'package:pigeon/pigeon.dart';  Moving the annotations to another file wouldn't change that.  Now that pigeon is being migrated to the dart analyzer, imports aren't even followed.  So, the imports are just used for things like autocomplete.

I think that's the point? You wouldn't use import 'package:pigeon/pigeon.dart'; and instead import the annotations for autocomplete only.

I don't think there is any performance gain by doing that.  pigeon/pigeon.dart is already curated to only surface things that should be of interest to users of pigeon.  Unless we can pinpoint an efficiency gain I think it's better to just keep the conventional wisdom to be import 'package:pigeon/pigeon.dart';.

fwiw, when I originally created this, I was mostly concerned about bazel visibility and not performance since we don't want to publicly expose 'package:pigeon/pigeon.dart'

Why wouldn't you want to publicly expose that?  It is intentionally groomed for users of pigeon, not for internal details.  I could clean it out a bit if there is some extra symbols floating around.


Internal testing: v1

Please add here any issue found regarding functionality, or if you have feature requests even typos or text changes you deem important!
V1 Banner features:
configurable background, text color & font
options for where to display (top | bottom) of host page, and option to animate
banner script also injects a monetization link with defined wallet address, i order to ensure that there is a link to test against to determine if user has WM extension or not
banner is only displayed if no monetization support detected
get extension link is auto generated based on browser and is pointing to the extensions page, in a non supported browser the link points to the webmonetization webpage
visitor has the option to close the banner, this is remembered for that session
V1 Widget features:
configurable background, text color & font
interledger pay is embeded as a payment solution
styles for ILPay are passed as parameters to make sure the ILPay matches the widget defined look

Small comments. The initial colour for the banner customization is not the best choice (pink) against the dark blue backdrop. Can't we show it defaulting to turquoise so that it's just a more visually appealing first impression?
And also in terms of the preset list of colours available for the widget, I'd only include colours in that preset list that compliment the logo. I'd argue orange for instance is not one of these colours. The turquoise causes the logo to all but disappear.
I'd love to get feedback from Madalina for instance.
And finally, I'm not seeing a button for the widget (see screenshot in case this is just a me thing). So there are customization options but I can't see how they look.

Can we add a feature for text size? Maybe my eyes aren't the best (which they're not), but I find the Cookie font option illegible at that font size.

In the WordPress plugin previously, we had an option for a margin around the banner and widget as well to customize not only the general location but added a bit more specificity. Maybe it's overkill? But adding it here just so that it's on your radar. The way people embed this in their sites, they'd probably be able to add the correct styling too, since we're assuming some technical skill, which does make this different from the WordPress case.

@JoblersTune if you click the circle w the logo in it (the trigger) it will display the entire widget, and you can see the effect of your chosen optio

ns

In the WordPress plugin previously, we had an option for a margin around the banner and widget as well to customize not only the general location but added a bit more specificity. Maybe it's overkill? But adding it here just so that it's on your radar. The way people embed this in their sites, they'd probably be able to add the correct styling too, since we're assuming some technical skill, which does make this different from the WordPress case.

In principle we assume user can copy-paste, so I'm quite open to adding additional settings into WM Tools editor to help the users who do not have any technical skills

Error message colouring also needs consideration

Could we expand the widget automatically when the user clicks Btn background?

Is there a way to see the button as it would appear in an active state? It looks disabled to me here.

For consistency, for the widget, I'd say

either removing the rounding feature for the button
Or add it for the input fields as well

Why customize one but not the other?

Banner should have a max width, and probably a larger font size:

I also think we need clearer wording for the info sections

Create banner -> "When a Web Monetization extension isn't detected, a banner will inform users that this site is Web Monetized. It will automatically include a browser-specific link to the extension. Messaging and styling are fully customizable to align with your site's look and feel."
Create widget -> "This widget enables one-time payments for your website. It appears in the lower right corner, visible to all visitors regardless of their Web Monetization status. The title, text, and styling of the displayed message are customizable." Also I don't understand the part where it currently says "While preset values are set..." What presets?
Wallet address -> "Your wallet address is required to save this component configuration, link it to the original creator, and verify ownership for future updates. It also embeds the wallet address into your web page automatically, enabling Web Monetization on your behalf."

Questions

What happens in cases where the extension is not installed - will the banner still display - I'm assuming yes
What happens if the extension is there but inactive - I'm assuming the banner will still display. If the extension is present but inactive, wouldn't you still like your users to know that your site uses web monetization? E.g. what if they have an expired grant they haven't renewed. Or they ran out of funds in that account. Or they changed wallet addresses. Shouldn't we prompt based on inactivity to remind them to solve these issues? Something along the lines of "We are a web monetized site, if you wish to support us please enable your web monetization browser extension". This only applies if we can detect an inactive extension.
Can we detect the presence of the extension if it's inactive?
For the widget - does it only show when an active extension is detected? Or always. I'm assuming always. Since someone may have a wallet address without having the extension. Not everyone likes extensions.
How is wallet address ownership verified? Or can I just make this for anyone's wallet address? Because that feels like an issue.

The current info wording only lists the inactive state but then the banner includes a link to the extension.
Suggestions

It would be nice for the banner preview to have a dismiss button on it so that you don't need to explain it is dismiss-able, it is visually obvious.

The site should probably also link back to the Web Monetization docs as well.

We need consistent wording so I think this should say "wallet address" not "payment pointer"

I would find this wording annoying if I already had the extension "Future of support
Experience the new way to support our content. Activate Web Monetization in your browser and support our work as you browse. Every visit helps us keep creating the content you love! You can also support us by a one time donation using our solution below!"
Before we would have a monetized vs non-monetized messaging. So that way site owners can say thank rather than explaining things.
Also think we can improve on "You can also support us by a one time donation using our solution below!" Rather just say "You can also support us by a one time donation below!"

For the banner wording: What about "Want to support me?" "You can contribute with a one-time donation or pay automatically while you engage through the Web Monetization browser extension"
I think we also need a link here that explains to people what Web Monetization is and how they can go about getting a wallet address...

the text is fully customizable by the site owner using the tools configurator, or are you suggesting we update the default text ?

For the banner wording: What about "Want to support me?" "You can contribute with a one-time donation or pay automatically while you engage through the Web Monetization browser extension"
I think we also need a link here that explains to people what Web Monetization is and how they can go about getting a wallet address...

the text is fully customizable by the site owner using the tools configurator, or are you suggesting we update the default text ?

Yes, I'm suggestion we update the default text.

Small comments:

we should change the favicon of the site (currently remix default)
the "title" and "text" input sections should be together so its clear when adjusting the text
nit: feels like some of the dropdowns don't necessarily need the ability to search/type for results


include config and logging in final report

include configs and logs in the final report
This is useful to track, for instance, which functions were discarded from the analysis

Somewhat related: https://github.com/ossf/fuzz-introspector/issues/468 We need improved metadata in the UI which can be used to trace/track/compare reports.

We need improved metadata in the UI which can be used to trace/track/compare reports

Agreed. I think configs should be included in reports because they should be more or less the same everywhere but links to logs would depend on where reports were built. Usually it's OSS-Fuzz but FI can be used outside of OSS-Fuzz too and I think it would be better if optional links like that could be configurable by passing them explicitly somewhere or something like that.

FWIW I think that even though FI reports are the main way to interact with FI it could (in theory) be used to automate issues like https://github.com/google/oss-fuzz/issues/7190 (where two snapshots of the same project should be compared). That particular issue could have been found by comparing coverage collected at runtime but combined with the static analysis it would be much more useful in general because it would cover scenarios where coverage is seemingly the same (or maybe even a bit better) but it can't keep up with new code that is suddenly reachable but isn't covered at all. I'm just spitballing but all in all I'm not sure FI should limit itself to reports on OSS-Fuzz (though I understand that it's the main use case) :-)