Distribute binaries as NPM package

I would be nice if you could distribute the release binaries as an NPM package. So people could simply run npm install git-trim/yarn add git-trim to get up and running instantly.
It would allow a team to easily install git-trim, integrate it with a typicode/husky git hook, commit that logic to git, and distribute that logic to the rest of the teams build system. No worries about where to download the release, having to keep the binary up to date by manually checking and notifying team members, adding logic in the hook for a missing binary, etc...

I'm not familiar to NPM. Would you review the PR?

Wow quick work 🎉
I'm not actually familiar with packing npm packages myself, just using them. At first pass looking at the code changes nothing stands out to me. So I just went though and tested trying to install/use it like I normally would. I'm running win10 btw.

made a new dir /git-trim-npm-test/ to work in
ran yarn init with all the default info to generate a package.json
Then I ran yarn add https://github.com/foriequal0/git-trim#npm to install directly from your feature branch.
I can confirm at this point./node_modules/.bin/ does contain a git-trim & get-trim.cmd like I would generally expect to find.
I added this script to the package.json

  "scripts": {
    "test-get-trim": "git-trim"
  },

I ran npm run test-get-trim
I got this error

It'll work by now. tgz file was missing for Windows. I've uploaded it and tested with npm since I don't have yarn.

Yup I just tested and the git-trim binary is actually running now. 🎊
Although this might be a bit outside the scope of this specific issue, but when I run the npm script "test-get-trim": "git-trim --bases master" it complains about<EMAIL_ADDRESS>Permission denied (publickey). But I definitely have my github ssh key loaded in my pageant auth agent.

I haven't used pageant on Windows. I found some possible solutions on SO https://stackoverflow.com/a/40804226/3176773
Can you try again with a environment variable GIT_SSH=<path to plink>?

Awesome, that works! I was able to simply pass it GIT_SSH="plink.exe" to grab it on the path. My final test script looks like:
"scripts": {
	"trim-merged-branches": "run-script-os",
	"trim-merged-branches:default": "git-trim --no-confirm -bp master",
	"trim-merged-branches:windows": "cross-env GIT_SSH=\"plink.exe\" git-trim --no-confirm -bp master"
},
"husky": {
	"hooks": {
		"post-merge": "npm run trim-merged-branches"
	}
},

I ended up using cross-env since, depending on the version, windows doesn't really allow passing in env vars like that. And run-script-os to run that windows specific cmd.

Here's a screenshot showing it working with context in my real repo and automatically triggering during a pull.

Thanks for sharing working screenshot!
--no-update prevents git-trim to invoke git fetch --all --prune. Since you're using it on post-merge hook, it'll prevent you from fetching twice.
However, git-trim might see deleted-on-github-but-not-pruned-on-local-yet remote tracking branches. It'll affect to the classification results. I've tried to make it conservative on the branch classification (not to lose your changes), but I'm not 100% sure.
I'm using git config --global fetch.prune true to make sure git pull or git fetch always prune branches.

@Spunkie Sorry for saying this, but I'm considering to retract this decision.
Maintaining NPM packaging seems small but I would not say it doesn't add any burdens to me as an individual developer with a full-time job to maintain an unfamiliar public surfaces.
I think it would be better to run your own postinstall script and small script for trim-merged-branches. It'll also reduce your run-script-os, cross-env dependencies.
I've already unified release namings and compression formats. (git-trim-(linux|mac|win)-${version}.tgz)
Here's scripts for you.
// git-trim.js
const process = require("process");

const axios = require("axios");
const { Binary } = require("binary-install");

const platformMapping = {
    "linux": "linux",
    "darwin": "mac",
    "win32": "win",
};

const platform = platformMapping[process.platform];
console.assert(
    platform !== undefined && process.arch === "x64",
    "git-trim is unsupported on this platform"
);

async function getBinary() {
    for (let page = 1; ; page++) {
        const releases = await axios.get(`https://api.github.com/repos/foriequal0/git-trim/releases?page=${page}`, {
            responseType: "json",
        });

        if (releases.data.length === 0) throw new Error("git-trim release not found");

        for (const release of releases.data) {
            for (const asset of release.assets) {
                if (asset.name.startsWith(`git-trim-${platform}-`) && asset.name.endsWith(".tgz")) {
                    const url = asset.browser_download_url;
                    return new Binary(url, {
                        name: "git-trim",
                    });
                }
            }
        }
    }
}

module.exports = {
    install: () => getBinary().then(b => b.install()),
    run: () => getBinary().then(b => b.run()),
};

// postinstall.js
require("./git-trim").install();

// trim-merged-branches.js
const process = require("process");
if (process.platform == "win32") {
    process.env.GIT_SSH="plink.exe"
}
require("./git-trim").run();

{
    "scripts": {
        "postinstall": "node postinstall.js"
    },
    "husky": {
        "hooks": {
            "post-merge": "node trim-merged-branches.js --no-confirm -bp master"
        }
    },
}


Upgrade to VueJS v3

Our admin app has recently been upgraded by @drieJAC to use Vue 3 instead of Vue 2.
Lessons learned and some useful pointers have been documented here:
https://github.com/jac-uk/admin/blob/main/VUE3_UPGRADE.md
Please upgrade our Apply app to use Vue 3 instead of Vue 2.
Note:

Refer to the upgrade notes (and source code) in Admin for any help
@tomlovesgithub will be upgrading Assessments app and @halcyonJAC will be upgrading Apply so please do talk to each other and co-ordinate efforts if you like
@drieJAC is also available to help answer any questions or advise on best path forwards

Following UT issues have been identified with:

Character Checks
Applications being unlocked

Please see the UT document for full details:
https://docs.google.com/document/d/1nCZYzDLwWXTaU9BGp8Dxp05VkPfFbMZk/edit

@HalcyonJAC to set up test exercise and update how to test instructions for users.

@HalcyonJAC Can you look into these issues pls? Copying @warrensearle for info.
When I create an account and hit ‘Create account’ the button turns yellow, but the page does not progress. When I click again, I am signed in and the account has been created.
When applying for JAC00666 and go to the welsh posts section, nothing is displayed as below. If this is because welsh posts are not an option, why does this section display at all?
When applying for new vacancies for the first time, sections are marked as Done and Review Application is greyed out, but deadline has not passed, e.g. JAC00636 District Judge COPY 1
Wasn’t able to complete character consent check - all completed already


Add proximity sensor example

This requires an updated cheriot-rtos that has https://github.com/lowRISC/cheriot-rtos/pull/3/files and https://github.com/lowRISC/cheriot-rtos/pull/2 merged.
So DO NOT MERGE yet. Once those changes are in we can update the submodule as part of this PR.

Deleting and recreating to hopefully unwedge whatever bit of github has fallen over


sphinx-rtd-theme not found anymore

Currently we cannot build our ReadTheDocs documentation anymore.
I do not know why, but for some reason the sphinx-rtd-theme is not found any longer.
@apdavison or @olinux I need help with this (I do not understand why it suddenly does not work anymore).

@olinux thank you :)
(issue solved by adding the readthedocs requirements.txt to the main branch and including the pointer to this file into the yaml)


tickets/DM-34536

Add retag functionality and add push to GHCR by default, for rate-limit checking and speed of pull for retag.

UGH.  This should go in main not prod.


Reset does nothing

How to test this task? @nesadrian

Works good.

Tested in qa-graph-poc. Reset page in To be page works as expected.


Live wallpaper

It won't show the live wallpaper you get the option to set it when you press  start but when you go to set it black instead of the gif l,animated or video.

What version of android do you have?

What version of android do you have?

I have android 13

Fixed in version 3.0.11


question regarding multiple values - channel

is it possible to send multiple values with crossbeam-channel to multi-consumers? If so, are the values each split between consumers?
the mpsc can do this, obviously with 1 producer/consumer.
ref: example here

I guess you are talking about broadcast channel: https://users.rust-lang.org/t/using-crossbeam-channels-as-broadcast-channels/31677

@taiki-e not really what I wanted, as the broadcast will fan out the value to all consumers, each receiving the same value. I want to achieve something similar to mqtt protocol, where the values are sent and then distribute to each consumer.


tcp and rtu modules cause catkin_make install to fail

It should be a simple fix, but catkin_make install fails on these two packages.

The cause of the failure seems to be the same as reported by @dirk-thomas in #10: the requires field in setup.py.
Removing the field 'solves' the issue with catkin_make install (and most likely also the doc job problem). However, I assume the requires field was put in for a reason (namely: to express a dependency on the listed modules). For ROS at least, that dependency is already expressed in the package manifest using the run_depend and build_depend elements.
If we want to keep this, and pypi/pymodbus is what the python-pymodbus entry in requires is refering to, then simply removing the python- prefix also seems to work (I'm guessing the package is called python-pymodbus on Ubuntu).


Does not work. Doesn't recognize QR code

It's weird, may be missing some config but this library just does not work. barcodes always show empty array. I've tried multiple times.
My config:
"react-native": "0.71.0",
 "react-native-reanimated": "^2.14.4",
"react-native-vision-camera": "^2.15.4",
"vision-camera-code-scanner": "^0.2.0",

babel.config.js
  [
      'react-native-reanimated/plugin',
      {
        globals: ['__scanCodes'],
      },
    ],

I've tried multiple times

Show exactly how

@alexrififi I tried the setup following the docs, camera and everything works but NOTHING happens when i bring barcode/qrcode in front of the camera

same issue here, I also followed the doc and set up all, I am sure it detects the barcode but barcodes/detected barcodes getting an empty array / undefined simultaneously,

I'm also seeing the same issue.

Switching to using the worklet hook fixed the issue.
import React, { useEffect, useState } from "react"
import { Image, View } from "react-native"
import { useQRData } from "app/hooks/useQRAddress"
import { Camera, useCameraDevices, useFrameProcessor } from "react-native-vision-camera"
import { useNavigation } from "app/navigation/schema"
import { scanBarcodes, BarcodeFormat, Barcode } from "vision-camera-code-scanner"
import { runOnJS } from "react-native-reanimated"

export const QRScanner: React.FC = () => {
  const navigation = useNavigation()
  const { setQRData } = useQRData()
  const [hasPermission, setHasPermission] = React.useState(false)
  const devices = useCameraDevices()
  const device = devices.back
  const [barcodes, setBarcodes] = useState<Barcode[]>([])

  const frameProcessor = useFrameProcessor(frame => {
    "worklet"
    const detectedBarcodes = scanBarcodes(frame, [BarcodeFormat.QR_CODE])
    runOnJS(setBarcodes)(detectedBarcodes)
  }, [])

  const requestPermissions = async () => {
    const status = await Camera.requestCameraPermission()
    setHasPermission(status === "authorized")
  }

  useEffect(() => {
    requestPermissions()
  }, [])

  useEffect(() => {
    if (barcodes.length > 0) {
      setQRData(barcodes[0].displayValue)
      navigation.goBack()
    }
  }, [barcodes, navigation, setQRData])

  return (
    <View style={{ flex: 1 }}>
      {device !== null && hasPermission && (
        <>
          <Camera
            device={device}
            isActive={true}
            frameProcessor={frameProcessor}
            frameProcessorFps={5}
            style={{ position: "absolute", top: 0, left: 0, right: 0, bottom: 0 }}
          />
          <Image
            source={require("../../assets/images/overlay.png")}
            style={{ height: "100%", width: "100%", position: "absolute", top: 0, zIndex: 100 }}
          />
        </>
      )}
    </View>
  )
}

this works. Thanks @kierangillen


add extra notes in @Lenses documentation and Lens page

https://github.com/optics-dev/Monocle/issues/900
I hope You like it.
I've checked this hyperlink to "Getting started" section by inspecting "production" page and editing other link. I couldn't generate the sites locally, but I'm sure that my link will work as well.

It looks great, thanks @bwiercinski


Gutter indicators not working on the server end

Type: Bug
When I edit the code locally, the gutter indicators show up fine, but when I connect to ssh server, they don't. This problem suddenly appeared in the last couple of days. This problem suddenly appeared in the past two days, I used stable release vscode and it works again.  There has been no problem with vscode insiders before. Is it an update error?
VS Code version: Code - Insiders 1.90.0-insider (Universal) (e82e806f172f30aecb0e6bb04c01f37780c16f22, 2024-05-24T05:50:10.302Z)
OS version: Darwin arm64 23.5.0
Modes:
Remote OS version: Linux x64 5.15.0-107-generic

System Info

Item
Value

CPUs
Apple M3 Pro (12 x 2400)

GPU Status
2d_canvas: enabledcanvas_oop_rasterization: enabled_ondirect_rendering_display_compositor: disabled_off_okgpu_compositing: enabledmultiple_raster_threads: enabled_onopengl: enabled_onrasterization: enabledraw_draw: disabled_off_okskia_graphite: disabled_offvideo_decode: enabledvideo_encode: enabledwebgl: enabledwebgl2: enabledwebgpu: enabled

Load (avg)
2, 3, 3

Memory (System)
18.00GB (0.09GB free)

Process Argv

Screen Reader
yes

VM
0%

Item
Value

Remote
SSH: EIT_local

OS
Linux x64 5.15.0-107-generic

CPUs
Intel(R) Core(TM) i9-10980XE CPU @ 3.00GHz (36 x 4083)

Memory (System)
125.47GB (107.11GB free)

VM
0%

Extensions (7)

Extension
Author (truncated)
Version

codespaces
Git
1.16.22

remote-ssh
ms-
0.110.1

remote-ssh-edit
ms-
0.86.0

remote-explorer
ms-
0.4.3

debugpy
ms-
2024.6.0

python
ms-
2024.6.0

vscode-pylance
ms-
2024.5.1

A/B Experiments
vsliv368:30146709
vspor879:30202332
vspor708:30202333
vspor363:30204092
vscod805:30301674
vsaa593:30376534
py29gd2263:31024238
c4g48928:30535728
962ge761:30841072
pythongtdpath:30726887
welcomedialog:30812478
pythonidxpt:30768918
pythonnoceb:30776497
asynctok:30898717
dsvsc013:30777762
dsvsc014:30777825
dsvsc015:30821418
pythontestfixt:30866404
pythonregdiag2:30926734
pythonmypyd1:30859725
pythoncet0:30859736
2e7ec940:31000449
pythontbext0:30879054
accentitlementst:30870582
dsvsc016:30879898
dsvsc017:30880771
dsvsc018:30880772
cppperfnew:30980852
pythonait:30973460
showvideot:31016890
chatpanelt:31014475
bdiig495:31013172
a69g1124:31018687
dvdeprecation:31040973
pythonprt:31036556
dwnewjupyter:31046869
impr_priority:31057980
fa862199:31048878

+1 same issue.  Connecting via SSH, running on Linux, using Insiders version 1.90.0-1716531279, however it's been this way for the past 8 versions or so (I grab the latest insiders version every couple days).  Really miss those gutter indicators.

Thanks for filing the issue! Do you mind sharing a screenshot for further clarification?

Absolutely, here's a screenshot when I work locally on some code, and it properly shows my additions, changes and deletes on the left and right side of the editor:

And then here's the same code on a remote SSH connection (which up until a couple weeks ago used to show the same git changes on the left and right side of the editor):

I haven't made any changes to git on either machine, and when connected to the remote SSH server, if I go to the "Source Control" area, that still works properly and opens a diff of the files and shows additions, changes and deletes properly.
A number of my colleagues, two of which are using the Windows version of VS Code Insiders and doing a remote SSH connection to different linux servers have also stated they are having the same problem and it started for them a couple weeks ago too.

I also encountered this problem before, which was solved at that time, but recently I found that this problem has appeared again, and it doesn't work to set it up through the previous method. #147352


Can't find log files

Hi!
I trained the model using the following command:
CUDA_VISIBLE_DEVICES=0 python -u codes/run.py --do_train --cuda --do_valid --do_test --data_path data/FB15k-237 --model RotatE -n 256 -b 1024 -d 1000 -g 24.0 -a 1.0 -adv -lr 0.0001 --max_steps 150000 **-save models/RotatE_FB15k-237** --test_batch_size 16 -de --cuda

and tested it using:
time CUDA_VISIBLE_DEVICES=1 python -u codes/run.py --do_test -init models/RotatE_FB15k-237/ --cuda

I am not able to find the log files in  models/RotatE_FB15k-237/ folder. I am unsure what went wrong. Please help.

Hi Prachi,
Can you find the model checkpoint in models/RotatE_FB15k-237 directory before testing?

Yes, there is one.

Hi Prachi,
I have no idea. Could you please try:
CUDA_VISIBLE_DEVICES=1 python -u codes/run.py --do_test -init models/RotatE_FB15k-237/ --cuda
without time again?
If it doesn't work, you can upload your checkpoint and I'll try to figure out the problem.


Replace Bass with open source alternative

Great work on Captura but not happy about using bass library for audio capture as it's a commercial library. I suggest replacing it with cscore or naudio both are open source .net libraries.

I had tried using NAudio before but had problem with mixing multiple audio streams which BASS does really well. I'll give it a try again and let you know.

@sleman I've implemented NAudio support as a fallback when BASS is not present.
Here's the dev build to test: https://ci.appveyor.com/api/buildjobs/lji0qxlnat9gk69a/artifacts/Captura-Portable.zip
Removing bass.dll or bassmix.dll will cause NAudio to be used.
BASS will be kept as the default library till NAudio support is tried and tested.
When using NAudio, changing sources during recording is not supported.
Also, the audio device must support WASAPI Shared mode in 32-bit floating-point, 44100 Hz, Stereo format.

Tested dev build but it records static when I remove bass dll files and using Naudio.
audio.zip

Does audio-only recording work for you?
I'll try to resolve this ASAP.

Also, try using the Record into separate files option and let me know if it works.

Sounds like it plays back much faster and much higher pitch.
2018-11-20-09-41-32.0.wav.zip

Tested with NAudio Sample project: NAudioWpfDemo with default settings and recording was fine:

Ok. It seems the problem is with differing Sample Rate. I suppose the supported sample rate for your device is 16k.
I had assumed 44.1k as a standard format for Shared mode recording.
I'll take a look at the sample.

Added sample rate conversion.
Please test: https://ci.appveyor.com/api/buildjobs/2sa8qa7naj6rs0xo/artifacts/Captura-Portable.zip

Working well now :+1:


[BUG] falco will crush with the fastly service without VCL in the terraform planned output

Describe the problem
falco will crush if falco get the fastly service without VCL in the terraform planned output. I have the project which have the multiple fastly services managed in the single terraform state. These fastly services include the service which does not have VCL.
I tried to introduce falco linter/tester into this project, but when I run terraform show -json planned.out | falco terraform command, falco will crush with the below error output.
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x2 addr=0x0 pc=0x1008da520]

goroutine 1 [running]:
main.(*Runner).run(0x140002ae690, 0x2?, 0x0, 0x1)
        /home/runner/work/falco/falco/cmd/falco/runner.go:227 +0x30
main.(*Runner).Run(0x140002ae690, {0x100bf16c0?, 0x140007b26c0})
        /home/runner/work/falco/falco/cmd/falco/runner.go:211 +0x180
main.runLint(0x140002ae690, {0x100bf16c0?, 0x140007b26c0?})
        /home/runner/work/falco/falco/cmd/falco/main.go:145 +0x30
main.main()
        /home/runner/work/falco/falco/cmd/falco/main.go:131 +0x84c

falco's linter/tester/simulator expect all fastly service to have VCL (ref: https://github.com/ysugimoto/falco/blob/main/resolver/terraform.go#L29), so falco will crush when falco encounter the fastly service which does not have VCL. I think falco should filter the fastly services which does not have VCL in advance.
VCL code that cause the problem
This is not related to VCL, but I made simple repro; https://github.com/Shinyaigeek/falco-with-multiple-services
Desktop (please complete the following information):

OS: MacOS arm64
Shell zsh

I send the PR to fix this issue in #186


odp <IP_ADDRESS> / Oracle linux 9 / Python 3 curl: option --data-binary: out of memory

odp <IP_ADDRESS> / Oracle linux 9 / Python 3
https://github.com/curl/curl/issues/1385
Hit curl: option --data-binary: out of memory when trying to start Yarn ResourceManager on this command line:
Execution of \'curl -sS -L -w \'%{http_code}\' -X PUT --data-binary @/var/lib/ambari-agent/tmp/yarn-ats/<IP_ADDRESS>-77/hbase.tar.gz -H \'Content-Type: application/octet-stream\' \'http://control-001:50070/webhdfs/v1/odp/apps/<IP_ADDRESS>-77/hbase/hbase.tar.gz?op=CREATE&overwrite=True&permission=444&user.name=hdfs\' 1>/tmp/tmp0shcomog 2>/tmp/tmpu3893ebt\' returned 2

Running manually with -T worked:
curl -sS -L -w '%{http_code}' -X PUT -T /var/lib/ambari-agent/tmp/yarn-ats/<IP_ADDRESS>-77/hbase.tar.gz -H 'Content-Type: application/octet-stream' 'http://control-001:50070/webhdfs/v1/odp/apps/<IP_ADDRESS>-77/hbase/hbase.tar.gz?op=CREATE&overwrite=True&permission=444&user.name=hdfs'

@zorel
How much of memory do you have on your node (from where the curl is done ?) and also how much memory heap did you configured for your namenode ?
Regards,

/var/lib/ambari-agent/tmp/yarn-ats/<IP_ADDRESS>-77/hbase.tar.gz is 1.1GB

It would be interesting to try again with higher memory on the NN like 2 or 4Go
Regards

Indeed it works with higher heaps. 2GB works.

Hi @zorel,
Thank you ;)
It may be linked to JDK 8 version (compared to old JDK 6/7 when the service advisor has been written)
https://github.com/clemlabprojects/ambari/blob/c4f200b7994ff724e445cabaff5eaaa5367537b0/ambari-server/src/main/resources/stacks/ODP/1.0/services/HDFS/service_advisor.py#L199
is where the 1024 is set, we can update it to 2048
Regards

Wait, it does not work. ambari-agent still gives the same error. I'll keep you posted on the tests. In cmd it was working but the file does only exists during ambari-agent action for RN start I presume

It does not work. I made the test on ambari-server node, and instead of a error cause the hbase.tar.gz does not exists on this node, curl does not complains and upload an emtpy file.
heap size does not solve the issue.

Hi @zorel
For your info
https://github.com/clemlabprojects/ambari/commit/f9d6cfd3f91c3bf682394d70a9541e6512dc3737
We tried it internally it does work. Also we identified the issue only happenin on rhel 9 and UI based install
Regards

Hi @zorel
All the issues ATS permissions and data memory are fixed in <IP_ADDRESS>.0-97 build
Regards
Clemlab Team


Support Python 3.12

If you use 3.12 generics the action would fail.
i.e
class Foo[T]:
	bar: T

Thank you for your report.
For the record, when you file reports to any project, please try and make it more informative, providing e.g. a build log or a copy of the stack trace or even just the error message.
With the amount of information you provided, I'm tempted to say "this is an issue with the coverage lib".

Coverage works fine. This happends due to the fact that the action runs on python3.11
Error: Critical error. This error possibly occurred because the permissions of the workflow are set incorrectly. You can see the correct setting of permissions here: https://github.com/py-cov-action/python-coverage-comment-action#basic-usage
Otherwise please look for open issues or open one in https://github.com/py-cov-action/python-coverage-comment-action/
Traceback (most recent call last):
  File "/workdir/coverage_comment/subprocess.py", line 22, in run
    return subprocess.run(
           ^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/subprocess.py", line 571, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '('coverage', 'json', '-o', '-')' returned non-zero exit status 1.

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/workdir/coverage_comment/main.py", line 44, in main
    exit_code = action(
                ^^^^^^^
  File "/workdir/coverage_comment/main.py", line 88, in action
    return save_coverage_data_files(
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/workdir/coverage_comment/main.py", line [33](https://github.com/tzevet5/Backend/actions/runs/8040223520/job/21958246919#step:8:34)8, in save_coverage_data_files
    raw_coverage_data, coverage = coverage_module.get_coverage_info(
                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/workdir/coverage_comment/coverage.py", line 99, in get_coverage_info
    subprocess.run("coverage", "json", "-o", "-", path=coverage_path)
  File "/workdir/coverage_comment/subprocess.py", line [36](https://github.com/tzevet5/Backend/actions/runs/8040223520/job/21958246919#step:8:37), in run
    raise SubProcessError("\n".join([exc.stderr, exc.stdout])) from exc
coverage_comment.subprocess.SubProcessError:
Couldn't parse 'src/core/dto.py' as Python source: 'invalid syntax' at line 18

I'll see what I can do. On a personal note, the tone of interactions in this ticket have been unpleasant so far.

I am truly sorry that you were hearing that tone from me :disappointed:.
And I really appreciate your work here  don't get me wrong. I was just trying to be concrete.
As for the notes you left I generally agree though

I'm not a huge fan of tying the Python version this lib runs on to the Python version of the code it analyses.
Correct me if I'm wrong, but the workflow uses a docker image to do the work instead of setting up it's dependencies
using pip or something. If we were to use the current Python, would it work in any (supported) version :thinking: ?

I am truly sorry that you were hearing that tone from me 😞.
And I really appreciate your work here don't get me wrong. I was just trying to be concrete.

Maybe I read too much on this. Communication is hard. I appreciate your acknowledgement, thank you. Back to the topic.

Correct me if I'm wrong, but the workflow uses a docker image to do the work instead of setting up it's dependencies
using pip or something.

Well we use both. Docker and poetry inside docker, I'm not sure to follow your train of thought

If we were to use the current Python, would it work in any (supported) version 🤔 ?

It all depends on coverage. I didn't think we needed the notion of "supported version" at all, I thought the coverage datafile was all we needed. Now I discover that if we run with py3.12, because of coverage, we need the code to be py3.12 compatible. While Python regularily adds new syntax features, they haven't made backwards incompatible changes lately (the last one being async and await becoming keywords, I guess). If they do so in the future, we'll need to choose between supporting a newer python syntax or an older python syntax, so we'll have a set of supported versions and it's a bit sad.
The more I think about it, the more replacing coverage with coberturapy (#347) sounds like a solution to many problems. Of course, that would mean a new major version, breaking compat ourselves etc.

Thanks for the quick fix!
I saw that you just updated the Python version eventually...

Yep. It was still the right thing to do in this case, it's just that this issue made me realize that until we make bigger changes, I'll need to stay on top of version, I can't decide completely on my own when I want to upgrade while keeping compatibility for everyone.


Support Pub/Sub Emulator

It seems right now google-cloud-pubsub doesn't support gcloud emulator. At least I'm not able to configure it for Pub/Sub even though I managed to use an emulator with google-cloud-datastore. I think it is related to https://github.com/GoogleCloudPlatform/google-cloud-datastore/issues/114.
Anyways, when I'm trying to create a subscriber using a channel provider with no credentials. Here are some snippets in Kotlin of how I create a SubscriptionAdminClient:
val channelProvider = InstantiatingChannelProvider.newBuilder()
        .setEndpoint("localhost:$port")
        .setCredentialsProvider(FixedCredentialsProvider.create(NoCredentials.getInstance()))
        .build()

protected fun getSubscriptionAdminClient(): SubscriptionAdminClient {
  val adminSettings = SubscriptionAdminSettings.defaultBuilder()
    .setChannelProvider(channelProvider)
    .build()
  return SubscriptionAdminClient.create(adminSettings)
}

When I'm trying to call com.google.cloud.pubsub.spi.v1.SubscriptionAdminClient#createSubscription I'm getting:
com.google.api.gax.grpc.ApiException: io.grpc.StatusRuntimeException: UNKNOWN
	at com.google.api.gax.grpc.ExceptionTransformingCallable$ExceptionTransformingFuture.onFailure(ExceptionTransformingCallable.java:109)
	at com.google.api.gax.core.ApiFutures$1.onFailure(ApiFutures.java:53)
	at com.google.common.util.concurrent.Futures$4.run(Futures.java:1126)
	at com.google.common.util.concurrent.MoreExecutors$DirectExecutor.execute(MoreExecutors.java:399)
	at com.google.common.util.concurrent.AbstractFuture.executeListener(AbstractFuture.java:902)
	at com.google.common.util.concurrent.AbstractFuture.addListener(AbstractFuture.java:636)
	at com.google.common.util.concurrent.ForwardingListenableFuture.addListener(ForwardingListenableFuture.java:45)
	at com.google.api.gax.core.internal.ApiFutureToListenableFuture.addListener(ApiFutureToListenableFuture.java:53)
	at com.google.common.util.concurrent.Futures.addCallback(Futures.java:1138)
	at com.google.common.util.concurrent.Futures.addCallback(Futures.java:1076)
	at com.google.api.gax.core.ApiFutures.addCallback(ApiFutures.java:48)
	at com.google.api.gax.grpc.ExceptionTransformingCallable.futureCall(ExceptionTransformingCallable.java:65)
	at com.google.api.gax.grpc.RetryingCallable$GrpcRetryCallable.call(RetryingCallable.java:139)
	at com.google.api.gax.grpc.RetryingCallable.futureCall(RetryingCallable.java:84)
	at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:219)
	at com.google.api.gax.grpc.UnaryCallable.futureCall(UnaryCallable.java:230)
	at com.google.api.gax.grpc.UnaryCallable.call(UnaryCallable.java:258)
	at com.google.cloud.pubsub.spi.v1.SubscriptionAdminClient.createSubscription(SubscriptionAdminClient.java:339)
	at com.google.cloud.pubsub.spi.v1.SubscriptionAdminClient.createSubscription(SubscriptionAdminClient.java:307)
	at com.fkorotkov.gcloud.pubsub.PubSubImpl.registerSubscriber(PubSubImpl.kt:72)
Caused by: io.grpc.StatusRuntimeException: UNKNOWN
	at io.grpc.Status.asRuntimeException(Status.java:540)
	at io.grpc.stub.ClientCalls$UnaryStreamToFuture.onClose(ClientCalls.java:439)
	at io.grpc.ClientInterceptors$CheckedForwardingClientCall.start(ClientInterceptors.java:202)
	at io.grpc.ForwardingClientCall.start(ForwardingClientCall.java:47)
	at com.google.api.gax.grpc.HeaderInterceptor$1.start(HeaderInterceptor.java:62)
	at io.grpc.stub.ClientCalls.startCall(ClientCalls.java:270)
	at io.grpc.stub.ClientCalls.asyncUnaryRequestCall(ClientCalls.java:249)
	at io.grpc.stub.ClientCalls.futureUnaryCall(ClientCalls.java:186)
	at com.google.api.gax.grpc.DirectCallable.futureCall(DirectCallable.java:59)
	at com.google.api.gax.grpc.ExceptionTransformingCallable.futureCall(ExceptionTransformingCallable.java:62)
	... 55 more
Caused by: java.lang.IllegalStateException: OAuth2Credentials instance does not support refreshing the access token. An instance with a new access token should be used, or a derived type that supports refreshing.
	at com.google.auth.oauth2.OAuth2Credentials.refreshAccessToken(OAuth2Credentials.java:182)
	at com.google.auth.oauth2.OAuth2Credentials.refresh(OAuth2Credentials.java:149)
	at com.google.auth.oauth2.OAuth2Credentials.getRequestMetadata(OAuth2Credentials.java:135)
	at io.grpc.auth.ClientAuthInterceptor.getRequestMetadata(ClientAuthInterceptor.java:148)
	at io.grpc.auth.ClientAuthInterceptor.access$100(ClientAuthInterceptor.java:62)
	at io.grpc.auth.ClientAuthInterceptor$1.checkedStart(ClientAuthInterceptor.java:94)
	at io.grpc.ClientInterceptors$CheckedForwardingClientCall.start(ClientInterceptors.java:194)
	... 62 more

As I mentioned above I'm able to use Datastore emulator when I run it with --no-legacy flag and by creating a Datastore service like this:
DatastoreOptions.newBuilder()
      .setProjectId("unit-testing")
      .setHost("localhost:$port")
      .setCredentials(NoCredentials.getInstance())
      .build()
      .getService()

I'm using the latest available version of the libraries at the moment:
{
  "group": "com.google.cloud",
  "name": "google-cloud-datastore",
  "version": "0.13.0-beta"
},
{
  "group": "com.google.cloud",
  "name": "google-cloud-pubsub",
  "version": "0.13.0-alpha"
}

I can replicate this on my desktop; it looks like a bug.
This seems to work correctly however:
ManagedChannel chan = ManagedChannelBuilder.forAddress("localhost", 8085).usePlaintext(true).build();

SubscriptionAdminSettings settings =
    SubscriptionAdminSettings.defaultBuilder()
        .setChannelProvider(FixedChannelProvider.create(chan))
        .build();

try (SubscriptionAdminClient subscriptionAdminClient =
    SubscriptionAdminClient.create(settings)) {
  subscriptionAdminClient.createSubscription(
      subscription, topic, PushConfig.getDefaultInstance(), 0);
}

@tcoffee-google Since you're working on auth-related stuff, could you take a look?

@pongad @tcoffee-google thank you for taking a look!
I've created a reproducible example if you'll need to: https://github.com/fkorotkov/snippets/commit/a0dd999135e753b78d2b36ce11623b162e620dcc
Also interesting that if I change pubsub version to 0.17.1-alpha the test case simply hangs. I can see that a container is running through docker ps and by getting logs via docekr logs CONTAINER_ID I can see bunch of:
[pubsub] May 01, 2017 4:38:42 PM io.gapi.emulators.netty.HttpVersionRoutingHandler channelRead
[pubsub] INFO: Detected non-HTTP/2 connection.
[pubsub] May 01, 2017 4:38:42 PM io.gapi.emulators.netty.NotFoundHandler handleRequest
[pubsub] INFO: Unknown request URI: /bad-request
[pubsub] May 01, 2017 4:38:42 PM io.gapi.emulators.grpc.GrpcServer$3 operationComplete
[pubsub] INFO: Adding handler(s) to newly registered Channel.
[pubsub] May 01, 2017 4:38:42 PM io.gapi.emulators.netty.HttpVersionRoutingHandler channelRead
[pubsub] INFO: Detected non-HTTP/2 connection.

@fkorotkov I can also reproduce that. I suspect that's actually gRPC retrying a connection; NoCredentials is probably causing an infinite retry behavior somehow.
The fix I added above seems to solve both issues though. Is it good enough to unblock you for now?

@pongad yeah, works perfectly for me https://github.com/fkorotkov/snippets/commit/d310bf967fb79e2e5617ede076051c3cd7e4e336. Thank you very much! Going to incorporate it into the main app(using an in-memory in-house implementation at the moment).

This can be fixed by adding setPlainText to InstantiatingChannelProvider but it would have to call ManagedChannelBuilder::usePlainText which is beta API.
@garrettjonesgoogle ?

I would prefer not to add the dependency on the beta API within our non-test code (InstantiatingChannelProvider).

I tried the workarounds in code and was able to send a message, however never received it using a pull subscription.

@rcleveng I also just got back to it and my test case hangs on trying to publish a message with bunch of:
[pubsub] May 14, 2017 10:06:53 PM com.google.cloud.iam.testing.v1.shared.authorization.AuthInterceptor interceptCall
[pubsub] INFO: Authentication interceptor: Header value is null

At the moment we use an in-memory implementation of Publisher but would love to move to an official emulator to have better tests.

Actually publishing is fine. Seems I have the same issue as @rcleveng when I'm not able to receive a message after publishing.

@fkorotkov I think your test is incorrect. In your PubSubTestingUtil.kt, you seem to be pulling messages to check whether there are messages pending, is this correct? The following sequence of events can happen:

Subscriber start
Subscriber pulls messages, found none, and back off to not spam the server.
You publish the message.
Before Subscriber pulls again, hasMessages pulls from the same subscription, finds the message, and reports that the subscription isn't empty.
Subscriber pulls, but the server cannot give it the message

This is intended behavior. The message has already been given to hasMessages, and pubsub tries to not send duplicate messages.

hasMessages run again. By the same reason as (5), it receives no messages and falsely reports that the subscription is empty.
Your test checks messagesFromSubscriber, finds it empty, and fails.

Because we have a concurrent system, writing tests for it is a little difficult. What do you want the test to check?
If you're experimenting with the client library, maybe you just want MessageReceiver to print the message to the console. If you see the message, you can be pretty sure you set things up right.
If you need automated testing, consider using BlockingQueue::poll. You can set the timeout to something improbably long like 30 seconds. The test might flake if your computer is really busy, but it should work well enough under normal circumstances.

@pongad thank you for responding! I was thinking about a similar scenario that I wanted to verify.
Let me explain what I want to achieve. I want to be able in a test to wait for all published messages to be processed to verify that all subscribers are working correctly and I have an expected state.
At the moment I have a wrapper interface around Publisher and two implementations for production and tests. The one for production uses google-cloud-pubsub library. The one for tests is just an in-memory implementation of the same interface with a MultiMap<TopicName, Message> and one additional method to manually process all messages from the multimap.
My current implementation is working like a charm but I want try to reuse the production implementation in tests to test the logic I have there. Bring tests closer to production.
Thanks again for all responses. I will poke around to avoid a possible deadlock.

@fkorotkov I just now realized that my response was too accusatory. I apologize.
Our client library code is pretty complex and very probably have bugs lurking around. If you can't get it to work after suggested workaround, can I trouble you for a stack trace? I cannot seem to reproduce this on my computer, but I'll be happy to help you troubleshoot it.

I workaround it by just waiting for all messages to be processed since I know all message ids(https://github.com/fkorotkov/snippets/commit/1e7f0a21c9a471ac887616673acd5e806330c467). Will try to incorporate this solution into our project.

@fkorotkov Want to give you a heads-up. Our latest release (0.17.2) has a bug described in #1827. If your subscriber is deadlocking, that might be why. If you run into this problem, could you let us know in the linked issue?
We should be releasing a new version soon, which will hopefully fix this.

Im having simliar issue as @fkorotkov and @rcleveng where i dont get any message to my MessageReceiver. The MessageReceiver is not triggered at all.
I have tested the code both with the emulator and on google cloud and i can receive messages when using google cloud.
I have basically started my application with emulator settings and are manually sending a message on the topic by CURL'nig the api.
I get back
{   "messageIds": [     "1"   ] }
So i know that the message has been received on the topic at hand.
Im using  this version of pubsub.
com.google.cloud:google-cloud-pubsub:0.17.2-alpha
I have used the settings specified here from @pongad
Any thoughts/suggestions

@Nosfert I cannot seem to reproduce the problem you're facing. I synced up with @rcleveng offline; I think his trouble actually came from misconfiguration.
Do you have some kind of "hello pubsub" application you could share with me in a gist? I'll gladly help you troubleshoot. This problem could be caused by a deadlock; just in case I still cannot reproduce, could you also share with me a stack trace? (I usually run jstack against the running JVM after letting it sit for a couple minutes.)

@pongad
Here is a gist, will try and fix you a jstack or stack-trace later today or maybe tomorrow.
https://gist.github.com/Nosfert/f967eb735efe466afd3ec86c81e1c958
I also added the curl's that im running. One thing that i was thinking, that i have not testet, is that the emulator might not like it when there is an empty data and weird attributes.

@Nosfert Your setup is pretty much the same as mine except I use curl command to create subscription instead. I noticed an issue with the gist you post, though I'm not sure if it's just a copy-paste error.
In the curl command, your topic name is "pubsub-rights.message.test".
However, in PubsubListener, the topic name is "pubsub.message.test", without the "-rights".
I'm not sure how the CreateSubscription on line 23 could succeed though...

@pongad yeah the topic name is a copy paste bug when i tried to make the code a bit more anonymous. Fixed that in Gist.
Line 23-28 tries to create subscription if it does not exist. If it does exist then just get that subscription. And then convert the subscription to a subscriber.
@pongad do you have a simple example for pubsub + emulator in the newest version that runs?

@Nosfert Got it. Here's a gist of what I got working: https://gist.github.com/pongad/d13d5737294b34924ba381c2c9a4cf1f
I just verified it on 0.18.0-alpha

@pongad
I done some alterations on my code after you example.
And I got it to works, so thank you for your help.
Think that the issue that i had was that I did not specify a ChannelProvider for the Subscriber
At row 59
Thanks!

@Nosfert Ah I see! Glad I could help.

I think above discussions resolve the issue. I'll close this, but please reopen if problem persists.

What dependency allows you to use val channelProvider = InstantiatingChannelProvider.newBuilder()....?

The class name is now InstantiatingGrpcChannelProvider and it is present in gax-grpc.

Interesting, is there an updated example of a PubSub emulator then? Ex: https://github.com/GoogleCloudPlatform/google-cloud-java/blob/master/TESTING.md#testing-code-that-uses-pubsub seems to use old code


What do you need help with?

I’d like to help to make this project come true. Where can I support you at dev work?

Hey, I don't really need help right now, but I appreciate you asking.
I need to change the way the directive work (I don't allow to generate a script directive if the manifest does not exists, which is an issue in development mode) and I need to create a preset, so Vite would be installed and ready after using this command:
npx apply innocenzi/laravel-vite

Those are things I want to do myself. After this, if I need help for things I don't have time to work on, I'll create issues, so if you want to help, you can just go to the issues tab and look for something you want to work on.
Thanks again :+1:

Ok. Can't wait to use it!


[shell] fs.meta.save with filters by volume server

I do weekly full seaweed backups
from each server volume separately, and before that I make a full backup of metadata via fs.meta.save.
With the increase in the number of volume servers, it has become expensive to do a full metadata backup; I want to make a metadata backup that belongs only to a specific volume server

fs.meta.save supports save for a particular folder. It does not know any particular volume server though since they are logically separate: one for blob storage and the other for filer storage. There are no good way to just backup file system metadata for one volume server.
If you have any suggestions, please let me know.
> fs.meta.save -h
Usage of fs.meta.save:
  -o string
    	output the meta data to this file
  -obfuscate
    	obfuscate the file names
  -v	print out each processed files

> help fs.meta.save
  fs.meta.save	# save all directory and file meta data to a local file for metadata backup.

	fs.meta.save /               # save from the root
	fs.meta.save -v -o t.meta /  # save from the root, output to t.meta file.
	fs.meta.save /path/to/save   # save from the directory /path/to/save
	fs.meta.save .               # save from current directory
	fs.meta.save                 # save from current directory

	The meta data will be saved into a local <filer_host>-<port>-<time>.meta file.
	These meta data can be later loaded by fs.meta.load command


Enable PAM sessions on RSW

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


[BUG]: ##[error]Failed to download or parse release-index.json with error: {}

New issue checklist

[X] I searched for existing GitHub issues
[X] I read pipeline troubleshooting guide
[X] I checked how to collect logs

Task name
UseDotNet@2
Task version
No response
Issue Description
I am facing this error (  ##[error]Failed to download or parse release-index.json with error: {} ) in one of my Azure pipelines. It did not happen often. I wonder if anyone knows how to fix this issue?
Environment type (Please select at least one enviroment where you face this issue)

[ ] Self-Hosted
[X] Microsoft Hosted
[ ] VMSS Pool
[ ] Container

Azure DevOps Server type
dev.azure.com (formerly visualstudio.com)
Azure DevOps Server Version (if applicable)
Azure DevOps Server 2022
Operation system
Windows 11
Relevant log output
##[error]Failed to download or parse release-index.json with error: {}

Full task logs with system.debug enabled

 [REPLACE THIS WITH YOUR INFORMATION]

Repro steps
No response

Hi @ktran1005
It's either a network error or an error on dotnet blob storage side.
How often do you face the issue?

Hi @DenisNikulin5,
I have a pipeline that’s scheduled to run every night. The last time my pipeline failed due to this error was last Wed and couple times last month. I think it didn’t happen very consistent. I saw some people suggested to rerun the pipeline to fix this issue. Do you think that’s the only solution? Thanks


Release new version

Thanks for maintaining quetz!
We'd like to use the new GCS backend introduced in https://github.com/mamba-org/quetz/pull/449 but there hasn't been a new release since then. Could you please make a new release?
Thanks a lot in advance!

Ok, released 0.2.0 :)

Btw. if you could take care of the conda-forge release, that would be great!
We might have to adjust the dependencies. Please take a look at https://github.com/mamba-org/quetz/blob/master/environment.yml


pyaedt-icepak- creating and assigning values to a region becomes extremely time-consuming

Before submitting the issue

[X] I have searched among the existing issues
[X] I am using a Python virtual environment

Description of the bug
I encountered an issue in the following scenario: creating 400 square regions, each with an independent heat flux density setting. In actual execution using PyAEDT, the creation of the first few regions is very fast. However, after about 60 regions, creating and assigning values to a region becomes extremely time-consuming. While using ipk.assign_source or ipk.assign_stationary_wall_with_heat_flux for 400 regions takes 20 minutes, the first 20 regions may only take a few seconds.
The python version is 3.11.5.
Thank you.
Steps To Reproduce

REC = []
for y in range(20):
    for x in range(20):
        REC.append(f"rec_{x}_{y}")
        REC[-1] = ipk.modeler.create_rectangle(csPlane=2, position=[50.*x, 50.*y, 500], dimension_list=[50.,50.])
        ipk.assign_stationary_wall_with_heat_flux(
            REC[-1].bottom_face_z.id,
            heat_flux=f"{surface_flux[x,y]}W_per_m2",
            thickness="0mm",
            material="Mat1",
        )

Which Operating System are you using?

I have created 300 regions and it took 3 minutes and 23 secs.
I have tested using the AEDT API directly as an alternative:
import pyaedt
import math

ipk = pyaedt.Icepak(specified_version="2023.2")

REC = []
ipk.logger.reset_timer()

cont = 1
for y in range(20):
    for x in range(10):
        REC.append(f"rec_{x}_{y}")
        new = ipk.modeler.create_rectangle(csPlane=2, position=[50. * x, 50. * y, 500], dimension_list=[50., 50.])
        # ipk.assign_stationary_wall_with_heat_flux(
        #     new.bottom_face_z.id,
        #     heat_flux="2irrad_W_per_m2",
        #     thickness="0mm",
        #     material="Al-Extruded",
        # )

        ipk.oboundary.AssignStationaryWallBoundary(["NAME:StationaryWall_" + str(cont),
                                                    "Faces:=", [new.bottom_face_z.id],
                                                    "Thickness:=", "0mm",
                                                    "Solid Material:=", "Al-Extruded",
                                                    "External Condition:=", "Heat Flux",
                                                    "Heat Flux:=", "2irrad_W_per_m2",
                                                    "Temperature:=", "AmbientTemp",
                                                    "Heat Transfer Coefficient:=", "0w_per_m2kel",
                                                    "Reference Temperature:=", "AmbientTemp",
                                                    [
                                                        "NAME:Heat Transfer Data",
                                                        "Heat Transfer Correlation:=", False,
                                                        "Heat Transfer Convection Type:=", "Forced Convection"
                                                    ],
                                                    [
                                                        "NAME:Radiation",
                                                        "Radiate:=", False
                                                    ],
                                                    "Shell Conduction:=", False,
                                                    "Slip Flow Boundary:=", False,
                                                    "External Surface Radiation:=", False,
                                                    "External Material:=", "Steel-oxidised-surface",
                                                    "External Radiation Reference Temperature:=", "AmbientTemp",
                                                    "External Radiation View Factor:=", "1"
                                                    ])
        cont += 1

ipk.logger.info_timer("Assignment finished")
ipk.release_desktop(False, False)

In this case, the code took: 1 min 49 secs
@lorenzovecchietti @siva-krishnaswamy Could you take a look at this issue?
Final comment, running the code in non graphical mode would also help.

Thank you very much！ This method is much faster than the previous one.

@Samuelopez-ansys
Although it is true that with many BCs, the code is slower, I cannot see any significant difference with respect to using native APIs. So this does not seem related to pyaedt, but rather Icepak backend, especially in graphical mode.
@YLSHA your code was raising warnings for the unit used (W_per_m2 instead of irrad_W_per_m2 that Icepak was expecting).
Comparing 400 rectangle creation with native and pyaedt assignment:

PyAEDT INFO: Native assignment finished Elapsed time: 2m 28sec
PyAEDT INFO: pyAEDT assignment finished Elapsed time: 2m 29sec

Code used:
import pyaedt

ipk = pyaedt.Icepak(specified_version="241")

REC = []
ipk.logger.reset_timer()
cont = 1
for y in range(14):
    for x in range(14):
        REC.append(f"rec_{x}_{y}")
        new = ipk.modeler.create_rectangle(csPlane=2, position=[50. * x, 50. * y, 500], dimension_list=[50., 50.])
        ipk.oboundary.AssignStationaryWallBoundary(["NAME:StationaryWall_" + str(cont),
                                                    "Faces:=", [new.bottom_face_z.id],
                                                    "Thickness:=", "0mm",
                                                    "Solid Material:=", "Al-Extruded",
                                                    "External Condition:=", "Heat Flux",
                                                    "Heat Flux:=", "2irrad_W_per_m2",
                                                    "Temperature:=", "AmbientTemp",
                                                    "Heat Transfer Coefficient:=", "0w_per_m2kel",
                                                    "Reference Temperature:=", "AmbientTemp",
                                                    [
                                                        "NAME:Heat Transfer Data",
                                                        "Heat Transfer Correlation:=", False,
                                                        "Heat Transfer Convection Type:=", "Forced Convection"
                                                    ],
                                                    [
                                                        "NAME:Radiation",
                                                        "Radiate:=", False
                                                    ],
                                                    "Shell Conduction:=", False,
                                                    "Slip Flow Boundary:=", False,
                                                    "External Surface Radiation:=", False,
                                                    "External Material:=", "Steel-oxidised-surface",
                                                    "External Radiation Reference Temperature:=", "AmbientTemp",
                                                    "External Radiation View Factor:=", "1"
                                                    ])
        cont += 1
ipk.logger.info_timer("Native assignment finished")

old=ipk.design_list[0]
ipk.insert_design("pyaedtFuncs")
ipk.delete_design(old)

REC = []
ipk.logger.reset_timer()
for y in range(14):
    for x in range(14):
        REC.append(f"rec_{x}_{y}")
        REC[-1] = ipk.modeler.create_rectangle(csPlane=2, position=[50. * x, 50. * y, 500], dimension_list=[50., 50.])
        ipk.assign_stationary_wall_with_heat_flux(
            REC[-1].bottom_face_z.id,
            heat_flux="5irrad_W_per_m2",
            thickness="0mm",
            material="Al-Extruded",
        )
ipk.logger.info_timer("pyAEDT assignment finished")

ipk.release_desktop(False, False)


[Doc] Fix Restart

What type of PR is this：

[ ] BugFix
[ ] Feature
[ ] Enhancement
[ ] Refactor
[ ] UT
[x] Doc
[ ] Tool

Which issues of this PR fixes ：

Fixes #
Problem Summary(Required) ：

Checklist:

[ ] I have added test cases for my bug fix or my new feature
[ ] This pr will affect users' behaviors
[ ] This pr needs user documentation (for new or modified features or behaviors)

[ ] I have added documentation for my new feature or new function

run starrocks_admit_test

run starrocks_be_unittest

run starrocks_be_unittest

@mergify backport 2.3 2.4

@mergify backport branch-2.3 branch-2.4


Supporting -t/--target  [contrib code]

We want to use pip-compile/pip-sync in an environment where we're currently using pip install -t ....  pip-sync does not support this well, which is no surprise since pip's support of -t is spotty at best.
We ended up writing our own implement of pip-sync to do this, which I'll attach here.  (I'll also just copy it in since it's short and it may be useful to have the text here for searching.)
  (It works on the two versions of pip I've tested on, but who knows what it would do on a general pip.)  But if others have this need they may find the script to be useful!
#!/usr/bin/env python

"""Make ./third_party match exactly the input requirements.txt file.

This script does the equivalent of what pip-sync does in pip-tools.
However, pip-tools doesn't support the `-t` flag, so we have to do
things in a different (hackier) way.

Like pip-tools, we expect the input requirements.txt file to say *all*
the packages that should be in third_party/, which includes the
packages that we care about plus their deps.  This is probably
generated by running `pip-compile requirements.txt.in` on some .in
file that has only the packages we care about (without their deps).

We do a pip install to make sure everything in requirements.txt is
installed.  Then we delete all the packages that are not mentioned.
"""
from __future__ import absolute_import

import logging
import os
import subprocess
import sys

import pip.req
import pip.utils
import pkg_resources

def _normalize_package_name(pkg):
    """Convert _ into -.  Pip seems to accept either."""
    return pkg.replace('_', '-')

def install(requirements_file, target_dir):
    # Because all our deps have `==`, `--upgrade` is basically a noop:
    # it just untars the .whl file (or whatever) again.  This is
    # necessary, though, in case something has deleted files from one
    # of the third-party dirs; nothing will re-install those files
    # except --upgrade.
    subprocess.check_call(['pip', 'install', '-t', target_dir,
                           '--upgrade', '-r', requirements_file])

def uninstall(requirements_file, target_dir):
    packages_to_keep = set()
    with open(requirements_file) as f:
        for line in f:
            if '==' in line:
                pkg = line.split('==')[0]
                packages_to_keep.add(_normalize_package_name(pkg))

    # Sadly, "pip uninstall" doesn't support -t, so we have to do it
    # by hand.  This involves a bunch of ugly monkey-patching of pip.
    for dist in pkg_resources.find_distributions(target_dir):
        if _normalize_package_name(dist.project_name) in packages_to_keep:
            logging.debug("Not uninstalling %s: in %s"
                          % (dist.project_name, requirements_file))
            continue

        # Monkey-patch #1: get the requirement to look in our directory
        # for this packages.
        def set_exists(self):
            self.satisfied_by = dist
            return True

        pip.req.InstallRequirement.check_if_exists = set_exists

        # Monkey-patch #2: have pip think our third_party dir is "local".
        sys.prefix = target_dir

        # Now we can uninstall!
        install_requirement = pip.req.InstallRequirement(dist, '', markers=[])
        logging.info("Uninstalling %s" % dist.project_name)
        install_requirement.uninstall(auto_confirm=True)

if __name__ == '__main__':
    import argparse

    parser = argparse.ArgumentParser(
        description="Sync a non-standard pip directory to match requirements")
    parser.add_argument("requirements_txt",
                        help="A requirements.txt file created via pip-compile")
    parser.add_argument("-t", "--target", required=True,
                        help="Directory to install the packages in")
    parser.add_argument("-v", "--verbose", action="store_true",
                        help="Emit more logging information")
    args = parser.parse_args()

    target_dir = os.path.abspath(args.target)

    logging.getLogger().setLevel(
        logging.DEBUG if args.verbose else logging.INFO)

    install(args.requirements_txt, target_dir)
    uninstall(args.requirements_txt, target_dir)

(I guess I can't attach python files, so we'll just go with the pasted version above I guess.)

Thank you for sharing this 👍
As you suspected, this is too hacky to get in pip-tools in the current state.
I'll close this, as no work is planned to be done from here.


Add VS Code recommended extensions

Close: #61

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Comparison is base (682133c) 100.00% compared to head (c4cdfba) 100.00%.

Additional details and impacted files
@@            Coverage Diff            @@
##              main       #63   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files            2         2
  Lines           23        23
=========================================
  Hits            23        23

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Focus state appearing on Icon Buttons when clicked on

Background
When Icon Buttons are clicked on their focus state is triggered. This state should only appear when they are navigated to using keyboards, not clicked on with mice. This has been noticed in both CellxGene and CZ ID (see examples below)

Examples
CZ ID:

CellxGene:

Hey @cathystoli, this issue has already been resolved. Just tagging @clarsen-czi to double-check the styles for confirmation.

@masoudmanson Thanks for the link! Everything looks great to me, so I say let's close this one out.


\h and \H regex shorthand character classes are inverted

Prerequisites

[x] Put an X between the brackets on this line if you have done all of the following:

Reproduced the problem in Safe Mode: https://flight-manual.atom.io/hacking-atom/sections/debugging/#using-safe-mode
Followed all applicable steps in the debugging guide: https://flight-manual.atom.io/hacking-atom/sections/debugging/
Checked the FAQs on the message board for common solutions: https://discuss.atom.io/c/faq
Checked that your issue isn't already filed: https://github.com/issues?utf8=✓&q=is%3Aissue+user%3Aatom
Checked that there is not already an Atom package that provides the described functionality: https://atom.io/packages

Description
\h and \H regex shorthand character classes are inverted
Steps to Reproduce

Expected behavior: [What you expect to happen]

\h should match hexadecimal-digit character which matches [0-9a-fA-F]
\H should match non-hexadecimal-digit character

Actual behavior: [What actually happens]

\h matches non-hexadecimal-digit character
\H matches hexadecimal-digit character which matches [0-9a-fA-F]

Reproduces how often: [What percentage of the time does it reproduce?]
Everytime
Versions
1.27.1
Additional Information
https://raw.githubusercontent.com/kkos/oniguruma/master/doc/RE

/move to atom/find-and-replace


Add contributor of the month section to homepage

Issue #, if available:
Description of changes:
Adding a contributor of the month section to promote our best contributors
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Just a preview of how it could look like.
Featured contributors should be selected by the community. The easiest way would be a quick monthly poll I guess.

:+1 looks good.

Hi all,
The time to vote is now over for the CDK.dev Featured Contributor section and the turnout was really bad.
Only 15 people out of 950 in the Slack channel voted and two of those votes were ME and Test.

I would propose that we will not add the CDK Featured Contributor section and try this poll again when the community is a bit more mature.
Do you agree with this or would you still add the section and poll again in let's say next quarter?

Also, three people left feedback with one person writing really good suggestions!

I would propose that we will not add the CDK Featured Contributor section and try this poll again when the community is a bit more mature.
Do you agree with this or would you still add the section and poll again in let's say next quarter?

I agree, we shouldn't push this out yet.
Would it make sense to get this submission form more prominently displayed until we do get good engagement?
I love the idea of the Weekly Stack example. New Issue?

The time to vote is now over for the CDK.dev Featured Contributor section and the turnout was really bad.
Only 15 people out of 950 in the Slack channel voted and two of those votes were ME and Test.

Ahh,  too bad - but a good learning. Perhaps we could twist the direction of this a bit? It could just be a hand picked feature of a person? Not necessarily tied to contributions, but more along the lines of "what brought you to cdk, what are you working on right now, what do you like, what would you change".

I agree, we shouldn't push this out yet.

Agree.

I love the idea of the Weekly Stack example. New Issue?

👍  Would that be a written or a video format?

I love the idea of the Weekly Stack example. New Issue?

👍 Would that be a written or a video format?

I think at least writing but I would also do a video if I was going to do one...

So - what's the status of this? /cc @EdwinRad

So - what's the status of this? /cc @EdwinRad

@EdwinRad do we want to merge this?

please reopen against https://github.com/cdk-dev/website/pull/170 if still relevant


Is support for Windows Phone needed?

Not sure if this is required since Microsoft is starting to push hard on other platforms now and really depreciated Windows Phone. https://www.engadget.com/2017/07/11/windows-phone-support-ends/

In 2.0.2-beta support for this was dropped


update readme, add Relay example

resolves #163

Coverage remained the same at 96.234% when pulling 59187ad52cf106a4657da44b986f0e60071f9940 on absinthe-example into 30af1c75d7f3fda574ec4e99ba4c999fc431ec00 on main.

Coverage decreased (-2.2%) to 94.0% when pulling 59187ad52cf106a4657da44b986f0e60071f9940 on absinthe-example into 30af1c75d7f3fda574ec4e99ba4c999fc431ec00 on main.


net: l2: wifi: fix AP sets band failed with channel 0

Should support setting band for both STA and SAP mode.

Perhaps the commit subject
fix AP sets band failed with channel 0
should be clarified, it does not seem to reflect what is being changed.
The change is to support both SAP and STA mode for this command, why there is mention to "channel 0" in the first place.

Perhaps the commit subject fix AP sets band failed with channel 0 should be clarified, it does not seem to reflect what is being changed. The change is to support both SAP and STA mode for this command, why there is mention to "channel 0" in the first place.

Hi @jukkar , as there is following check below, and this commit can fix the issue that AP sets band failed with channel 0
if (params->channel == 0 && params->band == WIFI_FREQ_BAND_UNKNOWN) {
PR_ERROR("Band not provided when channel is 0\n");
return -EINVAL;
}

Perhaps the commit subject fix AP sets band failed with channel 0 should be clarified, it does not seem to reflect what is being changed. The change is to support both SAP and STA mode for this command, why there is mention to "channel 0" in the first place.

Hi @jukkar , as there is following check below, and this commit can fix the issue that AP sets band failed with channel 0 if (params->channel == 0 && params->band == WIFI_FREQ_BAND_UNKNOWN) { PR_ERROR("Band not provided when channel is 0\n"); return -EINVAL; }

BTW, to convery any channel, there is already a macro in use WIFI_CHANNEL_ANY please switch to that, a non-zero is used to convey explicit intention than default value of 0 (memset or static etc).


No easy way to delete listblock records when list creator deletes/is suspended

Describe the bug
When someone creates a block list, and users subscribe to it, if that person then deletes their account or is suspended, there's no way in app for those users to then access the list and unsubscribe/unblock. The list persists after account suspension, the list creator is suspended so can't log in to delete it, and in-app users cannot access the list to unblock it (i.e. delete the app.bsky.graph.listblock record) because the profile associated with the list creator returns an error (account taken down).
The only way currently to fix this is with direct API access - I've done it in python fairly simply (listing listblock records for a user with com.atproto.repo.listRecords, finding the ones related to the lists from suspended accounts, and running com.atproto.repo.deleteRecord from a logged in client), and there's a tutorial here on how to do it with browser API calls and a CURL client online
https://cohost.org/signpostkw/post/7429398-how-to-unblock-one-o
To Reproduce
Steps to reproduce the behavior:

User A creates a mod list
User B subscribes to that mod list with the "block" option
User A deletes or is suspended
User B can now no longer access user A's list to unblock, but anyone on the list is still blocked

Expected behavior
Make the "view moderation lists" dialogue in app properly display the results of com.atproto.repo.listRecords with the app.bsky.graph.listblock NSID, even the ones from invalid/suspended DIDs, and provide a button next to each to run com.atproto.repo.deleteRecord.
Alternatively, properly delete all user lists when an account is deleted or suspended.
Alternatively alternatively, don't spuriously ban users for "harrassment " when they're trying to curate their experience by blocking lots of people, then have those same users have to write methods to fix the results of this on your buggy af website when this causes problems.

Alternatively alternatively, don't spuriously ban users for "harrassment " when they're trying to curate their experience by blocking lots of people, then have those same users have to write methods to fix the results of this on your buggy af website when this causes problems.

GitHub doesn't seem the appropriate place to complain about moderation decisions on Bluesky, I think you need to email<EMAIL_ADDRESS>

Yes because that's the main takeaway from this post 🙃

Alternatively alternatively, don't spuriously ban users for "harrassment " when they're trying to curate their experience by blocking lots of people, then have those same users have to write methods to fix the results of this on your buggy af website when this causes problems.

Kinew, I'd encourage you to take a more constructive tone if you're going to bring this campaign of yours here.
The consequences of being rude and negative on here can be worse long term because you're letting everyone know they shouldn't work with you.
I asked you to stop harassing me & my friends, and for that matter stop harassing the bsky devs too. This behavior is what got you banned in the first place. Please respect the ban and stop, or at least take the advice above to email the mod team instead of doing this.


Release version 0.6

Coverage remained the same at 26.21% when pulling 757bc6c81c4b2804c76b8ca51f7228e409c4ba40 on makeRead into 07cf23f4c971cf0a23acb3bde54c98d604eb5f1f on master.


Uom - SI based parsing

This allows to use SI-based ephemeris data using the uom crate. #4
Feature was implemented with feature flags, so si will allow SI units.
Uom units are f32 based. It might be nice to have f64 for SI and non-SI format.
Maybey a restructuring of the repo to have a similar structure like uom?
With the addition of a f64 feature flag with f32 as default.
Version is not yet bumped.

I don't really like that everything is just duplicated now. :)
How about putting all types into separate, feature controlled modules? Something like:
#[cfg(feature = "si")]
mod units {
  type Velocity = uom::blabla;
}

#[cfg(not(feature = "si"))]
mod units {
  type Velocity = f64;
}

While this seems to work, and only requires minor changes with parsing, the docs are dependent on the feature flag.
So depending which flag is used for the creation of the documentation, the docs will be incorrect for the other option.
For now I keep the current approach, but will try to minimize code duplication.

Currently there is no dedicated parser for the SI units. the client functions just use the core functions and then converts the default units to SI. A similar approch could be used for a dedicated parse, but is not useful currently, and thus only present as a comment in si::ephemeris.
There is still a small amount of code duplication, but I believe it is much better now.
Propsed approach for f64:
pub struct EphemerisVectorItem<T> {
    pub time: DateTime<Utc>,
    pub position: [T; 3],
    pub velocity: [T; 3],
}

Cool, thanks.


Updated Azure Cosmos DB branding and links

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs-ref-conceptual/java-sdk-azure-install.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

@rloutlaw - Can you review & merge? Do these get staged?

They only get staged when making changes from a branch in the repo into another branch-PRs from forks don't get merged.


Disable Youtube shortcut key for "f"

Is your feature request related to a problem? Please describe.
After installing Vimium when I press "f" when visiting Youtube it would also trigger the youtube shortcut which will make the video fullscreen. That is very annoying.
Describe the solution you'd like
It would be great if Vimium disables youtube shortcut for "f".
Describe alternatives you've considered
An alternative that will work for other websites too is that Vimium should include the feature which enables us to customize its shortcuts then I could map Vimium shortcut to another key.
Thank you, Hung

+1000

This issue should be resolved in #176.


An error reminder dialog still pops up when opening Storage Explore (.tar.gz file) with Linux dependencies installed

Storage Explorer Version: 1.20.0-dev
Build Number: 20210628.1
Branch: main
Platform/OS: Linux Ubuntu 20.04
Architecture: x64
How Found: From running test case
Regression From: Previous release (1.20.0)
Steps to reproduce

Open a clean Linux machine with OS version Ubuntu 20.04
Download Linux signed build as tar.gz file then extract it.
Open terminal -> Navigate to where the Storage Explorer executable is located.
Open Storage Explorer by run './StorageExplorer'.
An error reminder dialog pops up.
Install the dependencies by running the below commands:
wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb;
sudo dpkg -i packages-microsoft-prod.deb;
sudo apt-get update;
sudo apt-get install -y apt-transport-https &&
sudo apt-get update &&
sudo apt-get install -y dotnet-runtime-2.1
Go to terminal -> Run './StorageExplorer'.
Check no error reminder dialog pops up.

Expect Experience
No error reminder dialog pops up.
Actual Experience
The error reminder dialog still pops up.

@v-xianya for 1.20, we'll be switching to .NET Core 3.1. I need to update the string in this dialog. Will use this issue to track that.

Hi @MRayermannMSFT Thank you for the updates. This issue doesn't reproduce after installing ,NET Core 3.1.


Restarting configuration-service or api-service pods breaks nginx gateway

After restarting (e.g., by updating an image) of either the configuration-service, or the api-service, the respective service cannot be reached via the nginx-gateway anymore. Restarting the nginx gateway pod seems to fix that problem.
Additional Info:
nginx-gateway log:
2020/04/16 12:21:53 [info] 6#6: *181 epoll_wait() reported that client prematurely closed connection, so upstream connection is closed too while connecting to upstream, client: <IP_ADDRESS>, server: _, request: "GET /configuration-service/swagger-ui/swagger.yaml HTTP/1.1", upstream: "http://<IP_ADDRESS>:8080/swagger-ui/swagger.yaml", host: "api.keptn.<IP_ADDRESS>.xip.io"
<IP_ADDRESS> - - [16/Apr/2020:12:21:53 +0000] "GET /configuration-service/swagger-ui/swagger.yaml HTTP/1.1" 499 0 "-" "swagger-validator"
2020/04/16 12:22:48 [error] 6#6: *173 upstream timed out (110: Connection timed out) while connecting to upstream, client: <IP_ADDRESS>, server: _, request: "GET /configuration-service/swagger-ui/swagger.yaml HTTP/1.1", upstream: "http://<IP_ADDRESS>:8080/swagger-ui/swagger.yaml", host: "api.keptn.<IP_ADDRESS>.xip.io", referrer: "http://api.keptn.<IP_ADDRESS>.xip.io/swagger-ui/?urls.primaryName=configuration-service"

I would like to move this issue back into the Backlog, with the following information:
nginx resolves the domains (like configuration-service) at the start of nginx. If we re-deploy said service (e.g., using skaffold), the IP of the services changes (I can not rule out that this could also happen with some other built-in methods of Kubernetes).
nginx does never re-resolve the domain, instead it logs the error message as printed above.
After some research, I found out that it is possible to overwrite this behaviour by

using fqdn, e.g., configuration-service.keptn.svc.cluster.local

using variables for the hostnames:
        set $configurationservice http://configuration-service.keptn.svc.cluster.local:8080;
        set $apiservice http://api-service.keptn.svc.cluster.local:8080;

configuring the built-in Kubernetes resolver kube-dns (resolver <IP_ADDRESS>; or resolver kube-dns.kube-system.svc.cluster.local;) // this is the IP of the nameserver used in /etc/resolv.conf, but I think resolver kube-dns.kube-system.svc.cluster.local; should be correct.

For instance, the following nginx configuration seems to solve the problem
  nginx.conf: |
    user nginx;
    worker_processes  3;
    error_log /dev/stdout info;
    events {
      worker_connections  10240;
    }

    http {
      log_format  main
              'remote_addr:$remote_addr\t'
              'time_local:$time_local\t'
              'method:$request_method\t'
              'uri:$request_uri\t'
              'host:$host\t'
              'status:$status\t'
              'bytes_sent:$body_bytes_sent\t'
              'referer:$http_referer\t'
              'useragent:$http_user_agent\t'
              'forwardedfor:$http_x_forwarded_for\t'
              'request_time:$request_time';
      access_log /dev/stdout;

      # https://www.nginx.com/blog/websocket-nginx/
      map $http_upgrade $connection_upgrade {
        default upgrade;
        '' close;
      }

      resolver <IP_ADDRESS>;

      server {
          listen       80;
          server_name  _;

          set $configurationservice http://configuration-service.keptn.svc.cluster.local:8080;
          set $apiservice http://api-service.keptn.svc.cluster.local:8080;

          location /configuration-service/swagger-ui/swagger.yaml {
            # auth via backend (if the subrequest returns a 2xx response code, the access is allowed. If it returns 401 or 403,
            # the access is denied) before we store the file
            # see http://nginx.org/en/docs/http/ngx_http_auth_request_module.html

            rewrite /configuration-service/(.*) /$1  break;
            proxy_pass         $configurationservice;
            proxy_redirect     off;
            proxy_set_header   Host $host;
            proxy_http_version 1.1;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
          }

          location  /configuration-service {
            # auth via backend (if the subrequest returns a 2xx response code, the access is allowed. If it returns 401 or 403,
            # the access is denied) before we store the file
            # see http://nginx.org/en/docs/http/ngx_http_auth_request_module.html
            auth_request               /v1/auth;

            rewrite /configuration-service/(.*) /$1  break;
            proxy_pass         $configurationservice;
            proxy_redirect     off;
            proxy_set_header   Host $host;
            proxy_http_version 1.1;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
          }

          # This is a legacy endpoint which allows to upload project resources using the url of the api.
          # Note that this endpoint is deprecated and will be removed with v1. Hence, please directly use
          # the api of the configuration-service
          location ~* /v1/project/[a-z0-9-]+/resource {
            # auth via backend (if the subrequest returns a 2xx response code, the access is allowed. If it returns 401 or 403,
            # the access is denied) before we store the file
            # see http://nginx.org/en/docs/http/ngx_http_auth_request_module.html
            auth_request               /v1/auth;

            rewrite /configuration-service/(.*) /$1  break;
            proxy_pass         $configurationservice;
            proxy_redirect     off;
            proxy_set_header   Host $host;
            proxy_http_version 1.1;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
          }

          # This is a legacy endpoint which allows to upload stage resources using the url of the api.
          # Note that this endpoint is deprecated and will be removed with v1. Hence, please directly use
          # the api of the configuration-service
          location ~* /v1/project/[a-z0-9-]+/stage/[a-z0-9-]+/resource {
            # auth via backend (if the subrequest returns a 2xx response code, the access is allowed. If it returns 401 or 403,
            # the access is denied) before we store the file
            # see http://nginx.org/en/docs/http/ngx_http_auth_request_module.html
            auth_request               /v1/auth;

            rewrite /configuration-service/(.*) /$1  break;
            proxy_pass         $configurationservice;
            proxy_redirect     off;
            proxy_set_header   Host $host;
            proxy_http_version 1.1;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
          }

          # This is a legacy endpoint which allows to upload service resources using the url of the api.
          # Note that this endpoint is deprecated and will be removed with v1. Hence, please directly use
          # the api of the configuration-service
          location ~* /v1/project/[a-z0-9-]+/stage/[a-z0-9-]+/service/[a-z0-9-]+/resource {
            # auth via backend (if the subrequest returns a 2xx response code, the access is allowed. If it returns 401 or 403,
            # the access is denied) before we store the file
            # see http://nginx.org/en/docs/http/ngx_http_auth_request_module.html
            auth_request               /v1/auth;

            rewrite /configuration-service/(.*) /$1  break;
            proxy_pass         $configurationservice;
            proxy_redirect     off;
            proxy_set_header   Host $host;
            proxy_http_version 1.1;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
          }

          # special configuration for /v1/auth to always use POST requests
          location /v1/auth {
            rewrite /v1/auth/(.*) /$1  break;

            proxy_method POST;
            proxy_pass_request_body off;

            proxy_pass $apiservice;
            proxy_http_version 1.1;
            proxy_pass_request_headers on; # only pass reuquest headers to this service
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
          }

          location /v2 {
            # ToDo
            rewrite /v2/(.*) /$1  break;
          }

          # default location: use existing api
          location / {
            proxy_pass $apiservice;
            proxy_http_version 1.1;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            # https://www.nginx.com/blog/websocket-nginx/
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "Upgrade";
            proxy_set_header Host $host;
          }
      }
    }

@agrimmer and @bacherfl can you two take a look at this again, and also verify that resolver kube-dns.kube-system.svc.cluster.local; works on OpenShift (MiniShift)?

Thanks for the update! We can have a look after the release of Keptn 0.6.2.

I found out that the NGINX gateway forwards HTTP traffic even after a restart of e.g. the api-service.
Hence, I've also added an HTTPS port in the api-gateway-nginx which fixes this issue.

It seems like this issue is triggered by the recreation of the clusterIP service by skaffold. Basically, the IP of a clusterIP Service should stay the same during the lifetime of a service (see https://kubernetes.io/docs/concepts/services-networking/connect-applications-service/ , "Creating a Service"). Thus, this behaviour should not occur in production environments.

Thanks @thschue for the explanation!
I'll close this issue as it does not affect us during production use at all. For development use the work-around is to restart the api-gateway-nginx pod.


Move Wiki contents and update link in Readme

The link to the Wiki in the pre-requisites section points to the old repo, when the content is moved we should also update the link.
https://github.com/microsoft/app-camp/blob/eb7a4f6e30d78df0da1e69769964ac4302c1b154/README.md?plain=1#L77

Done


Create suu.txt

Southern Utah University

@supetorus I am sorry for a delay with processing your request. Could you please change it:
For suu.edu domain correct path will be lib/domains/edu/suu.txt. There is no domain suu.us, which you have suggested to add. As soon as you change the request, I merge it. Thank you!

edu/suu.txt was already added so i'm closing this request


Vector2 reflection amendment

Formula for Vector2 reflection with respect to a normal was incorrect. Corrected from:

to:

Where r is the reflected vector, d the incoming vector and n the normal vector of the surface.

Seems duplicate of #371 but there this is fixed for both Vector2 and Vector3, all though this change is more in line with the code in the Godot core.

Seems duplicate of #371 but there this is fixed for both Vector2 and Vector3, all though this change is more in line with the code in the Godot core.

I don't think duplicate is the correct word but I will drop this request in favour of #371 as it uses my proposed solution but for both 2D and 3D vectors.


Improve code documentation

This should include inline documentation as well as documentation on GitHub.

Creating Code Documentation page.

That page has been completed. I'm closing this as I'm satisfied of that change as a major improvement. I have a few other changes I may want to make, but don't want to spend more time working out the formatting. That page should also be kept up to date as a natural portion of the tasks as they get completed.


Create documentation on enabling/disabling Packet Broker Access

Summary

Document what TTS deployments have peering enabled.
Document how to enable/disable peering

Why do we need this ?
Custers and users don't know if it's enabled.
What is already there? What do you see now?
Only generic info on the Packet Broker: https://www.thethingsindustries.com/docs/reference/packet-broker/
What is missing? What do you want to see?

Documentation on what TTS deployments have peering enabled by default
Documentation on how to enable/disable peering

How do you propose to document this?
Draw out all scenarios and write the docs.
TTI Cloud <--> TTI Cloud
TTI Cloud <--> TTN V3
TTN V2 --> TTI Cloud
TTN V2 --> TTN V3

This issue has been mentioned on Discuss The Things Industries. There might be relevant details there:
https://discuss.thethingsindustries.com/t/peering-from-tti-cloud-to-ttn-v3/465/1


Make compile.schema lenient

It appears that compile.schema errors out with Cannot infer type when it finds null in any of the field. This renders the function somewhat unusable. Couldn't the function leave null as it is and return the rest of the schema instead?

Yea good idea. Wanna PR that change? The name of this function is now inferRawSchema btw

@aneophyte -I will implement this request/feature. Just to be clear on the requirement, can you please provide a sample input and the expected output?

The library has changed quite a bit since I last posted this issue. But the following is probably what I want:
Input:
    "debug": "on",
    "window": {
        "title": "Sample Konfabulator Widget",
        "name": "main_window",
        "width": 500,
        "height": 500
    },
    "image": {
        "src": "Images/Sun.png",
        "name": "sun1",
        "hOffset": 250,
        "vOffset": 250,
        "alignment": null
    },
    "text": {
        "data": "Click Here",
        "size": 36,
        "style": "bold",
        "name": "text1",
        "hOffset": 250,
        "vOffset": 100,
        "alignment": "center",
        "onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;"
    }
}}

Output:
   { debug: 'string',
     window:
      { title: 'string',
        name: 'string',
        width: 'number',
        height: 'number' },
     image:
      { src: 'string',
        name: 'string',
        hOffset: 'number',
        vOffset: 'number',
        alignment: 'null' // <--- Echo this, instead of crashing },
     text:
      { data: 'string',
        size: 'number',
        style: 'string',
        name: 'string',
        hOffset: 'number',
        vOffset: 'number',
        alignment: 'string',
        onMouseUp: 'string' } } }```

By the way, I have not had the time to check the newer version. I am currently using version 1.1.0.

Thank you @aneophyte -I will try to get a PR through ASAP. I am currently moving cities and need to pack an entire house, thus it might take me a little bit longer.

With the latest version, null is supported. So I think this can be closed?


feat: Add truthy check for binary operators and & or #10

@kingwill101 can you change the repo settings so that you can be added as reviewer pls 😊

@kingwill101 can you change the repo settings so that you can be added as reviewer pls 😊

not seeing a setting for that

@kingwill101 all good, I guess this is only available working in teams then


Merge pull request #7 from unitedstates/master

amy update

You shouldn't need to do this, @amy-chinlai. To prevent the merge commits in your fork, on the web version, merge your update PR into your fork with the "rebase" option. On with the command line version of Git, see https://help.github.com/articles/syncing-a-fork/.


[feature] Rate limit outgoing http requests

Is your feature request related to a problem? Please describe.
GUAC pulls data from deps.dev, osv.dev, and soon ClearlyDefined. With a large graph, an instance might pull a lot of data. It would be best to rate limit outgoing requests.
Describe the solution you'd like
This blog covers a simple design: https://medium.com/mflow/rate-limiting-in-golang-http-client-a22fba15861a
using https://pkg.go.dev/golang.org/x/time/rate
We should make an http.RoundTripper to hande this and stack with other middleware for all GUAC outgoing clients. Similar to the existing user agent middleware:
https://github.com/guacsec/guac/blob/82e3f8030ecfe6276c965d9a8ab225cee432d944/pkg/version/version.go

Note: ClearlyDefined has a 2K request per minute limit: https://docs.clearlydefined.io/docs/get-involved/using-data


Update server-config.md

Please sign your commits following these rules:
https://github.com/moby/moby/blob/master/CONTRIBUTING.md#sign-your-work
The easiest way to do this is to amend the last commit:
$ git clone -b "patch-1" git@github.com:scjane/notary.git somewhere
$ cd somewhere
$ git commit --amend -s --no-edit
$ git push -f

Amending updates the existing PR. You DO NOT need to open a new one.

Can one of the admins verify this patch?

jenkins, ok to test

Thanks @scjane!  Would you mind please signing both commits with git commit -s?  Other than that, LGTM to merge once these are green :)

docs changes LGTM, agree with @cyli that we'll need to get these commits signed before final approval merge.  Thanks @scjane!

@scjane please follow the instructions from @GordonTheTurtle's comment to sign both your commits then we'll be happy to merge this.


Ctrl+P does not wait for file list to update before accepting Enter key

Does this issue occur when all extensions are disabled?: Presumably, but I am using a remote environment which is an extension as far as I'm aware.

VS Code Version: 1.70.2
OS Version: Windows_NT x64 10.0.19044

Steps to Reproduce:

Connect to a remote SSH environment that has some latency.
Use CTRL+P and type in the name of a file e.g. "my_file.cpp".
Hit Enter before the UI has updated with the list of files.

VS Code will not wait until the file list has updated before accepting the Enter key. Thus, it will often open a random file that has nothing to do with what's searched.

Thanks for creating this issue! It looks like you may be using an old version of VS Code, the latest stable release is 1.71.0. Please try upgrading to the latest version and checking whether this issue remains.
Happy Coding!

@VSCodeTriageBot
This problem remains on version 1.71.0

It does when you start typing.

I was assuming the issue is that you pick an entry from the history which appears instantly, what happens now that no history entries are there when you press enter?

Both results should appear at the same time no? Are you saying the results change after some results appeared?

@bpasero After typing "foo", the results update (these are the results seen in the screenshot). After typing "_b" after, the results do not update quickly enough, and so "foo.cpp" remains selected instead of "foo_bar.cpp". Thus, the wrong file gets chosen when I hit Enter.

@bpasero
I think there needs to be some mechanism to keep track of whether the list is "up-to-date" or "dirty". The action of the Enter key would have to be delayed until the list next becomes "up-to-date".
Emptying the list may degrade the user experience. Also, what happens if Enter is pressed during this time? Would it be silently ignored? If so, that would be almost just as annoying. It is essential that the Enter key still works in my opinion - just delayed.

This feature request is now a candidate for our backlog. The community has 60 days to upvote the issue. If it receives 20 upvotes we will move it to our backlog. If not, we will close it. To learn more about how we handle feature requests, please see our documentation.
Happy Coding!

This feature request has not yet received the 20 community upvotes it takes to make to our backlog. 10 days to go. To learn more about how we handle feature requests, please see our documentation.
Happy Coding!

:slightly_frowning_face: In the last 60 days, this feature request has received less than 20 community upvotes and we closed it. Still a big Thank You to you for taking the time to create this issue! To learn more about how we handle feature requests, please see our documentation.
Happy Coding!