How do I use clipboard.js with a hidden button?

I would like to use clipboard.js with a trigger button that isn't visible until the user mouseovers a div wrapping the button and input:

        <input id="Test" type="text" class="readonlybox" value="Test" readonly>
        <button type="button" class="btn hidden" onclick="clipSuccess(event, this)" data-clipboard-target="#Test">

        </button>

        var mousedOver = false;

        new ClipboardJS('btn');

        var codeCopyMouseOver = function (event) {
        		console.log("moused over");
            var button = $(event.currentTarget).find(".btn");
            button.removeClass("hidden");
            mousedOver = true;
        };

        var codeCopyMouseOut = function (event) {
        		console.log("moused out");
            var button = $(event.currentTarget).find(".btn");
            button.addClass("hidden");
            button.find("i.fa-clipboard").removeClass("hidden");
            button.find("i.fa-check").addClass("hidden");
            button.removeClass("btn-success");
            mousedOver = false;
        };

        function clipSuccess(event, target) {
            console.log("copy clicked");
            event.stopPropagation();
            $(target).find("i").toggleClass("hidden");
            $(target).addClass("btn-success");
            setTimeout(function () {
                $(target).find("i.fa-clipboard").removeClass("hidden");
                $(target).find("i.fa-check").addClass("hidden");
                $(target).removeClass("btn-success");
            }, 1500);
        }

Unfortunately I can't seem to get it to copy to the clipboard.
JSFiddle

Okay this looks like it has nothing to do with the button being hidden; instead it seems to be because I'm using my own onclick event. The strange thing is that I'm doing that very same thing on another page of my site and it works, but it does not use a hidden button.

I tried using the clipboard success event but it doesn't seem to fire: JSFiddle.

Okay I managed to get this to work: JSFiddle.


Remove deprecated selectors, as suggested by Deprecation Cop...

This removes the following warning:
Use the atom-text-editor tag instead of the editor class.

:raised_hands: Excellent, thanks!


Can not translate the errors, errors method does not exist

I want to translate the error. Just the method to get the pydantic errors does not exist.
I tried:
    loader = JsonLoader(PROJECT_PATH / "translations")
    tr = PydanticI18n(loader)

    with pytest.raises(ValidationError) as e:
        Configuration(**config)
    translated_errors = tr.translate(e.errors(), locale="de_DE")

Returns the error: AttributeError: 'ExceptionInfo' object has no attribute 'errors'
Environment

OS: Windows
pydantic-i18n version 0.4.4:
pydantic version: 2.8.2
Python version: 3.9.13

In Pytest:
e.value.errors() is needed!

Hello @sehHeiden So what is your issue now?
Yes, you need to use the e.value instead of just e to access the exception object and then you can use the errors method.

Hey @sehHeiden It's related more to the pytest than to the pydantic-i18n I think. Here is the description of this value attribute usage:
https://docs.pytest.org/en/7.1.x/how-to/assert.html#assertions-about-expected-exceptions


Improve the UI for the "Leave a review" section

The current "Leave a review" section needs a UI overhaul to enhance user experience. Suggested improvements include:
Make the star rating interactive with hover effects.
Expand the comments field with a placeholder text.
Style the display of reviews in a card format with user info and timestamps.
Add a visually appealing submit button with feedback confirmation.
@Soujanya2004
I'd like to work on improving the review sections UI with hover effects. Please assign this issue to me.

@dipexplorer please make a pr and then raise an issue, so that I can close similar issues


fix: update constructor helper

@ChrisLabattD2L noticed that since switching from @open-wc/testing to @brightspace-ui/testing, repos using the constructor test helper now fail to import @brightspace-ui/testing because it's only a devDependency. This would have also been a problem previously, but all repos using it must have also depended on @open-wc/testing.
Longer term, I think this helper should just move over to @brightspace-ui/testing, but that will require switching all consumers over to it... of which there are >450.

Ugh, license checker.

Hmm, this is gonna a mess in BSI I think - maybe we just keep this one place using @open-wc's export for now, until everyone's switched to using it from testing?

Yeah agreed -- already pushed that change, which seems to be the least bad of all the bad options.


How to show Start Time and End time for each Scenario

I am using webdriverIO 6 with cucumber. So currently I am able to show the overall Start time and End Time using custom Data in Overall report.
But is there any option I can show the start time and end time for each feature/scenario.  Its like :
When I run 10 scenarios as a suite. In overall Page, I can show - Execution Start Time and Execution End Time.
But when we click and open each Feature Report, there I would like to show the start time and end time for each feature.
Please let me know if there is any option for that.
Environment (please complete the following information):

multiple-cucumber-html-reporter:1.17.0
Node.js version: 12.0
NPM version: 6.14
Platform name and version:Ubuntu
Cucucmber version: 6.0.5

Thanks for submitting an issue, I need to look into it when I have some more time

Thanks, as it would be a nice feature to see the Start time, end time also. Currently we are showing duaration, but if we have start time and end time, it would be easily to check  server logs based on failure timing

Hi Guys I have some question How I can to see Start time and End time in my multiple-cucumber-html-reporter, normally I'm using Cypress , for my report multiple-cucumber-html-reporter, my end time working but the end time is not, maybe you have some suggestions.

const report = require("multiple-cucumber-html-reporter");
const fs = require("fs-extra");
const path = require("path");
const chalk = require("chalk");
const args = process.argv;
const cucumberJsonDir = path.resolve(process.cwd(), "cypress/cucumber-json");
const cucumberReportFileMap = {};
const cucumberReportMap = {};
const jsonIndentLevel = 2;
const htmlReportDir = path.resolve(process.cwd(), "cypress/cucumber-json");
const screenshotsDir = path.resolve(process.cwd(), "cypress/screenshots");
const reportPath = "./cypress/cucumber-html-reporter/";
getCucumberReportMaps();
addScreenshots();
generateReport();
function getCucumberReportMaps() {
filenames = fs.readdirSync(cucumberJsonDir);
const files = fs.readdirSync(cucumberJsonDir).filter((file) => {
return file.indexOf(".json") > -1;
});
files.forEach((file) => {
const json = JSON.parse(fs.readFileSync(path.join(cucumberJsonDir, file)));
if (!json[0]) {
return;
}
const [feature] = json[0].uri.split("/").reverse();
cucumberReportFileMap[feature] = file;
cucumberReportMap[feature] = json;
});
}
function addScreenshots() {
if (fs.existsSync(screenshotsDir)) {
//only if screenshots exists
const prependPathSegment = (pathSegment) => (location) =>
path.join(pathSegment, location);
const readdirPreserveRelativePath = (location) =>
  fs.readdirSync(location).map(prependPathSegment(location));

const readdirRecursive = (location) =>
  readdirPreserveRelativePath(location).reduce(
    (result, currentValue) =>
      fs.statSync(currentValue).isDirectory()
        ? result.concat(readdirRecursive(currentValue))
        : result.concat(currentValue),
    []
  );

const screenshots = readdirRecursive(path.resolve(screenshotsDir)).filter(
  (file) => {
    return file.indexOf(".png") > -1;
  }
);

const featuresList = Array.from(
  new Set(screenshots.map((x) => x.match(/[\w-_.]+.feature/g)[0]))
);

featuresList.forEach((feature) => {
  screenshots.forEach((screenshot) => {
    const regex =
      /(?<=--\ ).+?((?=\ (example\ #\d+))|(?=\ (failed))|(?=.\w{3}))/g;
    const [scenarioName] = screenshot.match(regex);

    var filename = screenshot.replace(/^.*[\\\/]/, "");

    const featureSelected = cucumberReportMap[feature][0];

    let myScenarios = [];

    cucumberReportMap[feature][0].elements.forEach((item) => {
      let fullFileName = featureSelected.name + " -- " + item.name;
      if (filename.includes(fullFileName)) {
        myScenarios.push(item);
      }
    });

    if (!myScenarios) {
      return;
    }
    let foundFailedStep = false;
    myScenarios.forEach((myScenario) => {
      if (foundFailedStep) {
        return;
      }
      let myStep;
      if (screenshot.includes("(failed)")) {
        myStep = myScenario.steps.find(
          (step) => step.result.status === "failed"
        );
      } else {
        myStep = myScenario.steps.find(
          (step) => step.result.status === "passed"
        );
      }
      if (!myStep) {
        return;
      }
      const data = fs.readFileSync(path.resolve(screenshot));
      if (data) {
        const base64Image = Buffer.from(data, "binary").toString("base64");
        if (!myStep.embeddings) {
          myStep.embeddings = [];
          myStep.embeddings.push({
            data: base64Image,
            mime_type: "image/png",
            name: myStep.name,
          });
          foundFailedStep = true;
        }
      }
    });
    //Write JSON with screenshot back to report file.
    fs.writeFileSync(
      path.join(cucumberJsonDir, cucumberReportFileMap[feature]),
      JSON.stringify(cucumberReportMap[feature], null, jsonIndentLevel)
    );
  });
});

}
}
function generateReport() {
if (!fs.existsSync(cucumberJsonDir)) {
console.warn("REPORT CANNOT BE CREATED!");
} else {
//  var runInfos = JSON.parse();
report.generate({
jsonDir: cucumberJsonDir,
reportPath: htmlReportDir,
displayDuration: true,
durationInMS: true,
openReportInBrowser: true,
useCDN: true,
pageTitle: "Customer Admin",
reportName: System-Test Report - ${new Date().toLocaleString()},
metadata: {
app: {
name: "Simulacion de Credito Online",
version: "1",
},
browser: {
name: "Chrome",
},
device: "Cypress",
platform: {
name: "Windows",
},
},
customData: {
title: "Run info",
data: [
{ label: "Project", value: "Simulacion de Credito" },
{ label: "Release", value: "2" },
{
label: "Execution Start Time",
// value: ${new Date().toLocaleTimeString()},
value: new Date().toLocaleTimeString(),
},
{ label: "Execution End Time", value: new Date().toLocaleString() },
],
},
});
}
}
this method I used for cucumber -html-report.js

Sorry for reviving this again.
@Dushanbe24 thanks for the code snippet. I've tried it, but it does not give any execution start/end time. it just brings the current time the report was generated for both values. Any idea how to get the actual start and end time of the execution for the whole suite?

I found here an example how I did it: https://github.com/thierryiseli/javascript-demo-todolist-cypress, but it's really outdated...
I tried to run it with the newest versions, but not really successful.


Miscellaneous

Search for FIXME in the code for other small improvements here and there.

Moved to new repository: https://github.com/GCArullo/JenpyROQ/issues


Indirect function call

var fn = myFunc
fn()

🎉
https://github.com/DQNEO/babygo/commit/df4562f017be6879933f2e9e2a36d83b3a8e443b


Some buttons on nzbget are hard to see if it is toggled

NZBGET 21. nzbget-dark
With nzbget-dark it is hard to see if a button is active or not. btn-primaryand btn are very similar.
Happens to all buttons when editing a item that is in the download queue, or in the history.
Without theme.

With theme.

cache? https://github.com/gilbN/theme.park/blob/8772a7e6f4c532643d97b12e7b1512ab49d19a77/CSS/themes/nzbget/dark.css#L20

I see it now

@Roxedus  try now. https://github.com/gilbN/theme.park/commit/1cf37e6106ee6ddfc9702ff44108a1d72547a47c

not quite, looks like you need a #HistoryEdit_ParamData input.btn.btn-primary selector too

clear cache

works


Rosenbrock parameter updates

Should the three_stage_rosenbrock() function be a static class function that returns a RosenbrockSolverParameters object that could then be modified by a user before passing it to the RosenbrockSolver constructor?
(But, the N_ data member of RosenbrockSolverParameters should probably always be calculated based on the System.StateSize() and the number of grid cells, and shouldn't be editable by users.)

I don't think so. Those parameters are all calculated based on the number of stages. The only reason to make them editable is if someone wanted to test out a configuration for a new number of stages that they've made


Write some tests

b373284476afddd53e63c352fba808b032b3f094 adds a framework...
Now to actually write some tests!

39d8029d220914746d6df7b0653a998be3841d6a first test written, let the fun begin!

223d33d877eee40377c10bf8c710221806b9e190 discovered a bug in topHand, for example with this hand
[Card Two Heart, Card Four Club, Card Three Diamond, Card Four Spade, Card Six Diamond, Card Five Spade, Card Ace Diamond]
topHand will classify it as a two pair instead of a straight

223d33d discovered a bug in topHand, for example with this hand
[Card Two Heart, Card Four Club, Card Three Diamond, Card Four Spade, Card Six Diamond, Card >Five Spade, Card Ace Diamond]
topHand will classify it as a two pair instead of a straight

Fixed by 1774b6911a3797e39d876acdb2f1aafa80f5fe49

Think we're done for now


create login popup component

create login popup component

I would like to work on this issue but can you explain me in detail what kind of login popup you want?

@arteevraina already we have login component. so we can utlize and will create the login popup component and you will select any popup component, but makes sense.

Hi, developed the login popup component but cant push due to permission error.
Any tips to push and make a pull request?

@sf3ris Did you fork this https://github.com/10secondsofcode/coding-ai repo and you will added your changes and will create the PR from Your repo to coding-ai repo.

@elangovanshanthi, cloned the repository instead forking it.
Going to fork and apply those changes already done as soon as i got home.
Thanks.

I would like to work on this issue . Can I take this issue?

I would like to work on this issue . Can I take this issue?

sure @myungwoo-Y


dat.GUI style constraint shorthand

At the moment, adding constraints to the dat.GUI style item is pretty redundant
var gui = oui.datoui();
oui.annotate({min: 0, max: 5})(gui.add( settings, 'speed'), 'speed');

I would recommend using an optional third argument which is closer to the dat.GUI api like this:
var gui = oui.datoui();
gui.add( settings, 'speed', {min: 0, max: 5} );

Yep agreed. Constraints object shoulde be the same format as those passed to annotate. This will also support other controllers

datoui.add now accepts a constraint object as a third param. This is the same as would be passed to @annotate.
Fixed in v0.0.14


AWS Amplify Pull not updating appsync changes

#1. I changed the schema of Appsync in the cloud(not local) which is connected to Amplify. and I want to pull the resolvers and schema of Appsync into my local but it says cloud has no change.
#2. I want to remove Authentication in Amplify and want to add a new one or change Cognito but cant'. The others are saying that the solution of this case, try to change cognito values in aws-exports.js (which is auto-generated). I think this works but if I pull amplify again, I need to change manually again and again.
In the second problem, I can remove by command "amplify auth remove" but I need to pull the latest environment from cloud, but it says no change and I remove auth and push to the cloud. then everything I work on the cloud are gone.

Hello @ncohen17
amplify pull pulls down backend environment changes from the cloud and updates the local environment. Changes made outside of the amplify project are not pulled in.
Docs here: https://docs.amplify.aws/cli/start#amplify-pull
Closing as duplicate of #4260

Hello @SwaySway ,
What about the second problem ?

@SwaySway
are you available to discuss this privately ?

In the second problem, I can remove by command "amplify auth remove" but I need to pull the latest environment from cloud, but it says no change and I remove auth and push to the cloud. then everything I work on the cloud are gone.

In the second problem, I can remove by command "amplify auth remove" but I need to pull the latest environment from cloud, but it says no change and I remove auth and push to the cloud. then everything I work on the cloud are gone.

The changes made in the cloud would not be pulled since Amplify is keep a tracking of the changes made in the backend environment. Could you elaborate on the usecase you are looking for when running amplify auth update? Are you looking at importing a different cognito userpool?

How to force the backend to be updated with changes on the cloud then?
I have opened an issue days ago that is blocking my deployment, but I barely got any response, so I'm commenting here because the response here might help me.
My backend is pulling some userPoolClientId that doesn't exist anymore, and then it is making any push to fail.
This is the issue https://github.com/aws-amplify/amplify-cli/issues/4233
So I think it should have a way to update the backend with up-to-date information from your cloud, even if it is a "hack" way to do it.


SB-15106

1: Scheduler job time for shadow DB migration changed to 1 hour

Codecov Report

Merging #666 into release-2.4.0 will not change coverage.
The diff coverage is n/a.

@@               Coverage Diff                @@
##             release-2.4.0     #666   +/-   ##
================================================
  Coverage            36.42%   36.42%
  Complexity             781      781
================================================
  Files                  137      137
  Lines                 8929     8929
  Branches               955      955
================================================
  Hits                  3252     3252
  Misses                5349     5349
  Partials               328      328

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update dc2f121...e653f6f. Read the comment docs.


Flat index benchmark

Provide a benchmark for Flat index
Implement Apple Accelerate / Blas and NEON SIMD versions of L2 distance
Currently BLAS only works on MacOS + Accelerate

Flat index run on SIFT-1M dataset, on a M1 Macbook Air 16GB
With Blas / Apple Accelerate Framework

With hand written ARM NEON SIMD

how do we distribute this in the python package?

For macOS, we can build it with cargo release --features="blas". The other platform, release as old as usual.

that's interesting. thought those blog posts showed bigger gains

I think i did not try hard enough.


Feature/add inclusion delay column to rewards

Description
Having the inclusion delay can help identify the performance of a validator. Since Altair, the inclusion delay is now defined reflected in three flags:

Source: the attestation needs to be included within the next 5 blocks
Target: the attestation needs to be included within the next 32 blocks
Head: the attestation needs to be included within the next block

Although we already have these three flags in the database, we would also like to persist the inclusion delay to have a more specific metric about the validator performance.
Take a look at pkg>spec>metrics>state_altair.go>GetParticipationFlags where inclusion delay is calculated.
Proof of Success

I got stuck on development due to a bug encountered unrelated to this branch: #95. Will wait for @tdahar to fix this


Gulp watch + tasks

Been struggling with this since The Beginning of using Gulp
I have a watcher, and when the event happens the callback is fired
gulp.task('callback', function (cb) {
    watch('css/**/*.css', function () {
        gulp.src('css/**/*.css')
            .pipe(watch('css/**/*.css'))
            .on('end', cb);
    });
});

but really, I want to be able to run a Gulp task, before the watch callback is fired, something like this:
gulp.task('callback', function (cb) {
    watch('css/**/*.css', ['some-gulp-task'],  function () {
        gulp.src('css/**/*.css')
            .pipe(watch('css/**/*.css'))
            .on('end', cb);
    });
});

is this possibly in the works for Gulp 4 ? It would make things much more convenient for us users. Thanks!

This should already be fully supported in gulp 4 by using the gulp.series helper. I'm currently on my phone so can't give an example.

Back at a computer.  It should look something like (although I'm not sure what your watch stream is):
gulp.task('callback', function () {
    gulp.watch('css/**/*.css', gulp.series('some-gulp-task', function () {
        return gulp.src('css/**/*.css')
            .pipe(watch('css/**/*.css'))
    });
});

Oh sweet that should help a lot


Update tutorial-java-quarkus-connect-managed-identity-postgresql-data…

…base.md
Remove "install CLI edge build" because CLI has released the feature in latest version.

Learn Build status updates of commit 05a5c06:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

articles/container-apps/tutorial-java-quarkus-connect-managed-identity-postgresql-database.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the learn.microsoft.com contributor guidesPost your question in the Learn support channel

@KarlErickson

Can you review this PR?
If you approve, can you change the author and ms.author entries in the metadata to a valid value? thanks.
IMPORTANT: When this content is ready to merge, you must add #sign-off in a comment or the approval may get overlooked.

#label:"aq-pr-triaged"
@MicrosoftDocs/public-repo-pr-review-team

#sign-off

@xfz11 thanks for the update! I'll make this change in the internal repo.
#please-close

#please-close


Move all contributors to a different file

Description
Moves the all contributors section out of the README.md file so that it can be ignored by Lychee.
Fixes #3847
Type of change
Minor fix to make the CI more stable. Since the all contributors section contains links to contributors personal web profiles, they can cause lychee to fail if a users site is not working. Issues like this will become more common as we get more contributors.

[x] Bug fix (non-breaking change which fixes an issue)

Key checklist:

[x] No style issues: $ pre-commit run (or $ nox -s pre-commit) (see CONTRIBUTING.md for how to set this up to run automatically when committing locally, in just two lines of code)
[x] All tests pass: $ python run-tests.py --all (or $ nox -s tests)
[x] The documentation builds: $ python run-tests.py --doctest (or $ nox -s doctests)

You can run integration tests, unit tests, and doctests together at once, using $ python run-tests.py --quick (or $ nox -s quick).
Further checks:

[x] Code is commented, particularly in hard-to-understand areas
[x] Tests added that prove fix is effective or that feature works

The link check fails because my new file is not on develop yet. So that will be fixed after this is merged

Note: please exclude all-contributors.md from inclusion in the SDist by modifying MANIFEST.in

Note: please exclude all_contributors.md from inclusion in the SDist by modifying MANIFEST.in

Done


SHA1 file fact on macOS host (catalina)

It seems that files are always uploaded even if they exist because the fact relies on sha1sum which is not present on macOS (at least not in Catalina). There is shasum, however.
Would it be possible to support this one macOS targets by using shasum on those targets?

Interesting - it currently looks for either a sha1sum or sha1 command which definitely used to work! I can expand this to include shasum for Catalina.

Implemented @ https://github.com/Fizzadar/pyinfra/commit/2189bb7f5c611d2a37d4ecf2ca452650c518654b, will release in v1 and v0.16.3 later today.

Thanks very much taking care of this! I will test today with this version.

I just tested this on a Catalina target. The facts report the file exist, but the files are still being uploaded even if they exist and are not changed:
Operation
files.put(
    name  = 'Upload Large File'
    ,src  = 'files/file.dmg'
    ,dest = f'{workdir}/file.dmg'
    ,mode = '644'
    ,create_remote_dir = False
    ,force = False
)

Target machine before first deploy:

First deploy:
[pyinfra_cli\main] Checking potential directory:
    [pyinfra_cli\main] Checking potential directory:
    [pyinfra_cli\main] Checking potential directory: inventories
    [pyinfra_cli\main] Checking potential directory:
--> Loading config...
--> Loading inventory...
    [pyinfra_cli\inventory] Creating fake inventory...

--> Connecting to hosts...
    [pyinfra\api\connectors\ssh] Connecting to: catalinavm ({'allow_agent': True, 'look_for_keys': True, 'timeout': 10})
    [catalinavm] Connected
    [pyinfra\api\state] Activating host: catalinavm

--> Preparing operations...
    Loading: sandbox.py
    [pyinfra\api\operation] Adding operation, {'Upload Large File'}, called @ sandbox.py:59, opLines=(0, 59), opHash=3de946074b3ce4c600425a99258959345bbce0b8
    [pyinfra\api\facts] Getting fact: file (ensure_hosts: (catalinavm,))
    [pyinfra\api\connectors\ssh] Running command on catalinavm: (pty=False) sh -c 'ls -ld --time-style=long-iso /Users/harito/.machine-setup/file.dmg 2> /dev/null || ls -ld --full-time /Users/harito/.machine-setup/file.dmg 2> /dev/null || ls -lde /Users/harito/.machine-setup/file.dmg 2> /dev/null || ls -ldT /Users/harito/.machine-setup/file.dmg'
[catalinavm] >>> sh -c 'ls -ld --time-style=long-iso /Users/harito/.machine-setup/file.dmg 2> /dev/null || ls -ld --full-time /Users/harito/.machine-setup/file.dmg 2> /dev/null || ls -lde /Users/harito/.machine-setup/file.dmg 2> /dev/null || ls -ldT /Users/harito/.machine-setup/file.dmg'
[catalinavm] ls: /Users/harito/.machine-setup/file.dmg: No such file or directory
    [pyinfra\api\connectors\ssh] Waiting for exit status...
    [pyinfra\api\connectors\ssh] Command exit status: 1
    Loaded fact file: ('/Users/harito/.machine-setup/file.dmg',)
    [catalinavm] Ready: sandbox.py

--> Proposed changes:
    Groups: mac-minis / mac_minis
    [catalinavm]   Operations: 1   Commands: 2

--> Beginning operation run...
--> Starting operation: Upload Large File ('src=files/file.dmg', 'dest=/Users/harito/.machine-setup/file.dmg', 'mode=644', 'create_remote_dir=False', 'force=False')
    [pyinfra\api\operations] Starting operation Upload Large File on catalinavm
[catalinavm] file uploaded: /Users/harito/.machine-setup/file.dmg
    [pyinfra\api\connectors\ssh] Running command on catalinavm: (pty=None) sh -c 'chmod 644 /Users/harito/.machine-setup/file.dmg'
[catalinavm] >>> sh -c 'chmod 644 /Users/harito/.machine-setup/file.dmg'
    [pyinfra\api\connectors\ssh] Waiting for exit status...
    [pyinfra\api\connectors\ssh] Command exit status: 0
    [catalinavm] Success

--> Results:
    Groups: mac-minis / mac_minis
    [catalinavm]   Successful: 1   Errors: 0   Commands: 2/2

Target machine after first deploy:

Local file sha1:

Second deploy:
   [pyinfra_cli\main] Checking potential directory:
    [pyinfra_cli\main] Checking potential directory:
    [pyinfra_cli\main] Checking potential directory: inventories
    [pyinfra_cli\main] Checking potential directory:
--> Loading config...
--> Loading inventory...
    [pyinfra_cli\inventory] Creating fake inventory...

--> Connecting to hosts...
    [pyinfra\api\connectors\ssh] Connecting to: catalinavm ({'allow_agent': True, 'look_for_keys': True, 'timeout': 10})
    [catalinavm] Connected
    [pyinfra\api\state] Activating host: catalinavm

--> Preparing operations...
    Loading: sandbox.py
    [pyinfra\api\operation] Adding operation, {'Upload Large File'}, called @ sandbox.py:59, opLines=(0, 59), opHash=3de946074b3ce4c600425a99258959345bbce0b8
    [pyinfra\api\facts] Getting fact: file (ensure_hosts: (catalinavm,))
    [pyinfra\api\connectors\ssh] Running command on catalinavm: (pty=False) sh -c 'ls -ld --time-style=long-iso /Users/harito/.machine-setup/file.dmg 2> /dev/null || ls -ld --full-time /Users/harito/.machine-setup/file.dmg 2> /dev/null || ls -lde /Users/harito/.machine-setup/file.dmg 2> /dev/null || ls -ldT /Users/harito/.machine-setup/file.dmg'
[catalinavm] >>> sh -c 'ls -ld --time-style=long-iso /Users/harito/.machine-setup/file.dmg 2> /dev/null || ls -ld --full-time /Users/harito/.machine-setup/file.dmg 2> /dev/null || ls -lde /Users/harito/.machine-setup/file.dmg 2> /dev/null || ls -ldT /Users/harito/.machine-setup/file.dmg'
[catalinavm] -rw-r--r--  1 harito  staff  210653788 Jul 13 12:57 /Users/harito/.machine-setup/file.dmg
    [pyinfra\api\connectors\ssh] Waiting for exit status...
    [pyinfra\api\connectors\ssh] Command exit status: 0
    Loaded fact file: ('/Users/harito/.machine-setup/file.dmg',)
    [catalinavm] Ready: sandbox.py

--> Proposed changes:
    Groups: mac-minis / mac_minis
    [catalinavm]   Operations: 1   Commands: 2

--> Beginning operation run...
--> Starting operation: Upload Large File ('src=files/file.dmg', 'dest=/Users/harito/.machine-setup/file.dmg', 'mode=644', 'create_remote_dir=False', 'force=False')
    [pyinfra\api\operations] Starting operation Upload Large File on catalinavm
[catalinavm] file uploaded: /Users/harito/.machine-setup/file.dmg
    [pyinfra\api\connectors\ssh] Running command on catalinavm: (pty=None) sh -c 'chmod 644 /Users/harito/.machine-setup/file.dmg'
[catalinavm] >>> sh -c 'chmod 644 /Users/harito/.machine-setup/file.dmg'
    [pyinfra\api\connectors\ssh] Waiting for exit status...
    [pyinfra\api\connectors\ssh] Command exit status: 0
    [catalinavm] Success

--> Results:
    Groups: mac-minis / mac_minis
    [catalinavm]   Successful: 1   Errors: 0   Commands: 2/2

File being re-uploaded on subsequent deploy:

I am unaware if the hash reported by opHash is supposed to be the same sha1 from the file, or if any extra data is hashed with it. But if it is supposed to be the sha1 hash from the file, then it is not matching, although the fact is consistent with its opHash ( it is always 3de946074b3ce4c600425a99258959345bbce0b8), where has the result I get from shasum or sha1sum is 9cea0e7068aa32909f18d2a0edfb7335ac51220c. That last bit of info may be irrelevant to you... 🤷

@harold-b it looks like the issue here is with the file fact - it's not returning anything because the sha1 checksum isn't even attempted. I've pushed a fix for parsing that date format (https://github.com/Fizzadar/pyinfra/commit/acae97d863e66874fb7d57f08643f9194f98e4e2) and am about to release 1.0.1!

Thanks again! I will give it another try with 1.0.1 :)

Just tried it. Everything is working perfectly now.
Thank you for the quick fix!


rewrite docs to the latest version of Docus

Is your feature request related to a problem? Please describe.

Describe the solution you'd like

Describe alternatives you've considered

Additional context

Done with #56


Issue when mail stuck in queue possibly solved

I can see many past GitHub issues relating to emails getting stuck in the queue but never getting resolved because there wasn't enough information provided.
I've debugged this issue today with our cluster, and I think I know how it happens.
There seems to be an issue that mail can get stuck in a queue with no attempt because of one of the postal services have crashed for unknown reasons. The bug seems to be related to the table queued_messages column ip_address_id and possibly associated with the pool of IPs being deleted or changed.
I noticed the column ip_address_id had an ID number, I checked and these ID's no longer existed.
use postal; select * from queued_messages;

id
server_id
message_id
domain
locked_by
locked_at
retry_after
created_at
updated_at
ip_address_id
attempts
route_id
manual
batch_key

75
1
63
gmail.com
NULL
NULL
NULL
2020-01-09 22:14:55.705248
2020-01-09 22:14:55.705248
7
0
NULL
NULL
outgoing-gmail.com

94
1
82
gmail.com
NULL
NULL
NULL
2020-01-09 22:50:11.026246
2020-01-09 22:50:11.026246
7
0
NULL
NULL
outgoing-gmail.com

95
1
83
gmail.com
NULL
NULL
NULL
2020-01-09 22:50:56.221384
2020-01-09 22:50:56.221384
8
0
NULL
NULL
outgoing-gmail.com

96
1
84
gmail.com
NULL
NULL
NULL
2020-01-09 22:51:44.348692
2020-01-09 22:51:44.348692
7
0
NULL
NULL
outgoing-gmail.com

97
1
85
gmail.com
NULL
NULL
NULL
2020-01-09 22:52:13.214409
2020-01-09 22:52:13.214409
7
0
NULL
NULL
outgoing-gmail.com

I fixed this by updating the ip_address_id to NULL, the queue then sent all the messages. Which shows it was related to the ip_address_id having an incorrect ID.
use postal; update queued_messages set ip_address_id = NULL;

id
server_id
message_id
domain
locked_by
locked_at
retry_after
created_at
updated_at
ip_address_id
attempts
route_id
manual
batch_key

75
1
63
gmail.com
NULL
NULL
NULL
2020-01-09 22:14:55.705248
2020-01-09 22:14:55.705248
NULL
0
NULL
NULL
outgoing-gmail.com

94
1
82
gmail.com
NULL
NULL
NULL
2020-01-09 22:50:11.026246
2020-01-09 22:50:11.026246
NULL
0
NULL
NULL
outgoing-gmail.com

95
1
83
gmail.com
NULL
NULL
NULL
2020-01-09 22:50:56.221384
2020-01-09 22:50:56.221384
NULL
0
NULL
NULL
outgoing-gmail.com

96
1
84
gmail.com
NULL
NULL
NULL
2020-01-09 22:51:44.348692
2020-01-09 22:51:44.348692
NULL
0
NULL
NULL
outgoing-gmail.com

97
1
85
gmail.com
NULL
NULL
NULL
2020-01-09 22:52:13.214409
2020-01-09 22:52:13.214409
NULL
0
NULL
NULL
outgoing-gmail.com

Also, the following command is useful to fix locked_by, locked_at or retry_after issues at the same time.
use postal; update queued_messages set locked_by = NULL, locked_at = NULL, retry_after = NULL, ip_address_id = NULL;

This fix works like a charm!
Thanks @magicdrums
@willpower232 : this is something that should go on next release.

please hold on, tomorrow new update the code

All my emails are stuck :/ none suggestion work. Don't know what to do.

All my emails are stuck :/ none suggestion work. Don't know what to do.

yo, testing Solution code?

Yup, tried every single thing in the issues no luck:
|| web
|| Quantity            1
|| Command             bundle exec puma -C config/puma.rb
|| Respawning          5 every 3600 seconds
|| Restart mode        usr1
|| Log path            none specified
|| Address/Port        none
|| => web.1            Running      12:46        pid:27118    respawns:0      port:-        tag:-
|| worker
|| Quantity            1
|| Command             bundle exec ruby script/worker.rb
|| Respawning          5 every 3600 seconds
|| Restart mode        start-term
|| Log path            none specified
|| Address/Port        none
|| => worker.1         Running      12:46        pid:27120    respawns:0      port:-        tag:-
|| cron
|| Quantity            1
|| Command             bundle exec rake postal:cron
|| Respawning          5 every 3600 seconds
|| Restart mode        term-start
|| Log path            none specified
|| Address/Port        none
|| => cron.1           Running      12:46        pid:27122    respawns:0      port:-        tag:-
|| smtp
|| Quantity            1
|| Command             bundle exec rake postal:smtp_server
|| Respawning          5 every 3600 seconds
|| Restart mode        usr1
|| Log path            none specified
|| Address/Port        none
|| => smtp.1           Running      12:46        pid:27125    respawns:0      port:-        tag:-
|| requeuer
|| Quantity            1
|| Command             bundle exec rake postal:requeuer
|| Respawning          5 every 3600 seconds
|| Restart mode        term-start
|| Log path            none specified
|| Address/Port        none
|| => requeuer.1       Running      12:46        pid:27129    respawns:0      port:-        tag:-

Pending:

Tried everything:
postal restart, boot restart, certificate renewal, log checking, notice that this happens after we change a webhook, the webhook failed 3 times, if I am not mistaken, and now nothing works.

My case was disk space.


Add Solution types and sweeps in HFSS

Description of the feature
Currently pyaedt is not supporting all solution types and sweeps.

Steps for implementing the feature
No response
Useful links and references
No response

@pvinod13 this is very general my suggestion is tackling one by one the missed solution types.
So I would submit an issue for each solution type you find is not implemented.
for example, Hybrid HFSS is already implemented

Sure, I will add the missing solution types..!


[Device Support Request] Tuya HC-T020-ZIGBEE Series Thermostat

Problem description
Device is recognized quickly as TS0601 by _TZE200_ztvwu4nk but doesn't expose any sensors or controls
Solution description
At the bare minimum, it would be really nice to be able to read current temperature and set desired temperature, that would already allow quite a bit of automation through Home Assistant.
In an ideal scenario, exposing all the functionality available in the device (usable through the Tuya app) would be great.
Screenshots/Video
Screenshots/Video
Here is a great writeup by @notenoughtech that describes the device in some detail: https://notenoughtech.com/home-automation/a-budget-zigbee-thermostat/

Device signature
Device signature
{
  "node_descriptor": "NodeDescriptor(logical_type=<LogicalType.Router: 1>, complex_descriptor_available=0, user_descriptor_available=0, reserved=0, aps_flags=0, frequency_band=<FrequencyBand.Freq2400MHz: 8>, mac_capability_flags=<MACCapabilityFlags.FullFunctionDevice|MainsPowered|RxOnWhenIdle|AllocateAddress: 142>, manufacturer_code=4098, maximum_buffer_size=82, maximum_incoming_transfer_size=82, server_mask=11264, maximum_outgoing_transfer_size=82, descriptor_capability_field=<DescriptorCapability.NONE: 0>, *allocate_address=True, *is_alternate_pan_coordinator=False, *is_coordinator=False, *is_end_device=False, *is_full_function_device=True, *is_mains_powered=True, *is_receiver_on_when_idle=True, *is_router=True, *is_security_capable=False)",
  "endpoints": {
    "1": {
      "profile_id": "0x0104",
      "device_type": "0x0051",
      "input_clusters": [
        "0x0000",
        "0x0004",
        "0x0005",
        "0xef00"
      ],
      "output_clusters": [
        "0x000a",
        "0x0019"
      ]
    }
  },
  "manufacturer": "_TZE200_ztvwu4nk",
  "model": "TS0601",
  "class": "zigpy.device.Device"
}

Diagnostic information
Diagnostic information
{
  "home_assistant": {
    "installation_type": "Home Assistant OS",
    "version": "2023.6.3",
    "dev": false,
    "hassio": true,
    "virtualenv": false,
    "python_version": "3.11.4",
    "docker": true,
    "arch": "aarch64",
    "timezone": "America/Argentina/Buenos_Aires",
    "os_name": "Linux",
    "os_version": "6.1.21-v8",
    "supervisor": "2023.06.2",
    "host_os": "Home Assistant OS 10.3",
    "docker_version": "23.0.6",
    "chassis": "embedded",
    "run_as_root": true
  },
  "custom_components": {
    "hacs": {
      "version": "1.32.1",
      "requirements": [
        "aiogithubapi>=22.10.1"
      ]
    },
    "dahua_vto": {
      "version": "1.0.7",
      "requirements": []
    },
    "huawei_solar": {
      "version": "1.2.5",
      "requirements": [
        "huawei-solar==2.2.6"
      ]
    },
    "alarmdotcom": {
      "version": "2.2.2",
      "requirements": [
        "beautifulsoup4>=4.10.0",
        "pyalarmdotcomajax==0.4.14"
      ]
    },
    "zha_toolkit": {
      "version": "v0.8.39",
      "requirements": [
        "packaging>=20.8",
        "pytz"
      ]
    },
    "localtuya": {
      "version": "5.2.0",
      "requirements": []
    },
    "tplink_deco": {
      "version": "3.3.1",
      "requirements": [
        "pycryptodome>=3.12.0"
      ]
    },
    "dahua": {
      "version": "0.5.0",
      "requirements": []
    },
    "alexa_media": {
      "version": "4.6.4",
      "requirements": [
        "alexapy==1.26.8",
        "packaging>=20.3",
        "wrapt>=1.12.1"
      ]
    }
  },
  "integration_manifest": {
    "domain": "zha",
    "name": "Zigbee Home Automation",
    "after_dependencies": [
      "onboarding",
      "usb"
    ],
    "codeowners": [
      "@dmulcahey",
      "@adminiuga",
      "@puddly"
    ],
    "config_flow": true,
    "dependencies": [
      "file_upload"
    ],
    "documentation": "https://www.home-assistant.io/integrations/zha",
    "iot_class": "local_polling",
    "loggers": [
      "aiosqlite",
      "bellows",
      "crccheck",
      "pure_pcapy3",
      "zhaquirks",
      "zigpy",
      "zigpy_deconz",
      "zigpy_xbee",
      "zigpy_zigate",
      "zigpy_znp"
    ],
    "requirements": [
      "bellows==0.35.5",
      "pyserial==3.5",
      "pyserial-asyncio==0.6",
      "zha-quirks==0.0.100",
      "zigpy-deconz==0.21.0",
      "zigpy==0.55.0",
      "zigpy-xbee==0.18.0",
      "zigpy-zigate==0.11.0",
      "zigpy-znp==0.11.1"
    ],
    "usb": [
      {
        "vid": "10C4",
        "pid": "EA60",
        "description": "*2652*",
        "known_devices": [
          "slae.sh cc2652rb stick"
        ]
      },
      {
        "vid": "1A86",
        "pid": "55D4",
        "description": "*sonoff*plus*",
        "known_devices": [
          "sonoff zigbee dongle plus v2"
        ]
      },
      {
        "vid": "10C4",
        "pid": "EA60",
        "description": "*sonoff*plus*",
        "known_devices": [
          "sonoff zigbee dongle plus"
        ]
      },
      {
        "vid": "10C4",
        "pid": "EA60",
        "description": "*tubeszb*",
        "known_devices": [
          "TubesZB Coordinator"
        ]
      },
      {
        "vid": "1A86",
        "pid": "7523",
        "description": "*tubeszb*",
        "known_devices": [
          "TubesZB Coordinator"
        ]
      },
      {
        "vid": "1A86",
        "pid": "7523",
        "description": "*zigstar*",
        "known_devices": [
          "ZigStar Coordinators"
        ]
      },
      {
        "vid": "1CF1",
        "pid": "0030",
        "description": "*conbee*",
        "known_devices": [
          "Conbee II"
        ]
      },
      {
        "vid": "10C4",
        "pid": "8A2A",
        "description": "*zigbee*",
        "known_devices": [
          "Nortek HUSBZB-1"
        ]
      },
      {
        "vid": "0403",
        "pid": "6015",
        "description": "*zigate*",
        "known_devices": [
          "ZiGate+"
        ]
      },
      {
        "vid": "10C4",
        "pid": "EA60",
        "description": "*zigate*",
        "known_devices": [
          "ZiGate"
        ]
      },
      {
        "vid": "10C4",
        "pid": "8B34",
        "description": "*bv 2010/10*",
        "known_devices": [
          "Bitron Video AV2010/10"
        ]
      }
    ],
    "zeroconf": [
      {
        "type": "_esphomelib._tcp.local.",
        "name": "tube*"
      },
      {
        "type": "_zigate-zigbee-gateway._tcp.local.",
        "name": "*zigate*"
      },
      {
        "type": "_zigstar_gw._tcp.local.",
        "name": "*zigstar*"
      },
      {
        "type": "_slzb-06._tcp.local.",
        "name": "slzb-06*"
      }
    ],
    "is_built_in": true
  },
  "data": {
    "ieee": "**REDACTED**",
    "nwk": 12017,
    "manufacturer": "_TZE200_ztvwu4nk",
    "model": "TS0601",
    "name": "_TZE200_ztvwu4nk TS0601",
    "quirk_applied": false,
    "quirk_class": "zigpy.device.Device",
    "manufacturer_code": 4098,
    "power_source": "Mains",
    "lqi": 149,
    "rssi": null,
    "last_seen": "2023-06-25T13:13:39",
    "available": true,
    "device_type": "Router",
    "signature": {
      "node_descriptor": "NodeDescriptor(logical_type=<LogicalType.Router: 1>, complex_descriptor_available=0, user_descriptor_available=0, reserved=0, aps_flags=0, frequency_band=<FrequencyBand.Freq2400MHz: 8>, mac_capability_flags=<MACCapabilityFlags.FullFunctionDevice|MainsPowered|RxOnWhenIdle|AllocateAddress: 142>, manufacturer_code=4098, maximum_buffer_size=82, maximum_incoming_transfer_size=82, server_mask=11264, maximum_outgoing_transfer_size=82, descriptor_capability_field=<DescriptorCapability.NONE: 0>, *allocate_address=True, *is_alternate_pan_coordinator=False, *is_coordinator=False, *is_end_device=False, *is_full_function_device=True, *is_mains_powered=True, *is_receiver_on_when_idle=True, *is_router=True, *is_security_capable=False)",
      "endpoints": {
        "1": {
          "profile_id": "0x0104",
          "device_type": "0x0051",
          "input_clusters": [
            "0x0000",
            "0x0004",
            "0x0005",
            "0xef00"
          ],
          "output_clusters": [
            "0x000a",
            "0x0019"
          ]
        }
      },
      "manufacturer": "_TZE200_ztvwu4nk",
      "model": "TS0601"
    },
    "active_coordinator": false,
    "entities": [],
    "neighbors": [],
    "routes": [],
    "endpoint_names": [
      {
        "name": "SMART_PLUG"
      }
    ],
    "user_given_name": "Termostato prueba",
    "device_reg_id": "eb69990869b8e3a6946d3af10aa68cc1",
    "area_id": "sum",
    "cluster_details": {
      "1": {
        "device_type": {
          "name": "SMART_PLUG",
          "id": 81
        },
        "profile_id": 260,
        "in_clusters": {
          "0x0000": {
            "endpoint_attribute": "basic",
            "attributes": {
              "0x0001": {
                "attribute_name": "app_version",
                "value": 68
              },
              "0x0004": {
                "attribute_name": "manufacturer",
                "value": "_TZE200_ztvwu4nk"
              },
              "0x0005": {
                "attribute_name": "model",
                "value": "TS0601"
              }
            },
            "unsupported_attributes": {}
          },
          "0x0004": {
            "endpoint_attribute": "groups",
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0x0005": {
            "endpoint_attribute": "scenes",
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0xef00": {
            "endpoint_attribute": null,
            "attributes": {},
            "unsupported_attributes": {}
          }
        },
        "out_clusters": {
          "0x0019": {
            "endpoint_attribute": "ota",
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0x000a": {
            "endpoint_attribute": "time",
            "attributes": {},
            "unsupported_attributes": {}
          }
        }
      }
    }
  }
}

Logs
Logs
Happy to include them but first I'd need to understand what exactly to repro

Custom quirk
Custom quirk
print("Hello World")

Additional information
I would be happy to work on the quirk myself, but would greatly appreciate some guidance.
I'm a developer IRL, but never worked on ZHA or any other Home Assistant component for that matter. Relatively new to ZigBee although been reading and playing for a bit now. Interested in contributing this as a hobby.

This request should also give some hints: https://github.com/Koenkk/zigbee2mqtt/issues/10456

I'm using this very rich thread and its various links to learn what to do: https://github.com/zigpy/zha-device-handlers/issues/1109
I learned how to add a quirk locally to my installation and managed to get the ts0601_electric_heating.py quirk loaded, but unfortunately it doesn't work for me.
Now doing some logging with debug enabled to see if I can understand more details.
Here's a snippet FWIW.
[core-ssh config]$ grep 0x94D8 home-assistant.log | head -30
2023-06-26 22:16:59.597 DEBUG (MainThread) [zigpy_znp.api] Received command: ZDO.TCDevInd.Callback(SrcNwk=0x94D8, SrcIEEE=70:ac:08:ff:fe:3e:ca:51, ParentNwk=0x0000)
2023-06-26 22:16:59.604 INFO (MainThread) [zigpy_znp.zigbee.application] TC device join: ZDO.TCDevInd.Callback(SrcNwk=0x94D8, SrcIEEE=70:ac:08:ff:fe:3e:ca:51, ParentNwk=0x0000)
2023-06-26 22:16:59.606 DEBUG (MainThread) [zigpy_znp.api] Sending request: ZDO.ExtRouteDisc.Req(Dst=0x94D8, Options=<RouteDiscoveryOptions.UNICAST: 0>, Radius=30)
2023-06-26 22:16:59.657 DEBUG (MainThread) [zigpy_znp.api] Received command: ZDO.EndDeviceAnnceInd.Callback(Src=0x94D8, NWK=0x94D8, IEEE=70:ac:08:ff:fe:3e:ca:51, Capabilities=<MACCapabilities.Router|MainsPowered|RXWhenIdle|AllocateShortAddrDuringAssocNeeded: 142>)
2023-06-26 22:16:59.875 DEBUG (MainThread) [zigpy_znp.api] Received command: ZDO.MsgCbIncoming.Callback(Src=0x94D8, IsBroadcast=<Bool.true: 1>, ClusterId=19, SecurityUse=0, TSN=130, MacDst=0xFFFF, Data=b'\xD8\x94\x51\xCA\x3E\xFE\xFF\x08\xAC\x70\x8E')
2023-06-26 22:16:59.885 DEBUG (MainThread) [zigpy.application] Received a packet: ZigbeePacket(src=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x94D8), src_ep=0, dst=AddrModeAddress(addr_mode=<AddrMode.Broadcast: 15>, address=<BroadcastAddress.ALL_ROUTERS_AND_COORDINATOR: 65532>), dst_ep=0, source_route=None, extended_timeout=False, tsn=130, profile_id=0, cluster_id=19, data=Serialized[b'\x82\xd8\x94Q\xca>\xfe\xff\x08\xacp\x8e'], tx_options=<TransmitOptions.NONE: 0>, radius=0, non_member_radius=0, lqi=None, rssi=None)
2023-06-26 22:16:59.891 DEBUG (MainThread) [zigpy.application] Received frame on uninitialized device <Device model=None manuf=None nwk=0x94D8 ieee=70:ac:08:ff:fe:3e:ca:51 is_initialized=False> from ep 0 to ep 0, cluster 19: b'\x82\xd8\x94Q\xca>\xfe\xff\x08\xacp\x8e'
2023-06-26 22:16:59.892 DEBUG (MainThread) [zigpy.zdo] [0x94d8:zdo] ZDO request ZDOCmd.Device_annce: [0x94D8, 70:ac:08:ff:fe:3e:ca:51, 142]
2023-06-26 22:16:59.897 DEBUG (MainThread) [zigpy_znp.zigbee.application] Sending packet ZigbeePacket(src=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x0000), src_ep=0, dst=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x94D8), dst_ep=0, source_route=None, extended_timeout=True, tsn=40, profile_id=0, cluster_id=<ZDOCmd.Node_Desc_req: 0x0002>, data=Serialized[b'(\xd8\x94'], tx_options=<TransmitOptions.NONE: 0>, radius=0, non_member_radius=0, lqi=None, rssi=None)
2023-06-26 22:16:59.898 DEBUG (MainThread) [zigpy_znp.api] Sending request: ZDO.ExtRouteChk.Req(Dst=0x94D8, RtStatus=<RouteStatus.ACTIVE: 1>, Options=<RouteOptions.MTO_ROUTE|NO_ROUTE_CACHE: 3>)
2023-06-26 22:16:59.929 DEBUG (MainThread) [zigpy_znp.api] Sending request: AF.DataRequestExt.Req(DstAddrModeAddress=AddrModeAddress(mode=<AddrMode.NWK: 2>, address=0x94D8), DstEndpoint=0, DstPanId=0x0000, SrcEndpoint=0, ClusterId=2, TSN=40, Options=<TransmitOptions.SUPPRESS_ROUTE_DISC_NETWORK: 32>, Radius=0, Data=b'\x28\xD8\x94')
2023-06-26 22:16:59.946 DEBUG (MainThread) [zigpy_znp.api] Received command: ZDO.SrcRtgInd.Callback(DstAddr=0x94D8, Relays=[])
2023-06-26 22:16:59.996 DEBUG (MainThread) [zigpy_znp.api] Received command: ZDO.SrcRtgInd.Callback(DstAddr=0x94D8, Relays=[])
2023-06-26 22:16:59.999 DEBUG (MainThread) [zigpy_znp.api] Received command: AF.IncomingMsg.Callback(GroupId=0x0000, ClusterId=61184, SrcAddr=0x94D8, SrcEndpoint=1, DstEndpoint=1, WasBroadcast=<Bool.false: 0>, LQI=47, SecurityUse=<Bool.false: 0>, TimeStamp=6827792, TSN=0, Data=b'\x19\x51\x24\x00\x00', MacSrcAddr=0x94D8, MsgResultRadius=29)
2023-06-26 22:17:00.003 DEBUG (MainThread) [zigpy.application] Received a packet: ZigbeePacket(src=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x94D8), src_ep=1, dst=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x0000), dst_ep=1, source_route=None, extended_timeout=False, tsn=0, profile_id=260, cluster_id=61184, data=Serialized[b'\x19Q$\x00\x00'], tx_options=<TransmitOptions.NONE: 0>, radius=29, non_member_radius=0, lqi=47, rssi=None)
2023-06-26 22:17:00.005 DEBUG (MainThread) [zigpy.application] Received frame on uninitialized device <Device model=None manuf=None nwk=0x94D8 ieee=70:ac:08:ff:fe:3e:ca:51 is_initialized=False> from ep 1 to ep 1, cluster 61184: b'\x19Q$\x00\x00'
2023-06-26 22:17:00.050 DEBUG (MainThread) [zigpy_znp.api] Received command: ZDO.NodeDescRsp.Callback(Src=0x94D8, Status=<Status.SUCCESS: 0>, NWK=0x94D8, NodeDescriptor=NullableNodeDescriptor(logical_type=<LogicalType.Router: 1>, complex_descriptor_available=0, user_descriptor_available=0, reserved=0, aps_flags=0, frequency_band=<FrequencyBand.Freq2400MHz: 8>, mac_capability_flags=<MACCapabilityFlags.FullFunctionDevice|MainsPowered|RxOnWhenIdle|AllocateAddress: 142>, manufacturer_code=4098, maximum_buffer_size=82, maximum_incoming_transfer_size=82, server_mask=11264, maximum_outgoing_transfer_size=82, descriptor_capability_field=<DescriptorCapability.NONE: 0>, *allocate_address=True, *is_alternate_pan_coordinator=False, *is_coordinator=False, *is_end_device=False, *is_full_function_device=True, *is_mains_powered=True, *is_receiver_on_when_idle=True, *is_router=True, *is_security_capable=False))
2023-06-26 22:17:00.058 DEBUG (MainThread) [zigpy_znp.api] Received command: ZDO.MsgCbIncoming.Callback(Src=0x94D8, IsBroadcast=<Bool.false: 0>, ClusterId=32770, SecurityUse=0, TSN=40, MacDst=0x0000, Data=b'\x00\xD8\x94\x01\x40\x8E\x02\x10\x52\x52\x00\x00\x2C\x52\x00\x00')
2023-06-26 22:17:00.063 DEBUG (MainThread) [zigpy.application] Received a packet: ZigbeePacket(src=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x94D8), src_ep=0, dst=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x0000), dst_ep=0, source_route=None, extended_timeout=False, tsn=40, profile_id=0, cluster_id=32770, data=Serialized[b'(\x00\xd8\x94\x01@\x8e\x02\x10RR\x00\x00,R\x00\x00'], tx_options=<TransmitOptions.NONE: 0>, radius=0, non_member_radius=0, lqi=None, rssi=None)
2023-06-26 22:17:00.065 DEBUG (MainThread) [zigpy.application] Received frame on uninitialized device <Device model=None manuf=None nwk=0x94D8 ieee=70:ac:08:ff:fe:3e:ca:51 is_initialized=False> from ep 0 to ep 0, cluster 32770: b'(\x00\xd8\x94\x01@\x8e\x02\x10RR\x00\x00,R\x00\x00'
2023-06-26 22:17:00.073 DEBUG (MainThread) [zigpy_znp.zigbee.application] Sending packet ZigbeePacket(src=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x0000), src_ep=0, dst=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x94D8), dst_ep=0, source_route=None, extended_timeout=False, tsn=41, profile_id=0, cluster_id=<ZDOCmd.Active_EP_req: 0x0005>, data=Serialized[b')\xd8\x94'], tx_options=<TransmitOptions.NONE: 0>, radius=0, non_member_radius=0, lqi=None, rssi=None)
2023-06-26 22:17:00.075 DEBUG (MainThread) [zigpy_znp.api] Sending request: ZDO.ExtRouteChk.Req(Dst=0x94D8, RtStatus=<RouteStatus.ACTIVE: 1>, Options=<RouteOptions.MTO_ROUTE|NO_ROUTE_CACHE: 3>)
2023-06-26 22:17:00.093 DEBUG (MainThread) [zigpy_znp.api] Sending request: AF.DataRequestExt.Req(DstAddrModeAddress=AddrModeAddress(mode=<AddrMode.NWK: 2>, address=0x94D8), DstEndpoint=0, DstPanId=0x0000, SrcEndpoint=0, ClusterId=5, TSN=41, Options=<TransmitOptions.SUPPRESS_ROUTE_DISC_NETWORK: 32>, Radius=0, Data=b'\x29\xD8\x94')
2023-06-26 22:17:00.247 DEBUG (MainThread) [zigpy_znp.api] Received command: ZDO.SrcRtgInd.Callback(DstAddr=0x94D8, Relays=[])
2023-06-26 22:17:00.249 DEBUG (MainThread) [zigpy_znp.api] Received command: ZDO.ActiveEpRsp.Callback(Src=0x94D8, Status=<Status.SUCCESS: 0>, NWK=0x94D8, ActiveEndpoints=[1])
2023-06-26 22:17:00.255 DEBUG (MainThread) [zigpy_znp.api] Received command: ZDO.MsgCbIncoming.Callback(Src=0x94D8, IsBroadcast=<Bool.false: 0>, ClusterId=32773, SecurityUse=0, TSN=41, MacDst=0x0000, Data=b'\x00\xD8\x94\x01\x01')
2023-06-26 22:17:00.258 DEBUG (MainThread) [zigpy.application] Received a packet: ZigbeePacket(src=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x94D8), src_ep=0, dst=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x0000), dst_ep=0, source_route=None, extended_timeout=False, tsn=41, profile_id=0, cluster_id=32773, data=Serialized[b')\x00\xd8\x94\x01\x01'], tx_options=<TransmitOptions.NONE: 0>, radius=0, non_member_radius=0, lqi=None, rssi=None)
2023-06-26 22:17:00.260 DEBUG (MainThread) [zigpy.application] Received frame on uninitialized device <Device model=None manuf=None nwk=0x94D8 ieee=70:ac:08:ff:fe:3e:ca:51 is_initialized=False> from ep 0 to ep 0, cluster 32773: b')\x00\xd8\x94\x01\x01'
2023-06-26 22:17:00.264 DEBUG (MainThread) [zigpy_znp.zigbee.application] Sending packet ZigbeePacket(src=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x0000), src_ep=0, dst=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x94D8), dst_ep=0, source_route=None, extended_timeout=False, tsn=42, profile_id=0, cluster_id=<ZDOCmd.Simple_Desc_req: 0x0004>, data=Serialized[b'*\xd8\x94\x01'], tx_options=<TransmitOptions.NONE: 0>, radius=0, non_member_radius=0, lqi=None, rssi=None)
2023-06-26 22:17:00.265 DEBUG (MainThread) [zigpy_znp.api] Sending request: ZDO.ExtRouteChk.Req(Dst=0x94D8, RtStatus=<RouteStatus.ACTIVE: 1>, Options=<RouteOptions.MTO_ROUTE|NO_ROUTE_CACHE: 3>)

Trying with ts0601_trv instead also doesn't work but at least logs seem a bit more understandable:
2023-06-26 22:58:29.995 DEBUG (MainThread) [zhaquirks.tuya] [0x94d8:1:0xef00] Received value [1] for attribute 0x0101 (command 0x0001)
2023-06-26 22:58:30.098 DEBUG (MainThread) [zhaquirks.tuya] [0x94d8:1:0xef00] Received value [1] for attribute 0x0101 (command 0x0001)
2023-06-26 22:58:30.200 DEBUG (MainThread) [zhaquirks.tuya] [0x94d8:1:0xef00] Received value [1] for attribute 0x0101 (command 0x0001)
2023-06-26 22:58:30.310 DEBUG (MainThread) [zhaquirks.tuya] [0x94d8:1:0xef00] Received value [1] for attribute 0x0101 (command 0x0001)
2023-06-26 22:58:30.408 DEBUG (MainThread) [zhaquirks.tuya] [0x94d8:1:0xef00] Received value [0, 0, 0, 21] for attribute 0x0210 (command 0x0001)
2023-06-26 22:58:30.505 DEBUG (MainThread) [zhaquirks.tuya] [0x94d8:1:0xef00] Received value [0] for attribute 0x0402 (command 0x0001)
2023-06-26 22:58:30.599 DEBUG (MainThread) [zhaquirks.tuya] [0x94d8:1:0xef00] Received value [0] for attribute 0x0417 (command 0x0001)
2023-06-26 22:58:30.693 DEBUG (MainThread) [zhaquirks.tuya] [0x94d8:1:0xef00] Received value [0] for attribute 0x0128 (command 0x0001)
2023-06-26 22:58:30.805 DEBUG (MainThread) [zhaquirks.tuya] [0x94d8:1:0xef00] Received value [0] for attribute 0x0429 (command 0x0001)
2023-06-26 22:58:30.906 DEBUG (MainThread) [zhaquirks.tuya] [0x94d8:1:0xef00] Received value [0, 0, 0, 0] for attribute 0x022a (command 0x0001)
2023-06-26 22:58:31.009 DEBUG (MainThread) [zhaquirks.tuya] [0x94d8:1:0xef00] Received value [2] for attribute 0x052d (command 0x0001)
2023-06-26 22:58:31.120 DEBUG (MainThread) [zhaquirks.tuya] [0x94d8:1:0xef00] Received value [1] for attribute 0x0403 (command 0x0001)
2023-06-26 22:58:31.229 DEBUG (MainThread) [zhaquirks.tuya] [0x94d8:1:0xef00] Received value [6, 0, 0, 20, 8, 0, 0, 15, 11, 30, 0, 15, 13, 30, 0, 15, 17, 0, 0, 22, 22, 0, 0, 15, 6, 0, 0, 20, 22, 0, 0, 1
5] for attribute 0x001e (command 0x0001)
2023-06-26 22:58:31.325 DEBUG (MainThread) [zhaquirks.tuya] [0x94d8:1:0xef00] Received value [0, 0, 0, 20] for attribute 0x0218 (command 0x0001)
2023-06-26 22:58:31.429 DEBUG (MainThread) [zhaquirks.tuya] [0x94d8:1:0xef00] Received value [0] for attribute 0x0104 (command 0x0001)
2023-06-26 22:58:31.532 DEBUG (MainThread) [zhaquirks.tuya] [0x94d8:1:0xef00] Received value [0, 0, 0, 35] for attribute 0x0213 (command 0x0001)
2023-06-26 22:58:31.623 DEBUG (MainThread) [zhaquirks.tuya] [0x94d8:1:0xef00] Received value [0, 0, 0, 5] for attribute 0x021a (command 0x0001)
2023-06-26 22:58:31.719 DEBUG (MainThread) [zhaquirks.tuya] [0x94d8:1:0xef00] Received value [255, 255, 255, 253] for attribute 0x021b (command 0x0001)
2023-06-26 22:58:31.818 DEBUG (MainThread) [zhaquirks.tuya] [0x94d8:1:0xef00] Received value [2] for attribute 0x042b (command 0x0001)
2023-06-26 22:59:42.309 DEBUG (MainThread) [zhaquirks.tuya] [0x94d8:1:0x0201] Mapping standard occupied_heating_setpoint (0x0012) with value 2100 to custom {514: 21}
2023-06-26 23:04:21.434 DEBUG (MainThread) [zhaquirks.tuya] [0x94d8:1:0xef00] Received value [1] for attribute 0x0402 (command 0x0001)
2023-06-26 23:04:27.096 DEBUG (MainThread) [zhaquirks.tuya] [0x94d8:1:0xef00] Received value [0] for attribute 0x0402 (command 0x0001)
2023-06-26 23:04:27.574 DEBUG (MainThread) [zhaquirks.tuya] [0x94d8:1:0xef00] Received value [0] for attribute 0x0402 (command 0x0001)
2023-06-26 23:04:27.888 DEBUG (MainThread) [zhaquirks.tuya] [0x94d8:1:0xef00] Received value [0] for attribute 0x0402 (command 0x0001)

Continuing with the monologue, I'm happy to report that with some minor tweaks, I was able to get my device's basic functions with the ts0601_electric_heating.py quirk.
Proof:

The changes:
index 1d5ca31..b09d301 100644
--- a/zhaquirks/tuya/ts0601_electric_heating.py
+++ b/zhaquirks/tuya/ts0601_electric_heating.py
@@ -24,11 +24,12 @@ from zhaquirks.tuya import (
 # https://github.com/Koenkk/zigbee-herdsman-converters/blob/master/converters/fromZigbee.js#L239
 # and https://github.com/Koenkk/zigbee-herdsman-converters/blob/master/converters/common.js#L113
 MOESBHT_TARGET_TEMP_ATTR = 0x0210  # [0,0,0,21] target room temp (degree)
-MOESBHT_TEMPERATURE_ATTR = 0x0218  # [0,0,0,200] current room temp (decidegree)
-MOESBHT_SCHEDULE_MODE_ATTR = 0x0403  # [1] false [0] true   /!\ inverted
+MOESBHT_TEMPERATURE_ATTR = 0x0218  # [0,0,0,20] current room temp (degree)
+# JAC: Change to a random attribute to avoid collision with Running Mode
+MOESBHT_SCHEDULE_MODE_ATTR = 0x0404  # [1] false [0] true   /!\ inverted
 MOESBHT_MANUAL_MODE_ATTR = 0x0402  # [1] false [0] true /!\ inverted
 MOESBHT_ENABLED_ATTR = 0x0101  # [0] off [1] on
-MOESBHT_RUNNING_MODE_ATTR = 0x0424  # [1] idle [0] heating /!\ inverted
+MOESBHT_RUNNING_MODE_ATTR = 0x0403  # [1] idle [0] heating /!\ inverted
 MOESBHT_CHILD_LOCK_ATTR = 0x0128  # [0] unlocked [1] child-locked

 _LOGGER = logging.getLogger(__name__)
@@ -59,7 +60,7 @@ class MoesBHTManufCluster(TuyaManufClusterAttributes):
             self.endpoint.device.thermostat_bus.listener_event(
                 "temperature_change",
                 "local_temperature",
-                value * 10,  # decidegree to centidegree
+                value * 100,  # degree to centidegree
             )
         elif attrid == MOESBHT_SCHEDULE_MODE_ATTR:
             if value == 0:  # value is inverted
@@ -144,6 +147,7 @@ class MoesBHT(TuyaThermostat):
             ("_TZE200_2ekuz3dz", "TS0601"),
             ("_TZE200_ye5jkfsb", "TS0601"),
             ("_TZE200_u9bfwha0", "TS0601"),
+            ("_TZE200_ztvwu4nk", "TS0601"),
         ],
         ENDPOINTS: {
             1: {

Now I just need to find the time to make this a bit more tidy and send a PR to see if this can be adopted


west.yml: Update NXP HAL to get the changes for MICFIL driver

Get the changes from the NXP HAL for PDM MICFIL driver

This is to address an earlier merge that made things go out of order.


Baryons as in van Daalen+ 2019

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

13 of 42 (30.95%)  changed or added relevant lines in 2 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-0.5%) to 96.962%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

pyccl/baryons/vandaalen19.py
12
41
29.27%

Totals

Change from base Build<PHONE_NUMBER>:
-0.5%

Covered Lines:
5682

Relevant Lines:
5860

💛  - Coveralls

@elisachisari two final things

Flake8 is complaining
Can you add a unit test for these lines?

Comments addressed.


copr: add string_duration_time_diff and string_string_time_diff function

Hi! I'm new to the project. this is my small PR about TiDB function migration.
What problem does this PR solve?
Issue Number: part of #5751
Problem Summary: migrating string_duration_time_diff and string_string_time_diff from TiDB
What is changed and how it works?
What's Changed:
Implement string_duration_time_diff and string_string_time_diff function by calling duration_duration_time_diff function inside.
Related changes

No Related Changes

Check List
Tests

Unit test

Release note
- Implement  string_duration_time_diff and string_string_time_diff

cc @skyzh

/cc @Xuanwo

/merge


Quick group competition creation

Closes #476
Up for some discussion on how to handle these types of situations for the future of the site where this type of routing may occur. Also may add more locations depending on feedback.

https://gyazo.com/7339d836a49ba696f2bb36eb11f1df11


need a local module options for ng g service

Bug Report or Feature Request (mark with an x)
- [ ] bug report -> please search issues before submitting
- [ x] feature request

Area
- [ ] devkit
- [ x] schematics

Versions

Repro steps

The log given by the failure

Desired functionality

Bug Report or Feature Request (mark with an x)

[ ] bug report -> please search issues before submitting
[ x] feature request

Area

[ ] devkit
[ x] schematics

Repro steps

in an angular CLI project (src/app)

create a new directory e.g. service1-directory
cd service1-directory
ng  g service service1 --module=service1.module

this causes to create the service1 file in the service1-directory but the module file is supposed to be in src/app/..
Desired functionality

This feature should allow the module file to be in the current directory and create one if it doesn't exist.  This could be done with an additional value in the schema.json file e.g. localModule
The command would be:
ng g service service1 --localModule=service1.module
What is the usecase?
We are looking to create categories of services in different directories with separate modules

The CLI and it's schematics are not designed to generate items based upon arguments at this time. This was considered (and pushed for by me) but after discussing it was decided that if you'd like to generate a service with a module then as a user you should generate the module and then generate the service.
Otherwise there would be too many permutations of options to account for.
That being said, if you'd like to implement this in your own set of schematics for what works best for you, feel free. There's a blog post on the angular blog about creating custom schematics.


Typo 'Azure Open AI'→'Azure OpenAI'

https://learn.microsoft.com/en-us/azure/machine-learning/concept-model-catalog?view=azureml-api-2
https://github.com/MicrosoftDocs/azure-docs/blob/main/articles/machine-learning/concept-model-catalog.md
#PingMSFTDocs

@tinaem

Can you review this PR?
IMPORTANT: When this content is ready to merge, you must add #sign-off in a comment or the approval may get overlooked.

#label:"aq-pr-triaged"
@MicrosoftDocs/public-repo-pr-review-team

emailed assignees


DMA Completion Status

I've come to learn that there are one of two ways an interrupt will be triggered when DMAing data from the PL to the PS...
Case 1. Data stream hits a TLAST signal and generates an interrupt based on EOF (End of Frame)
Case 2. Number of bytes requested to be transferred is reached and generates an interrupt based on IOC (Interrupt on Complete)
Optimally TLAST would always be concurrent with the last byte of the transfer that was requested so an interrupt would show both EOF and IOC if I am understanding correctly
There are some xilinx forum discussions on the subject such as this one for reference
https://forums.xilinx.com/t5/Embedded-Processor-System-Design/Axi-DMA-S2MM-Is-it-necessary-to-assert-TLAST/td-p/743336
What I would like to do is validate why we got an interrupt and ensure that a transaction got all the data that was requested.

There's no explicit check in the my driver for this. However, the Xilinx DMA driver will generate a message in the kernel log buffer if there are any errors registered in the AXI DMA DMASR register. One of these errors is the DMAIntErr, which is bit 4 of the register. This is set when either TLAST is asserted before the expected end of the transfer, or if the length of one of the scatter-gather descriptors is 0 (see page 28 of the AXI DMA v7.1 User Guide).
So if you check the output of dmesg you'll be able to see if this error case happened. However, it may be worth adding this into the driver as well.

I think this would be very useful to people not only for debugging but also for normal use when it's imperative that each transaction can be verified. I'd be willing to help develop this into your driver if you could point me in the right direction.
It seems that at the FPGA level the data we want is stored between the AXI_DMA_DMASR regsiter and at least in the case of a PL to PS transfer, the S2MM_STATUS register. The problem may be however that the Xilinx driver reads/clears these registers and then stores them elsewhere in memory. I've poked around in the Xilinx driver and while I do see the AXI_DMA_DMASR register defined/used I strangely don't see the S2MM_STATUS register being defined and equally strange the AXI DMA User Guide doesn't even define a register value for it.
Looking at the xilinx_dma.c line 1447 I see the IRQ handler function...
static irqreturn_t xilinx_dma_irq_handler(int irq, void *data)
...this seems to be the moment when the xilinx driver reads the DMASR register on line 1453...
status = dma_ctrl_read(chan, XILINX_DMA_REG_DMASR);
...and subsequently will write back to that register, looking to clear/correct errors. I don't however see how that original status value that was captured makes it to any readable variable/struct from your driver. Maybe there is another way, or place to capture this info and report it back through your driver to the user space?
Ultimately I think the goal should be to know the exact circumstances on which a transaction ended.

Did the transaction end on a TLAST, also known as the EOF (end of frame)
Did the transaction end due to satisfying the transfer size requested, also known as IOC (interrupt on complete)
How many bytes were actually transferred. This is important in the case that a EOF occurred before an IOC could, meaning that we request X bytes for a transfer, but only received x-n bytes due to receiving TLAST earlier then expected.
How many bytes are held up in the DMA. This is important in the case that a IOC occurred before an EOF could, meaning that we requested x bytes for a transfer, and recieved them, but there are still more bytes to be transferred before reaching TLAST. This one might be tough, but there is possible tie in here to the work being done by @corna with the axidma_get_residue() function

In a correctly configured system, with a successful DMA transaction I would expect to see both the IOC and EOF bits set every time, as well as the exact number of bytes I requested having been transferred into a buffer.

Hey @bperez77 just curious if you've had a chance to look over my comment/idea and if you have any insight for me?

Apologies, I did send a reply a while back, but for some reason it never went through.
In regards to the S2MM_STATUS register, I don't believe the driver uses this at all. As far I can tell from the user guide, this register is at the granualirty of individual scatter-gather descriptors within a larger transfer. The Xilinx driver only cares about the end result of a transaction, so it only utilizes the DMASR register. I believe the reason that the user guide doesn't define an address for the register is that it is not exposed as an MMIO register. Perhaps it is still viewable from signal tap, so that is why it is mentioned?
I could definitely use the help with the driver. A big reason why the development on the driver has been so slow is because I don't have access to an FPGA board at the moment. So I could definitely use the help.
I definitely agree, it would be very useful to have this sort of status for the end-user, and especially to have it returned to the user via the callback function. I think all of your goals are good and satificatory to get this information to the user.
Ultimately, the main issue I think comes from the fact that the Xilinx driver does not expose this information at all. The DMASR is read into a local varaible, and then the register is reset. This local variable is used to check the status, but then is lost once the IRQ handler returns. Thus, I think this leaves us with two options.
The first is to hijack the interrupts used for the AXI DMA IPs. Then, when an interrupt occurs, the DMASR register can be read and stored somewhere, and then the normal Xilinx interrupt handler can be invoked. This is of course a pretty hacky solution. Additionally, since the IRQ handler is declared as static by the Xilinx driver, this would either need to be removed with a patch, or the Makefile would have to pass the address of this function to the driver when it is compiled (or it can be read at runtime, actually).
The much better and more maintainable solution is to work with the Xilinx kernel developers to get this information exposed to the callback function. Unfortunately, because of how the Linux DMA interface is structured, I don't think there's any way for them to pass the status register back to the callback directly. However, they should be able to pass the residue to the callback. This would require them to not pass NULL to dmaengine_desc_callback_invoke on line 825, and instead pass a proper dmaengine_result structure with the residue.
The other option for them would be to add a new status field to the xilinx_dma_chan structure. This field would store the value of the DMASR register from the last interrupt for the channel. Then, they would also need to add some sort of interface to query the saved DMASR register values by channel ID.


Gadget work with JIRA Cloud??

The Testrail-jira-gadget code looks promising and will be very useful for our firm if this can work with JIRA Cloud. Please advise if the available code can be configured for JIRA cloud  and if we can set up the respective gadget for reporting from Testrail to JIRA Cloud.
Thank you,
Ballard Team

Technically it's possible, as long as the the gadget XML and .js files are on a web server that can be accessed from JIRA. However, I don't know if Atlassian allows users/admins of cloud instances to add standalone gadgets. If they do, then it should work.

What should we check with Atlassian? Also, can you help us set up the gadget XML and .js files on a web server?

For Atlassian, ask if custom gadgets can be added to the gadget directory.
If you have testrail running locally you can use that as your web server. If you're using TestRail Cloud you can set up a local Apache web server (or IIS if you're a Windows shop). This web server needs to be accessible externally (and it works better if it supports HTTPS with a signed SSL certificate).
Once the web server is set up follow the install instructions for installing and configuring the gadget files.


PHP Error count() parameter must be an array

Hi, i tried to run the quickstart.php and got this error
PHP Warning:  count(): Parameter must be an array or an object that implements Countable in F:\xampp\htdocs\google-group
\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php on line 67
Warning: count(): Parameter must be an array or an object that implements Countable in F:\xampp\htdocs\google-group\vend
or\guzzlehttp\guzzle\src\Handler\CurlFactory.php on line 67
Credentials saved to token.json

Sorry for the troubles @ZerosDev, which sample this referring to? What PHP version are you using?

Hi Sir,
I am facing following error after entering verification code. I am using PHP 7.2.4 please help me.
"Warning: count(): Parameter must be an array or an object that implements Countable in C:\wamp64\www\My Project\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php on line 67
Fatal error: Uncaught GuzzleHttp\Exception\RequestException: cURL error 60: SSL certificate problem: unable to get local issuer certificate (see http://curl.haxx.se/libcurl/c/libcurl-errors.html) in C:\wamp64\www\My Project\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php:187
Stack trace:
#0 C:\wamp64\www\My Project\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php(150): GuzzleHttp\Handler\CurlFactory::createRejection(Object(GuzzleHttp\Handler\EasyHandle), Array)
#1 C:\wamp64\www\My Project\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php(103): GuzzleHttp\Handler\CurlFactory::finishError(Object(GuzzleHttp\Handler\CurlHandler), Object(GuzzleHttp\Handler\EasyHandle), Object(GuzzleHttp\Handler\CurlFactory))
#2 C:\wamp64\www\My Project\vendor\guzzlehttp\guzzle\src\Handler\CurlHandler.php(43): GuzzleHttp\Handler\CurlFactory::finish(Object(GuzzleHttp\Handler\CurlHandler), Object(GuzzleHttp\Handler\EasyHandle), Object(GuzzleHttp\Handler\CurlFactory))
#3 C:\wamp64\www\My Project\vendor\guzzlehttp\guzzle\src\Handler\Pro in C:\wamp64\www\My Project\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php on line 187"

I got same error. I'm using php version 7.2.7. How can I fix this problem?

Hello Sir,
i got same problem please help what can i do.???? i'm using PHP 7.2.4 window 10
Warning: count(): Parameter must be an array or an object that implements Countable in E:\wamp\www\calendar\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php on line 67
Fatal error: Uncaught GuzzleHttp\Exception\RequestException: cURL error 60: SSL certificate problem: unable to get local issuer certificate (see http://curl.haxx.se/libcurl/c/libcurl-errors.html) in E:\wamp\www\calendar\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php:187
Stack trace:
#0 E:\wamp\www\calendar\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php(150): GuzzleHttp\Handler\CurlFactory::createRejection(Object(GuzzleHttp\Handler\EasyHandle), Array)
#1 E:\wamp\www\calendar\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php(103): GuzzleHttp\Handler\CurlFactory::finishError(Object(GuzzleHttp\Handler\CurlHandler), Object(GuzzleHttp\Handler\EasyHandle), Object(GuzzleHttp\Handler\CurlFactory))
#2 E:\wamp\www\calendar\vendor\guzzlehttp\guzzle\src\Handler\CurlHandler.php(43): GuzzleHttp\Handler\CurlFactory::finish(Object(GuzzleHttp\Handler\CurlHandler), Object(GuzzleHttp\Handler\EasyHandle), Object(GuzzleHttp\Handler\CurlFactory))
#3 E:\wamp\www\calendar\vendor\guzzlehttp\guzzle\src\Handler\Proxy.php(28): GuzzleHt in E:\wamp\www\calendar\vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php on line 187

The message about count() is just a warning, and something that should go away once the PHP library upgrades to a new version of Guzzle. The SSL error is a blocker though, so I've updated the issue title to match.

This error indicates that the underlying HTTP libraries can't find a certificate store, and are therefore unable to setup the SSL connection to Google's servers. See the Guzzle library's documentation for information on how to setup a certificate store on your machine.
I've added a troubleshooting section to our PHP quickstarts with the same information:
https://developers.google.com/sheets/api/quickstart/php#troubleshooting

The link to the SSL configuration is on on GuzzlePHP docs
http://docs.guzzlephp.org/en/stable/request-options.html#verify-option


Add possibility for verified issuer to acknowledge item.

Work in progress - open issues

One failing test (intentional): VI must still be able to publish item when there is no Polkadot requester (Logion Identity/Transaction)
Missing tests regarding acknowledge by VI.
Heuristic to correctly set the flag acknowledged_by_verified_issuer to be validated.

logion-network/logion-internal#968

As discussed, we do not support publication of items to LOCs with non-Polkadot requester by VIs for the moment. In that case, the requester is not able to publish items itself, so VIs have nothing to acknowledge. We'll think of an alternative scheme for that situation if there is a need.
An item has been added to the backlog to prevent the selection of VIs for LOCs with non-Polkadot requeter: https://github.com/logion-network/logion-internal/projects/62#card-90334938


[KYUUBI #3180] Add component version util

Why are the changes needed?
Add component version util class
How was this patch tested?

[ ] Add some test cases that check the changes thoroughly including negative and positive cases if possible

[ ] Add screenshots for manual tests if appropriate

[ ] Run test locally before make a pull request

there are also some duplicated functions in Utils.class

Codecov Report

Merging #3181 (d254c0e) into master (024fa2d) will decrease coverage by 0.01%.
The diff coverage is 46.15%.

:exclamation: Current head d254c0e differs from pull request most recent head 222a4cc. Consider uploading reports for the commit 222a4cc to get more accurate results

@@             Coverage Diff              @@
##             master    #3181      +/-   ##
============================================
- Coverage     51.41%   51.39%   -0.02%
  Complexity        6        6
============================================
  Files           456      459       +3
  Lines         25422    25490      +68
  Branches       3540     3544       +4
============================================
+ Hits          13070    13101      +31
- Misses        11095    11131      +36
- Partials       1257     1258       +1

Impacted Files
Coverage Δ

...uubi/spark/connector/common/ComponentVersion.scala
0.00% <0.00%> (ø)

...che/kyuubi/spark/connector/common/SparkUtils.scala
0.00% <0.00%> (ø)

...ommon/src/main/scala/org/apache/kyuubi/Utils.scala
75.36% <ø> (-2.87%)
:arrow_down:

...ubi/plugin/spark/authz/util/ComponentVersion.scala
47.50% <47.50%> (ø)

...he/kyuubi/plugin/spark/authz/util/AuthZUtils.scala
48.00% <66.66%> (+1.19%)
:arrow_up:

...la/org/apache/kyuubi/engine/ComponentVersion.scala
87.50% <87.50%> (ø)

...g/apache/kyuubi/engine/spark/KyuubiSparkUtil.scala
91.17% <100.00%> (+0.26%)
:arrow_up:

...yuubi/service/authentication/PlainSASLServer.scala
94.91% <100.00%> (+1.69%)
:arrow_up:

...pache/kyuubi/engine/YarnApplicationOperation.scala
64.81% <0.00%> (-1.86%)
:arrow_down:

... and 3 more

:mega: Codecov can now indicate which changes are the most critical in Pull Requests. Learn more

Thanks, merging to master


Please allow replacing background color with an image…

…this would save me a lot of post-production time becaue I wouldn’t have to encode the solid-background oscilloscope view then overlay it onto a static image then apply chroma key to the video background and then re-encode it as a new video.
Had such a feature been available, then this video below could have been made with a dithered darkblue-on-black background rather than a solid-darkblue color (to improve visibility of waveforms without breaking the impression of hardware-limited PC-screen colors yet still matching the colors on the overlaid FMDSP music player):
https://youtube.com/watch?v=gEj67tHKXro
Thankees!

I've had this idea for a while, but I'm not sure when I'll get around to implementing this. I have some amount of school work, as well as other things to spend time on. I wish I could get more things done :|

How should the image be composited onto the screen? Stretch (change aspect ratio) to cover background? Zoom to fill entire screen? Zoom so image fits? Center the image with 1:1 pixel mapping? Allow the user to choose?
Images support transparency. Videos don't. Should transparent parts of the image let the background color shine through?

Allowing the user to choose option (stretch, zoom to fill, zoom to fit,
center image, tile image [repeat it many times, useful if it’s a small
pattern]) would be a good idea.
For transparent images, transparent parts probably could fall back to a
color specified by the user (as if the image were in front of a solid wall
of color, effectively killing the transparency).
On Mon, Apr 20, 2020 at 12:12 AM nyanpasu64<EMAIL_ADDRESS>wrote:

How should the image be composited onto the screen? Stretch (change aspect
ratio) to cover background? Zoom to fill entire screen? Zoom so image fits?
Center the image with 1:1 pixel mapping? Allow the user to choose?
Images support transparency. Videos don't. Should transparent parts of the
image let the background color shine through?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/corrscope/corrscope/issues/325#issuecomment-616297291,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AMEKG4Q36VX4PBOKOH2ZE5DRNPDT5ANCNFSM4LQ23H6A
.

And should I use nearest-neighbor interpolation or bilinear?
...this is a lot of options. Should I add a separate dialog box for background image configuration? Wow this is more complicated than I thought.
I should look into what sidwiz/plus/ovgen do. I want a simpler solution TBH.

Maybe a separate dialog box would be better to avoid cluttering.
At least in my case, I would rather adjust (stretch/zoom/center/tile/etc.)
the image separately to the target size/resolution (and manually replace
transparency with a solid color) and save it as a separate image before
feeding that to corrscope; that would do away with the UI clutter and
simplify things, at least for me.
On Mon, Apr 20, 2020 at 1:16 AM nyanpasu64<EMAIL_ADDRESS>wrote:

And should I use nearest-neighbor interpolation or bilinear?
...this is a lot of options. Should I add a separate dialog box for
background image configuration? Wow this is more complicated than I thought.
I should look into what sidwiz/plus/ovgen do. I want a simpler solution
TBH.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/corrscope/corrscope/issues/325#issuecomment-616314928,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AMEKG4UDJA53BKZIXTG45CTRNPLCRANCNFSM4LQ23H6A
.


Getting "Error generating changelog  undefined" error when I try to re-generate changelog

Here's everything, I tried with --debug but it's not returning any better error:
slobodan:webapp 🚀  git-changelog -a "OMG! I Can Meditate." -d
Executing git changelog:
Debug enabled
  - The APP name is OMG! I Can Meditate.
  - The output file is CHANGELOG.md
Error generating changelog  undefined

Hi @stojanovic  can you do a "git log" command and send me the logs to see what can be the problem?

Ty

slobodan:webapp 🚀  git changelog -e
Executing git changelog:
  - Extended, getting log since the BigBang
  - The APP name is My app - Changelog
  - The output file is CHANGELOG.md
Finished generating log Yai!

But git-changelog still fails :)

Do you have any tags defined? If not, I think you might have to include -t false in order to get it to work.

I had tags at that point and I tried with -t false and it wasn't working.
In the meantime I switched to a new laptop and upgraded OS X so now it works, not sure if it was version or some other issue, but I tried to reinstall it, of course.
Closing this since I don't have an issue anymore.


added keybase-installer as dependency

keybase update needs keybase-installer presence, so it should be in the dependency list.
In the normal use case keybase gets installed via keybase-installer, but since it gets now distributed via brew and a ppa as well its presence is no longer implicit. (see https://github.com/keybase/keybase-issues/issues/1477)

great idea


[solved] can't start spigot under ubuntu 16.04

Hello ;D
I have a little problem, I will start the spigot server, but this messages comes by start from the command
mcuser@j303219:/opt/mscs/worlds/spigot$ mscs start spigot
Starting Minecraft Server: spigotCan't locate JSON.pm in @INC (you may need to install the JSON module) (@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.22.1 /usr/local/share/perl/5.22.1 /usr/lib/x86_64-linux-gnu/perl5/5.22 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.22 /usr/share/perl/5.22 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base .) at -e line 2.
BEGIN failed--compilation aborted at -e line 2.
Error detecting the current Minecraft version.
What make I wrong ?
Have a nice Day ;D
Greetings
Bogus

ok I have fixed ..
then I have install the json moduls with
sudo apt-get install libjson-perl
Have a nice Day ;D

Hi @BogusCurry.  I'm glad you were able to figure out the issue.  The README file already mentions the need for libjson-perl. The only thing I can see to do that might make this less of a problem would be to provide a better error message in the script itself. Right now the script checks for all of the programs/packages listed in the Prerequisites section except GNU Make (which isn't a requirement of the script, it is just used for the easy install method), and libjson-perl.  Since libjson-perl is called from Perl, the check isn't as easy as if [ ! -e libjson-perl ] ....
I'll try to come up with a simple way to check if this is installed so that we can through a more useful error.

I'm not currently in a position to test this right now, but here is a chunk of code that seems to function on my work computer:
perl -e 'use JSON;' > /dev/null 2>&1
if [ $? -ne 0 ]; then
  printf "ERROR: libjson-perl not found!\n"
  printf "Try installing this with:\n"
  printf "sudo apt-get install libjson-perl\n"
  exit 1
fi

This runs without error or output on my server that has MSCS working, but that just means I have libjson-perl installed.
I also tried on Debian GNU/Linux 8.3 (jessie)
ERROR: libjson-perl not found!
Try installing this with:
sudo apt-get install libjson-perl

Seems ok to me

That is the result I would expect.  Thanks for testing @Zanix.  I'll just go ahead and send in the patch and test it when I get home.  I don't expect any fallout with this.

I just sent in commit 115b41c3b24b1a019c750e8e83e49d95bd0628b2.  Closing this issue.


Incorrect name_scope with tf.function decoration

Please make sure that this is a bug. As per our GitHub Policy, we only address code/doc bugs, performance issues, feature requests and build/installation issues on GitHub. tag:bug_template
System information

Have I written custom code (as opposed to using a stock example script provided in TensorFlow): No
OS Platform and Distribution (e.g., Linux Ubuntu 16.04): Linux Ubuntu 18.04
Mobile device (e.g. iPhone 8, Pixel 2, Samsung Galaxy) if the issue happens on mobile device:
TensorFlow installed from (source or binary): binary
TensorFlow version (use command below): v2.0.0-rc2-26-g64c3d38 2.0.0
Python version: 3.6
Bazel version (if compiling from source):
GCC/Compiler version (if compiling from source):
CUDA/cuDNN version:
GPU model and memory:

Describe the current behavior
If a function is decorated with tf.function, the name_scope is lost
Describe the expected behavior
The name_scope should be same with or without tf.function decoration
Code to reproduce the issue
import tensorflow as tf

@tf.function
def f():
    with tf.name_scope("f") as scope:
        tf.print(scope)

def g():
    with tf.name_scope("g") as scope:
        tf.print(scope)

def main():
    with tf.name_scope("main"):
        f()   # expect to print "main/f/", actually get "f/"
        g()

if __name__ == "__main__":
    main()

The output is
f/
main/g/

Issue is replicating for 2.0 and also TF-nightly, please find the gist of colab.Thanks!

This is working as intended. The name_scope in the function is rooted at the function graph, and not at the call site (otherwise we'd have to retrace the function every time it's called to make sure it's using the proper name_scope). At runtime you can tell the correct scoping by the nesting of the name of the call op and the ops inside the function graph.

I think that @tf.function should not change the behavior of the decorated function whenever possible. If a function behave differently after the decoration, it makes the code hard to write.
I am sure there are ways to avoid retracing, similar to experimental_relax_shapes.
The reason I notice this is that I have function doing some tf.summary.scalar(), because of the name scope, the summary tag is different after @tf.function decoration.


this.translations is undefined

Having set up ng2-translate following the readme file, I am not able to get any translation.
When debugging I noticed that my translations never contained any content of my .json language files.
The point where things go wrong is inside translate.service:
    public getTranslation(lang: string): Observable<any> {
        this.pending = this.currentLoader.getTranslation(lang).share(); // here, *this* points to TranslateService and this.translations === {}
        this.pending.subscribe((res: Object) => {
            this.translations[lang] = res; // here, *this* points to SafeSubscriber and this.translations is undefined
...

In the subscribe handler I correctly get a response containing my json file.
However, the this no longer references the TranslateService instance.
Any clues?

I  removed the mapping in the translate.service.js after which the debugger showed the correct reference. Following the debugger I noticed I was using the incorrect key...


[Bug] mcw has extra camo in zombies

Thanks for reporting! I've aware of this issue and will see if I can find a solution this weekend! 😄

I've pushed a fix for this, should be deployed in a few minutes!


CV Template added

Description
Created a CV template using HTML & CSS.
Issue:  #839
Type of change

[x] New feature (non-breaking change which adds functionality)

Checklist:

[x] I have made this from my own
[x] I have taken help from some online resourses
[x] My code follows the style guidelines of this project
[x] I have commented my code, particularly in hard-to-understand areas
[x] I have made corresponding changes to the documentation
[x] My changes generate no new warnings

ATTACH SCREEN-SHOTS

https://deploy-preview-868--cool-front-end-templates.netlify.app/cv template/

Thank you for reviewing the pr. Requested changes are done.


sync rerender when setState is called not in onXxx event listener

In the React, if it is triggered by the React of event processing (such as through the onClick event handler), setState will rerender async. Otherwise setState will rerender sync.

It's a funny coincidence that you posted this, because just a couple of days ago, I noticed the same thing, and posted about it in the conversation here: https://github.com/developit/preact-www/pull/15. See my last two comments. It appears (based on what I mention there) that this is actually an intentional difference between Preact and React (it's something "added" to Preact, according to the documentation).

Ah so this can actually be traced back to 8.x changing the async mechanism from Promise#then() (Microtasks) to setTimeout(0).  There's mounting evidence that we should switch back, especially given be negligible byte cost and Safari's Promise error swallowing no longer being an issue.  Here's the commit that effected the change, we can essentially just revert it:
https://github.com/developit/preact/commit/78014124593997d749e50ea1291a3c18731f1fe4
With that in place setState() is obviously still async, but at it's infinitely faster - Microtasks are scheduled based on the stack, and in that regard they are non-blocking but not "async" as we think of it (event loop based, a tick, etc).  I think it straddles both cases in the original issue here quite nicely.

Yes, reverting to microtask-based scheduling sounds perfect to me.

Happy to merge a PR, or I can just try to get it done.  There's a bunch of things I need to tend to in this repo this week!


Unclear README.md

From testing and reading the source code, I don't find it very clear which files shall be in the so-called training folder. I understand it shall contain traces,seen syscalls, seen args and the max seq freq. However, the format of those and their filename are specified nowhere.
If I would like to train the model on the cb-ds dataset for example, how do I proceed?
Thanks in advance, it will save me to do some reverse eng! :)

To prepare for training, follow these steps:

Use the Sysdig tool to obtain the recording in the .scap format. (otherwise you can use the CB-DS or LID-DS datasets, the links can be found in the description).

Create a training folder and include all necessary .scap files.

Execute the following training command in the terminal:
python3 main.py baseline --td training_dir (your training folder) --od output_dir (your output folder)

After executing the command, the training elements will be saved in the .pkl format in the specified output folder.

Thank you for your great work. I'm wondering which version of LID-DS you used. I noticed that LID-DS 2019 has a .csv file to tell whether a record is normal and LID-DS 2021 separates the dataset into training, testing and validation. I suppose that if I use the 2021 dataset I shall just use the records in the training folder as it contains only normal data, and if I use the 2019 dataset I would need to manually pick out the normal records for training.
Another question is that I find in the CB-DS dataset 1000 scap files for normal record and 100 or 101 scap files for each attack, while the paper says 1700 for normal and 99 for each attack. I wonder what made the difference.
I'd appreciate it if you could answer my confusion😊.


CI timeout

Description
Set CI timeout 120 min.

Needs to be set in operator-workflows. New PR: https://github.com/canonical/operator-workflows/pull/267