[py2py3] Check unittests from Slice 9 in py3

Intro
We need to make sure that the work done in the migration slices
is py3 compatible. In particular, we should make sure that the
unittests that are involved in each slice do not fail.
The schedule for this validation / bug-fixing campaign is kept at #10422
Details
This issue is about checking that the unittests from Slice 9,
issue #10133 and PR #10290, do not fail.
A non-exhaustive list of the ut that need to pass is
<empty>

In #10290 we modernized these files [1]. I mentioned in the PR description that no change was potentially too troublesome. Unless we have a way of testing these files specifically, I would suggest to simply go on with our migration and come back to these changes only if we encounter some problems at a later stage.
@amaltaro What's your opinion on how to check this?
[1]:
src/python/WMCore/WMBS/MySQL/Create.py
src/python/WMCore/WMBS/MySQL/Masks/Load.py
src/python/WMCore/WMBS/MySQL/Masks/Delete.py
src/python/WMCore/WMBS/MySQL/Masks/Save.py
src/python/WMCore/WMBS/MySQL/Masks/New.py
src/python/WMCore/WMBS/MySQL/WorkUnit/ExistsByTaskFileLumi.py
src/python/WMCore/WMBS/MySQL/WorkUnit/ExistsByID.py
src/python/WMCore/WMBS/MySQL/WorkUnit/Delete.py
src/python/WMCore/WMBS/MySQL/WorkUnit/GetByTaskFileLumi.py
src/python/WMCore/WMBS/MySQL/WorkUnit/Add.py
src/python/WMCore/WMBS/MySQL/WorkUnit/GetByID.py
src/python/WMCore/WMBS/MySQL/Workflow/LoadFromNameAndTask.py
src/python/WMCore/WMBS/MySQL/Workflow/LoadFromID.py
src/python/WMCore/WMBS/MySQL/Workflow/InsertOutput.py
src/python/WMCore/WMBS/MySQL/Workflow/Exists.py
src/python/WMCore/WMBS/MySQL/Workflow/LoadFromSpecOwner.py
src/python/WMCore/WMBS/MySQL/Workflow/Status.py
src/python/WMCore/WMBS/MySQL/Workflow/Delete.py
src/python/WMCore/WMBS/MySQL/Workflow/CheckInjectedWorkflow.py
src/python/WMCore/WMBS/MySQL/Workflow/RetriedJobs.py
src/python/WMCore/WMBS/MySQL/Workflow/GetInjectedWorkflows.py
src/python/WMCore/WMBS/MySQL/Workflow/MarkInjectedWorkflows.py
src/python/WMCore/WMBS/MySQL/Workflow/GetDeletableWorkflows.py
src/python/WMCore/WMBS/MySQL/Workflow/LoadOutput.py
src/python/WMCore/WMBS/MySQL/Workflow/LoadFromTask.py
src/python/WMCore/WMBS/MySQL/Workflow/GetFinishedTasks.py
src/python/WMCore/WMBS/MySQL/Workflow/ListForSubmitter.py
src/python/WMCore/WMBS/MySQL/Workflow/LoadFromName.py
src/python/WMCore/WMBS/MySQL/Workflow/RemoveDuplicates.py
src/python/WMCore/WMBS/MySQL/Workflow/FailedJobs.py
src/python/WMCore/WMBS/MySQL/Workflow/New.py
src/python/WMCore/WMBS/MySQL/Workflow/CountWorkflowBySpec.py
src/python/WMCore/WMBS/MySQL/Workflow/DeleteCheck.py
src/python/WMCore/WMBS/MySQL/Workflow/UpdatePriority.py
src/python/WMCore/WMBS/MySQL/Workflow/ListForJobUpdater.py
src/python/WMCore/WMBS/MySQL/Workflow/GetFinishedWorkflows.py
src/python/WMCore/WMBS/MySQL/Workflow/GetSpecAndNameFromTask.py
src/python/WMCore/WMBS/MySQL/Users/GetUserId.py
src/python/WMCore/WMBS/MySQL/Users/New.py
src/python/WMCore/WMBS/MySQL/Users/UpdateHyperNewsName.py
src/python/WMCore/WMBS/MySQL/Locations/ListSites.py
src/python/WMCore/WMBS/MySQL/Locations/SetState.py
src/python/WMCore/WMBS/MySQL/Locations/List.py
src/python/WMCore/WMBS/MySQL/Locations/GetPendingSlots.py
src/python/WMCore/WMBS/MySQL/Locations/AddPNNs.py
src/python/WMCore/WMBS/MySQL/Locations/Delete.py
src/python/WMCore/WMBS/MySQL/Locations/SetRunningSlots.py
src/python/WMCore/WMBS/MySQL/Locations/GetSiteInfo.py
src/python/WMCore/WMBS/MySQL/Locations/GetSiteSE.py
src/python/WMCore/WMBS/MySQL/Locations/GetPNNtoPSNMapping.py
src/python/WMCore/WMBS/MySQL/Locations/New.py
src/python/WMCore/WMBS/MySQL/Locations/SetPendingSlots.py
src/python/WMCore/WMBS/MySQL/Locations/GetPSNtoPNNMapping.py
src/python/WMCore/WMBS/MySQL/Locations/GetJobSlotsByCMSName.py
src/python/WMCore/WMBS/MySQL/Locations/GetJobSlots.py
src/python/WMCore/WMBS/MySQL/Locations/GetRunningSlots.py
src/python/WMCore/WMBS/MySQL/Subscriptions/ListIncomplete.py
src/python/WMCore/WMBS/MySQL/Subscriptions/LoadFromID.py
src/python/WMCore/WMBS/MySQL/Subscriptions/GetJobGroups.py
src/python/WMCore/WMBS/MySQL/Subscriptions/AddValidation.py
src/python/WMCore/WMBS/MySQL/Subscriptions/List.py
src/python/WMCore/WMBS/MySQL/Subscriptions/FailOrphanFiles.py
src/python/WMCore/WMBS/MySQL/Subscriptions/GetSemiFinishedTasks.py
src/python/WMCore/WMBS/MySQL/Subscriptions/Exists.py
src/python/WMCore/WMBS/MySQL/Subscriptions/GetCompletedFiles.py
src/python/WMCore/WMBS/MySQL/Subscriptions/LoadFromFilesetWorkflow.py
src/python/WMCore/WMBS/MySQL/Subscriptions/SiblingSubscriptionsComplete.py
src/python/WMCore/WMBS/MySQL/Subscriptions/MarkFinishedSubscriptions.py
src/python/WMCore/WMBS/MySQL/Subscriptions/GetAvailableFiles.py
src/python/WMCore/WMBS/MySQL/Subscriptions/GetFilesForMerge.py
src/python/WMCore/WMBS/MySQL/Subscriptions/MarkNewFinishedSubscriptions.py
src/python/WMCore/WMBS/MySQL/Subscriptions/InsertType.py
src/python/WMCore/WMBS/MySQL/Subscriptions/GetAvailableFilesNoLocations.py
src/python/WMCore/WMBS/MySQL/Subscriptions/GetAcquiredFiles.py
src/python/WMCore/WMBS/MySQL/Subscriptions/Delete.py
src/python/WMCore/WMBS/MySQL/Subscriptions/GetAvailableFilesMeta.py
src/python/WMCore/WMBS/MySQL/Subscriptions/GetCompletedByFileList.py
src/python/WMCore/WMBS/MySQL/Subscriptions/GetValidation.py
src/python/WMCore/WMBS/MySQL/Subscriptions/Jobs.py
src/python/WMCore/WMBS/MySQL/Subscriptions/GetFailedFiles.py
src/python/WMCore/WMBS/MySQL/Subscriptions/CompleteFiles.py
src/python/WMCore/WMBS/MySQL/Subscriptions/IDFromFilesetWorkflow.py
src/python/WMCore/WMBS/MySQL/Subscriptions/CountFinishedSubscriptionsByWorkflow.py
src/python/WMCore/WMBS/MySQL/Subscriptions/GetSubTypes.py
src/python/WMCore/WMBS/MySQL/Subscriptions/GetAllJobGroups.py
src/python/WMCore/WMBS/MySQL/Subscriptions/FailFiles.py
src/python/WMCore/WMBS/MySQL/Subscriptions/GetFilesForParentlessMerge.py
src/python/WMCore/WMBS/MySQL/Subscriptions/GetFinishedSubscriptions.py
src/python/WMCore/WMBS/MySQL/Subscriptions/GetNumberOfJobsPerSite.py
src/python/WMCore/WMBS/MySQL/Subscriptions/GetSubsWithoutJobGroup.py
src/python/WMCore/WMBS/MySQL/Subscriptions/IsCompleteOnRun.py
src/python/WMCore/WMBS/MySQL/Subscriptions/ListSubsAndFilesetsFromWorkflow.py
src/python/WMCore/WMBS/MySQL/Subscriptions/KillWorkflow.py
src/python/WMCore/WMBS/MySQL/Subscriptions/CountFinishedSubscriptionsByTask.py
src/python/WMCore/WMBS/MySQL/Subscriptions/New.py
src/python/WMCore/WMBS/MySQL/Subscriptions/AcquireFiles.py
src/python/WMCore/WMBS/MySQL/Subscriptions/SucceededJobs.py
src/python/WMCore/WMBS/MySQL/Subscriptions/SiblingSubscriptionsFailed.py
src/python/WMCore/WMBS/MySQL/Monitoring/ListJobStates.py
src/python/WMCore/WMBS/MySQL/Monitoring/DefaultFormatter.py
src/python/WMCore/WMBS/MySQL/Monitoring/ListSubTypes.py
src/python/WMCore/WMBS/MySQL/Monitoring/TaskSummaryByWorkflow.py
src/python/WMCore/WMBS/MySQL/Monitoring/FileCountBySubscriptionAndRun.py
src/python/WMCore/WMBS/MySQL/Monitoring/FailedJobsByWorkflow.py
src/python/WMCore/WMBS/MySQL/Monitoring/JobCountBySubscriptionAndRun.py
src/python/WMCore/WMBS/MySQL/Monitoring/WorkflowSummary.py
src/python/WMCore/WMBS/MySQL/Monitoring/ListRunningJobs.py
src/python/WMCore/WMBS/MySQL/Monitoring/JobCountByState.py
src/python/WMCore/WMBS/MySQL/Monitoring/JobTypeCountByState.py
src/python/WMCore/WMBS/MySQL/Monitoring/JobsByState.py
src/python/WMCore/WMBS/MySQL/Monitoring/ListJobsBySub.py
src/python/WMCore/WMBS/MySQL/Monitoring/SubscriptionStatus.py
src/python/WMCore/WMBS/MySQL/Monitoring/FailedJobsByTask.py
src/python/WMCore/WMBS/MySQL/Jobs/GetCouchID.py
src/python/WMCore/WMBS/MySQL/Jobs/IncrementRetry.py
src/python/WMCore/WMBS/MySQL/Jobs/LoadFromID.py
src/python/WMCore/WMBS/MySQL/Jobs/LoadForErrorHandler.py
src/python/WMCore/WMBS/MySQL/Jobs/SetStateTime.py
src/python/WMCore/WMBS/MySQL/Jobs/Exists.py
src/python/WMCore/WMBS/MySQL/Jobs/GetCountByState.py
src/python/WMCore/WMBS/MySQL/Jobs/GetCache.py
src/python/WMCore/WMBS/MySQL/Jobs/LoadForTaskArchiver.py
src/python/WMCore/WMBS/MySQL/Jobs/ListByStateAndLocation.py
src/python/WMCore/WMBS/MySQL/Jobs/GetLocation.py
src/python/WMCore/WMBS/MySQL/Jobs/SetCouchID.py
src/python/WMCore/WMBS/MySQL/Jobs/AddWorkUnits.py
src/python/WMCore/WMBS/MySQL/Jobs/SetOutcomeBulk.py
src/python/WMCore/WMBS/MySQL/Jobs/CompleteInput.py
src/python/WMCore/WMBS/MySQL/Jobs/ExistsByID.py
src/python/WMCore/WMBS/MySQL/Jobs/UpdateLocation.py
src/python/WMCore/WMBS/MySQL/Jobs/LoadFromIDWithType.py
src/python/WMCore/WMBS/MySQL/Jobs/Delete.py
src/python/WMCore/WMBS/MySQL/Jobs/GetOutputParentLFNs.py
src/python/WMCore/WMBS/MySQL/Jobs/GetNumberOfJobsForWorkflowTaskStatus.py
src/python/WMCore/WMBS/MySQL/Jobs/GetState.py
src/python/WMCore/WMBS/MySQL/Jobs/ChangeState.py
src/python/WMCore/WMBS/MySQL/Jobs/SetCache.py
src/python/WMCore/WMBS/MySQL/Jobs/AutoIncrementCheck.py
src/python/WMCore/WMBS/MySQL/Jobs/GetType.py
src/python/WMCore/WMBS/MySQL/Jobs/Save.py
src/python/WMCore/WMBS/MySQL/Jobs/GetWorkflowTask.py
src/python/WMCore/WMBS/MySQL/Jobs/ListForSubmitter.py
src/python/WMCore/WMBS/MySQL/Jobs/LoadFromName.py
src/python/WMCore/WMBS/MySQL/Jobs/GetTask.py
src/python/WMCore/WMBS/MySQL/Jobs/Monitoring.py
src/python/WMCore/WMBS/MySQL/Jobs/LoadFromIDWithWorkflow.py
src/python/WMCore/WMBS/MySQL/Jobs/FailInput.py
src/python/WMCore/WMBS/MySQL/Jobs/AddFiles.py
src/python/WMCore/WMBS/MySQL/Jobs/GetNumberOfJobsPerSite.py
src/python/WMCore/WMBS/MySQL/Jobs/GetFWJRByState.py
src/python/WMCore/WMBS/MySQL/Jobs/GetStateID.py
src/python/WMCore/WMBS/MySQL/Jobs/KillWorkflow.py
src/python/WMCore/WMBS/MySQL/Jobs/New.py
src/python/WMCore/WMBS/MySQL/Jobs/GetFWJRTaskName.py
src/python/WMCore/WMBS/MySQL/Jobs/GetOutputMap.py
src/python/WMCore/WMBS/MySQL/Jobs/GetNumberOfJobsPerWorkflow.py
src/python/WMCore/WMBS/MySQL/Jobs/SetLocation.py
src/python/WMCore/WMBS/MySQL/Jobs/LoadOutputID.py
src/python/WMCore/WMBS/MySQL/Jobs/LoadFiles.py
src/python/WMCore/WMBS/MySQL/Jobs/GetAllJobs.py
src/python/WMCore/WMBS/MySQL/Jobs/ListByState.py
src/python/WMCore/WMBS/MySQL/Jobs/SetFWJRPath.py
src/python/WMCore/WMBS/MySQL/JobGroup/LoadJobs.py
src/python/WMCore/WMBS/MySQL/JobGroup/LoadFromID.py
src/python/WMCore/WMBS/MySQL/JobGroup/LoadFromUID.py
src/python/WMCore/WMBS/MySQL/JobGroup/BulkNewReturn.py
src/python/WMCore/WMBS/MySQL/JobGroup/GetLocationsForJobs.py
src/python/WMCore/WMBS/MySQL/JobGroup/Exists.py
src/python/WMCore/WMBS/MySQL/JobGroup/ExistsByID.py
src/python/WMCore/WMBS/MySQL/JobGroup/Delete.py
src/python/WMCore/WMBS/MySQL/JobGroup/GetSite.py
src/python/WMCore/WMBS/MySQL/JobGroup/SetSite.py
src/python/WMCore/WMBS/MySQL/JobGroup/GetGroupsByJobState.py
src/python/WMCore/WMBS/MySQL/JobGroup/New.py
src/python/WMCore/WMBS/MySQL/Fileset/Parentage.py
src/python/WMCore/WMBS/MySQL/Fileset/LoadFromID.py
src/python/WMCore/WMBS/MySQL/Fileset/BulkNewReturn.py
src/python/WMCore/WMBS/MySQL/Fileset/List.py
src/python/WMCore/WMBS/MySQL/Fileset/Exists.py
src/python/WMCore/WMBS/MySQL/Fileset/ListFilesetByTask.py
src/python/WMCore/WMBS/MySQL/Fileset/ExistsByID.py
src/python/WMCore/WMBS/MySQL/Fileset/Delete.py
src/python/WMCore/WMBS/MySQL/Fileset/ListOpenByName.py
src/python/WMCore/WMBS/MySQL/Fileset/MarkOpen.py
src/python/WMCore/WMBS/MySQL/Fileset/BulkAddByLFN.py
src/python/WMCore/WMBS/MySQL/Fileset/BulkAdd.py
src/python/WMCore/WMBS/MySQL/Fileset/ListClosable.py
src/python/WMCore/WMBS/MySQL/Fileset/LoadFromName.py
src/python/WMCore/WMBS/MySQL/Fileset/ListOpen.py
src/python/WMCore/WMBS/MySQL/Fileset/New.py
src/python/WMCore/WMBS/MySQL/Fileset/DeleteCheck.py
src/python/WMCore/WMBS/MySQL/Fileset/CheckForDelete.py
src/python/WMCore/WMBS/MySQL/Fileset/SetLastUpdate.py
src/python/WMCore/WMBS/MySQL/JobSplitting/PeriodicSiblingComplete.py
src/python/WMCore/WMBS/MySQL/JobSplitting/ReleasePeriodicJob.py
src/python/WMCore/WMBS/MySQL/Files/GetRunLumiFile.py
src/python/WMCore/WMBS/MySQL/Files/GetChecksum.py
src/python/WMCore/WMBS/MySQL/Files/AddToFileset.py
src/python/WMCore/WMBS/MySQL/Files/GetParentInfo.py
src/python/WMCore/WMBS/MySQL/Files/DeleteParentCheck.py
src/python/WMCore/WMBS/MySQL/Files/AddChecksum.py
src/python/WMCore/WMBS/MySQL/Files/Exists.py
src/python/WMCore/WMBS/MySQL/Files/GetLocation.py
src/python/WMCore/WMBS/MySQL/Files/AddCKType.py
src/python/WMCore/WMBS/MySQL/Files/GetBulkRunLumi.py
src/python/WMCore/WMBS/MySQL/Files/ExistsByID.py
src/python/WMCore/WMBS/MySQL/Files/Delete.py
src/python/WMCore/WMBS/MySQL/Files/GetLocationBulk.py
src/python/WMCore/WMBS/MySQL/Files/AddDupsToFileset.py
src/python/WMCore/WMBS/MySQL/Files/GetParents.py
src/python/WMCore/WMBS/MySQL/Files/GetParentAndGrandParentInfo.py
src/python/WMCore/WMBS/MySQL/Files/Update.py
src/python/WMCore/WMBS/MySQL/Files/Add.py
src/python/WMCore/WMBS/MySQL/Files/GetParentIDsByID.py
src/python/WMCore/WMBS/MySQL/Files/GetByID.py
src/python/WMCore/WMBS/MySQL/Files/SetLocationByLFN.py
src/python/WMCore/WMBS/MySQL/Files/GetByLFN.py
src/python/WMCore/WMBS/MySQL/Files/AddBulkParentage.py
src/python/WMCore/WMBS/MySQL/Files/AddToFilesetByIDs.py
src/python/WMCore/WMBS/MySQL/Files/GetChildIDsByID.py
src/python/WMCore/WMBS/MySQL/Files/InFileset.py
src/python/WMCore/WMBS/MySQL/Files/AddRunLumi.py
src/python/WMCore/WMBS/MySQL/Files/SetParentage.py
src/python/WMCore/WMBS/MySQL/Files/SetParentageByJob.py
src/python/WMCore/WMBS/MySQL/Files/GetForJobSplittingByID.py
src/python/WMCore/WMBS/MySQL/Files/SetLocationForWorkQueue.py
src/python/WMCore/WMBS/MySQL/Files/DeleteCheck.py
src/python/WMCore/WMBS/MySQL/Files/Heritage.py
src/python/WMCore/WMBS/MySQL/Files/SetLocation.py
src/python/WMCore/WMBS/MySQL/Files/SetParentageByMergeJob.py
src/python/WMCore/WMBS/MySQL/Files/AddChecksumByLFN.py

I think we could test all those modules under test/python/WMCore_t/WMBS_t/, that should be good enough.
However, we can as well just deal with the other slices and get back to this one only at the very end (I think other unit tests would spot problems from these changes, those are a quite common code in our system).

It seems that some of the unittests in test/python/WMCore_t/WMBS_t are in #10537 and #10538, so we should be all right!

Since the issues mentioned in the previous comment have been closed in the meantime, I think we should be safe closing this issue. There is not much that we can do here at the moment.


A4Sound transmission in send_tracks_to_devices is broken.

mcl_actions::send_tracks_to_devices()
We never actually cache the A4Sound tracks after load, so the sendKitParams implementation is borked.
 49 uint16_t A4Class::sendKitParams(uint8_t* masks, void* scratchpad) {
 50   auto empty_track = (EmptyTrack*)scratchpad;
 51   for (uint8_t i = 0; i < NUM_A4_SOUND_TRACKS; i++) {
 52     if (masks[i] == 1) {
 53      DEBUG_PRINTLN("sending_kit_params");
 54      DEBUG_PRINTLN(i);
 55       auto a4_track = empty_track->load_from_mem<A4Track>(i);
 56       if (a4_track) {
 57         a4_track->sound.soundpool = true;
 58         a4_track->sound.toSysex();
 59       }
 60     }
 61   }
 62
 63   // TODO latency?
 64   return 0;
 65 }

There were a additional issues that were breaking a4sound transmission.
One of which was grid_task, not muting the MIDI data before sound transmission.
Fixed in 3.01

There were a additional issues that were breaking a4sound transmission.
One of which was grid_task, not muting the MIDI data before sound transmission.
Fixed in 3.01


Missing documentation makes starter-kit unsuitable to start out from

Hello
I started out with the relay-starter-kit and also worked my way through the Relay and GraphQL documentation. But there are quite a few areas that are unexplained and mysterious.
Seriously I read a lot of documentations everywhere about all these things but couldn't find any satisfying explanations for the following questions:
What is this for? I put logging but it never even gets called at all:
var {nodeInterface, nodeField} = nodeDefinitions(
  (globalId) => {
    var {type, id} = fromGlobalId(globalId);
    if (type === 'User') {
      return getUser(id);
    } else if (type === 'Widget') {
      return getWidget(id);
    } else {
      return null;
    }
  },
  (obj) => {
    if (obj instanceof User) {
      return userType;
    } else if (obj instanceof Widget) {
      return widgetType;
    } else {
      return null;
    }
  }
);

And what is the actual effect of this:
interfaces: [nodeInterface],

Maybe related to that, what does the node field here do:
var queryType = new GraphQLObjectType({
  name: 'Query',
  fields: () => ({
    node: nodeField,
    // Add your own root fields here
    viewer: {
      type: userType,
      resolve: () => getViewer(),
    },
  }),
});

And what is the magic around the id field? What is globalIdField for?
I have an id in my database and thought I could use it in my GraphQL objects:
Instead of:
id: globalIdField('User'),

I want to use my database id:
id: {
      type: GraphQLID,
      description: 'The identifier'
    },

But if I do that I get an error in the browser saying RelayQueryWriter: Could not find a type name for record '1'.
I can get rid of that error by adding __typename to my component containers Relay Query but that seems all wrong.
It would be great if you could give some deeper insides and a better explanation here and enhance the official documentation.
I asked the same on Stack Overflow
Thank you

Thanks for the question! I've answered it over at http://stackoverflow.com/questions/33399901/in-relay-what-role-do-the-node-interface-and-the-global-id-spec-play


Allow own release name definition to support Terraform deployment

Have you

[X] Read Troubleshooting Guide
[X] Searched on GitHub issues and Discussions

What steps did you take and what happened:
[A clear and concise description of what the bug is.]
Hi all,
it seems that installing the helm chart via Terraform is not possible. The Terraform resource "helm_release" does not support the option to supply the "--generate-name" option for the deployment.
I've tried to manually install the name with a fixed release name, but this also does not work. This ends in an error:
helm install csi-secrets-store-provider-azure/csi-secrets-store-provider-azure csi-provider
Error: failed to download "csi-provider" (hint: running `helm repo update` may help)

I have already downloaded and updated the repo, using "helm repo update". So this does not change the behavior.
When using the option "--generate-name", everything works fine:
helm install csi-secrets-store-provider-azure/csi-secrets-store-provider-azure --generate-name
NAME: csi-secrets-store-provider-azure-1615480240
LAST DEPLOYED: Thu Mar 11 17:30:43 2021
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None

What did you expect to happen:
I would expect that the helm chart allows to enter an own release name. Otherwise the deployment will never work with Terraform.
Anything else you would like to add:
[Miscellaneous information that will assist in solving the issue.]
I think everything has already been stated above.
Which access mode did you use to access the Azure Key Vault instance:
[e.g. Service Principal, Pod Identity, User Assigned Managed Identity, System Assigned Managed Identity]
None of them yet.
Environment:

Secrets Store CSI Driver version: (use the image tag): n/a - not installed yet
Azure Key Vault provider version: (use the image tag): n/a - not installed yet
Kubernetes version: (use kubectl version and kubectl get nodes -o wide): v1.18.14 (server and client)
Cluster type: (e.g. AKS, aks-engine, etc): AKS

@cberge908 Helm uses positional arguments and the name is the 1st expected value. Please see helm install -h output:
Usage:
  helm install [NAME] [CHART] [flags]

helm install csi-provider csi-secrets-store-provider-azure/csi-secrets-store-provider-azure instead of helm install csi-secrets-store-provider-azure/csi-secrets-store-provider-azure csi-provider

@aramase Thanks for the hint. Sorry for this silly mistake from my end.


Accept PRs for White Paper

Thank you for writing such an excellent white paper that introduces the schema so thoroughly. It is incredibly well written and complete. There are a few places where I think that I can contribute (editorially, of course -- I would never presume to change the content) and would love to submit PRs.
I cannot seem to find the right place to do that. In fact, I am sure that using the Issues in this repo is not even the best place for this message -- I apologize.
I look forward to helping, if I can!

Hi sorry for such a long delay on this.  So far I have been republishing the paper with suggestions that have been brought in via different channels (Issues is fine).  However it might be better if I converted the original to .md format so that we can all more easily contribute with PRs etc.  In the mean time, you can add more detail to the Issues and I'll try to get them in.

I also enabled Discussions for this repo - it was an oversight not to have it set.  That's probably the best place to start, before we create Issues, which then can move to PRs.

@hawkinsw There is now a markdown file for the white paper.  We can certainly accept PRs.


Not working on Mac M1

Not working on mac m1
The image after generation comes out without effect ip-adapter
Concole log error:
RuntimeError: Attempting to deserialize object on a CUDA device but torch.cuda.is_available() is False. If you are running on a CPU-only machine, please use torch.load with map_location=torch.device('cpu') to map your storages to the CPU
changing this has no effect.
Generation not start
lastest version of control net, automatic1111

for a1111 go to stable-diffusion-webui/extensions/sd-webui-controlnet/annotator/clipvision/init.py
and replace this line
clip_vision_h_uc = torch.load(clip_vision_h_uc)['uc']
with this line
clip_vision_h_uc = torch.load(clip_vision_h_uc, map_location=torch.device('cpu'))['uc']
after that go to stable-diffusion-webui/webui-macos-env.sh and replace this line
export COMMANDLINE_ARGS="--skip-torch-cuda-test --upcast-sampling --no-half-vae --use-cpu interrogate"
with this line
export COMMANDLINE_ARGS="--skip-torch-cuda-test --upcast-sampling --no-half-vae --no-half --use-cpu interrogate"
working as a charm, @xiaohu2015 thanks a lot for working on this!


Make Cookie Policy a Prismic page with inserted content

Who is this for?
Ease of maintenance of the cookie policy page; taking it off dev hands.
#10891
What is it doing for them?

[!NOTE]
A quick reminder, we used to have a Table slice, but it was not intuitive at all to use (pipe delimited CSV style) and unused, so we removed it and I don't think this warrants bringing it back. Therefore, the Cookie Policy page had to be hard-coded as it had tables throughout the body. We'd like to not have to deploy for any copy change and this is a suggestion in how we could do that. If it does not fit our standards or we don't want to open the door to hacks, please flag so!

I created a Prismic page called Cookie Policy (editable here). That page is made up of Text slice, a new one being created as a placeholder for specific tables we want to display.

I then modified our pages/cookie-policy.tsx file to fetch the data of that page.
In that file, I then find the index of the placeholders and replace them with the table containing data of the same name.
I also left the policyUpdatedDate line hard-coded, as I believe deploying changes to the value of that date is needed to re-trigger consent requesting from our users.
One TODO has to do with untransformedBody vs transformedBody as I only use the former at the moment, but I believe @gestchild is currently working on tidying that up as part of the Slice Machine work having been released.
The other TODO is around what other data we think we should get from Prismic, should we like this solution enough (e.g. metadata)

Just to write down what I said when we discussed this at our catchup. The only other way I can think to do this is to create a slice which allows an editor to choose from a controlled list of things that could be added to the page, e.g. necessary_cookie_table, analytics_cookie_table etc. , rather than using the text slice and relying on the text being entered correctly. It would also mean that we wouldn't need to take these off the untransformedBody slice and render them separately. They would just be rendered by the SliceZone, like any other slice.

I love the idea and had considered creating a "dynamic content" or "coded content" slice for situations like this one and the postOutroContent trick, which is actually specific to only one (covid) page.
I think since it's only happened twice in over 4 years, though, I'm on the side of bringing that idea back to life if we come across another use-case, what do you think @gestchild ?
(add-on: Although I still think the searchResult slice could be hard-coded as well.. used only once and not super editor-friendly)

Happy to go with this until another use case arises. It wouldn't be difficult to switch over if that happens


How to compare two image

How to compare two image using  tensorflow

@swapnilyadavmpsedc,
There are multiple options for the similar taks. One of them is extracting features from images using pre-trained models like VGG16 or Inceptionv3 and then comparing those features with metrics like cosine similarity or Euclidean distance.
https://www.tensorflow.org/api_docs/python/tf/keras/applications/vgg16/VGG16
https://www.tensorflow.org/api_docs/python/tf/keras/applications/inception_v3/InceptionV3
Also you can try training a Siamese network with image pairs and labels (similar/dissimilar). This approach learns complex similarity relationships. A Siamese Network is a type of network architecture that contains two or more identical subnetworks used to generate feature vectors for each input and compare them.
https://keras.io/examples/vision/siamese_network/
Thank you!


added Magento 2 import profile without quoteTable()

Wir wollen den Shopware Cody! :D

Hello,
thank you for creating this pull request.
I have opened an issue on our Issue Tracker for you. See the issue link: https://issues.shopware.com/issues/PT-9033
Please use this issue to track the state of your pull request.


SAKIII-4241 fixing issue with whitespace

https://jira.sakaiproject.org/browse/SAKIII-4241

Verified and merged.


[Bug]: bazel_sandbox_plugin is very slow

What happened?
https://github.com/aspect-build/rules_esbuild/pull/160 added a JavaScript plugin.
Users report on Slack that this new feature in 0.18.0 increases bundling times by an unacceptable amount.
Maybe it can simply be optimized.
Or it could use the esbuild Go API instead if someone has the time to evaluate that and re-write it.
Setting https://github.com/aspect-build/rules_esbuild/blob/main/docs/esbuild.md#esbuild_bundle-bazel_sandbox_plugin to False is the workaround, though it reverts to earlier behavior of non-hermetic esbuild sometimes not picking up changes.
Version
0.18.0
How to reproduce
No response
Any other information?
No response

By caching the resolution results for certain paths, I was able to decrease the plugin run time on one project for me from about ~7.5s to ~3.5s.  I'm going to try messing with the go plugin first before I create a PR though.
For anyone interested, my changed bazel-sandbox.js:
const path = require('path')
const process = require('process')

// Regex matching any non-relative import path
const pkgImport = /^[^.]/

const bindir = process.env.BAZEL_BINDIR
const execroot = process.env.JS_BINARY__EXECROOT

function isCachablePath(importPath) {
  // If it doesn't start with . or '/', we can't reliably
  // resolve the path from resolveDir because it may be an
  // alias

  return importPath.startsWith('.') ||
    importPath.startsWith('/') ||
    importPath.startsWith('\\')
}

// Under Bazel, esbuild will follow symlinks out of the sandbox when the sandbox is enabled. See https://github.com/aspect-build/rules_esbuild/issues/58.
// This plugin using a separate resolver to detect if the the resolution has left the execroot (which is the root of the sandbox
// when sandboxing is enabled) and patches the resolution back into the sandbox.
function bazelSandboxPlugin() {
  return {
    name: 'bazel-sandbox',
    setup(build) {
      const moduleCache = new Map()
      const alreadyResolvedPaths = new Map();
      const startTime = Date.now();
      let cacheHits = 0;
      let totalCalls = 0;
      let worstResolutionTime = 0;

      build.onEnd(() => {
        console.error('Build Time:', Date.now() - startTime);
        console.error(`Cache efficiency: ${cacheHits}/${totalCalls}`);
      });

      build.onResolve(
        { filter: /./ },
        async ({ path: importPath, ...otherOptions }) => {

          // NB: these lines are to prevent infinite recursion when we call `build.resolve`.
          if (otherOptions.pluginData) {
            if (otherOptions.pluginData.executedSandboxPlugin) {
              return
            }
          } else {
            otherOptions.pluginData = {}
          }
          otherOptions.pluginData.executedSandboxPlugin = true

          totalCalls += 1;

          let resolver;

          const promisedResolution = new Promise((resolve) => {
            resolver = resolve;

          });

          if (isCachablePath(importPath)) {
            const resolvedPath = path.resolve(otherOptions.resolveDir, importPath)

            const resolution = alreadyResolvedPaths.get(resolvedPath);

            if (resolution) {
              cacheHits += 1;
              if (resolution instanceof Promise) {
                // There's already a resolution in progress for this path.
                // We just need to wait for the result

                return await resolution;
              } else {

                return resolution;
              }

            } else {
              alreadyResolvedPaths.set(resolvedPath, promisedResolution);
            }
          }

          const start = Date.now();

          const sub = async () => {
            // Prevent us from loading different forms of a module (CJS vs ESM).
            if (pkgImport.test(importPath)) {
              if (!moduleCache.has(importPath)) {
                moduleCache.set(
                  importPath,
                  resolveInExecroot(build, importPath, otherOptions)
                )
              }
              return await moduleCache.get(importPath)
            }
            return await resolveInExecroot(build, importPath, otherOptions)
          }

          const result = await sub();

          if (isCachablePath(importPath)) {
            const resolvedPath = path.resolve(otherOptions.resolveDir, importPath)
            alreadyResolvedPaths.set(resolvedPath, result);
          }

          const resolutionTime = Date.now() - start;

          if (resolutionTime > worstResolutionTime) {
            worstResolutionTime = resolutionTime;
            const resolvedPath = path.resolve(otherOptions.resolveDir, importPath)
          }

          resolver(result);

          return result;
        }
      )
    },
  }
}

async function resolveInExecroot(build, importPath, otherOptions) {
  const result = await build.resolve(importPath, otherOptions)

  if (result.errors && result.errors.length) {
    // There was an error resolving, just return the error as-is.
    return result
  }

  if (
    !result.path.startsWith('.') &&
    !result.path.startsWith('/') &&
    !result.path.startsWith('\\')
  ) {
    // Not a relative or absolute path. Likely a module resolution that is marked "external"
    return result
  }

  // If esbuild attempts to leave the execroot, map the path back into the execroot.
  if (!result.path.startsWith(execroot)) {
    // If it tried to leave bazel-bin, error out completely.
    if (!result.path.includes(bindir)) {
      throw new Error(
        `Error: esbuild resolved a path outside of BAZEL_BINDIR (${bindir}): ${result.path}`
      )
    }
    // Otherwise remap the bindir-relative path
    const correctedPath = path.join(
      execroot,
      result.path.substring(result.path.indexOf(bindir))
    )
    if (!!process.env.JS_BINARY__LOG_DEBUG) {
      console.error(
        `DEBUG: [bazel-sandbox] correcting esbuild resolution ${result.path} that left the sandbox to ${correctedPath}.`
      )
    }

    result.path = correctedPath
  }
  return result
}

module.exports = { bazelSandboxPlugin }


File Descriptors exhausted by Cache

We are observing crashes in a Android app that are caused by the exhaustion of the available File Descriptors.
This seems to happen if many requests are Call.enqueueed. We already made sure that we only have a single OkHttp instance.
While debugging it on a rooted emulator it seems to only happen if OkHttpClient.Builder.cache() is used.
Call.enqueueing a few thousand calls, with a Cache set, leads to:

number of open File Descriptors goes up quite fast (well beyond 1k) and decreases slowly as the requests are being processed. If it does not crash because of missing File Descriptors it will go back to a normal number again once requests are finishing.

...
/proc/<pid>/fd # ls -al | wc -l
967
/proc/<pid>/fd # ls -al | wc -l
1327
/proc/<pid>/fd # ls -al | wc -l
1617
/proc/<pid>/fd # ls -al | wc -l
1963
/proc/<pid>/fd # ls -al | wc -l
1547
/proc/<pid>/fd # ls -al | wc -l
1040
/proc/<pid>/fd # ls -al | wc -l
536
/proc/<pid>/fd # ls -al | wc -l
149

and there are thousand of open File Descriptors like:
/proc/<pid>/fd # ls -al

/<path-to-the-http-cache>/c5c99e84ce2ff13078cb523c95d74dff.1.tmp
/<path-to-the-http-cache>/e4e886e180225e2e05a2e1cf94537ef9.1.tmp
/<path-to-the-http-cache>/80de10600cb6c424fe994169e1135620.1.tmp
/<path-to-the-http-cache>/043d5411a5b6f8930d8c34397b983e74.1.tmp

Call.enqueueing a few thousand calls, without a Cache set, leads to:

steady number of open File Descriptors that stays around that number while the requests are being fetched

/proc/<pid>/fd # ls -al | wc -l
150

For both runs (with and without cache) the app storage was cleared (nothing cached yet), so I think it is caused by OkHttp Cache writing all the responses to the File System.

Do you close the HTTP response when you’re done reading it?

I'm quite sure we are closing the response properly, otherwise the file descriptors should also skyrocket during the run that has no cache in place, right?
However to make sure that my understanding of kotlins use and suspend functions (suspendCancellableCoroutine) is not failing me, here is how the requests are triggered:
@Throws(IOException::class)
suspend fun get(params): Data {
    val req = Request.Builder().....build()
    httpClient.newCall(req).await().use { response ->
        return when (response.code()) {
            // just extracting some data from the response
            200  -> Data(response.header("content-type"), response.body()?.bytes() ?: throw IOException("body missing"))
            else -> throw IOException("${response.code()} - Unexpected Response during resource get")
        }
    }
}

The response is awaited with this (very similar to how it is done in gildor/kotlin-coroutines-okhttp):
suspend fun Call.await(): Response {
    return suspendCancellableCoroutine { continuation ->
        enqueue(object : Callback {
            override fun onResponse(call: Call, response: Response) {
                continuation.resume(response)
            }
            override fun onFailure(call: Call, e: IOException) {
                continuation.resumeWithException(e)
            }
        })
        continuation.invokeOnCancellation { cancel() }
    }
}

That is not safe. You'll need to use
https://github.com/Kotlin/kotlinx.coroutines/pull/1084 and pass
response::close for the cancelation lambda. If there's a race between
resume and cancel, currently, the object will leak.
On Mon, Apr 15, 2019 at 5:17 PM awenger<EMAIL_ADDRESS>wrote:

I'm quite sure we are closing the response properly, otherwise the file
descriptors should also skyrocket during the run that has no cache in
place, right?
However to make sure that my understanding of kotlins use
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.io/use.html and
suspend functions (suspendCancellableCoroutine
https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/suspend-cancellable-coroutine.html)
is not failing me, here is how the requests are triggered:
@Throws(IOException::class)suspend fun get(params): Data {
val req = Request.Builder().....build()
httpClient.newCall(req).await().use { response ->
return when (response.code()) {
// just extracting some data from the response
200  -> Data(response.header("content-type"), response.body()?.bytes() ?: throw IOException("body missing"))
else -> throw IOException("${response.code()} - Unexpected Response during resource get")
}
}
}
The response is awaited with this (very similar to how it is done in
gildor/kotlin-coroutines-okhttp
https://github.com/gildor/kotlin-coroutines-okhttp/blob/257ad2e0c3784a363876096d1bb5c201a366ded1/src/main/kotlin/ru/gildor/coroutines/okhttp/CallAwait.kt#L36-L57
):
suspend fun Call.await(): Response {
return suspendCancellableCoroutine { continuation ->
enqueue(object : Callback {
override fun onResponse(call: Call, response: Response) {
continuation.resume(response)
}
override fun onFailure(call: Call, e: IOException) {
continuation.resumeWithException(e)
}
})
continuation.invokeOnCancellation { cancel() }
}
}
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/square/okhttp/issues/4699#issuecomment-483422634, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAEEEe6IVSjnvtsbWIcBLDqcCAvIyolrks5vhOx3gaJpZM4bltzN
.

Thanks for the hint. I just tried it with the new kotlin/coroutines version and changed the await() function to:
suspend fun Call.await(): Response {
    return suspendCancellableCoroutine { continuation ->
        enqueue(object : Callback {
            override fun onResponse(call: Call, response: Response) {
                continuation.resume(response) { response.close() }
            }
            override fun onFailure(call: Call, e: IOException) {
                continuation.resumeWithException(e)
            }
        })
        continuation.invokeOnCancellation { cancel() }
    }
}

Nevertheless, if I use okhttp with the Cache the open file descriptors skyrocket and the app crashes after some time. Without the Cache it processes all requests with a maximum of ~300 open file descriptors.

We are facing the same issue on Android 4.3 (but not on on Android 6) when using okhttp cache. The following issue may be relevant on Android 4.3:
https://stackoverflow.com/questions/20367647/android-httpurlconnection-is-not-closing-eventually-results-to-socketexceptio/20417556#20417556
The solution proposed (Connection/Close header prop) is not good because we want to keep connection open to servers the android device talks to.

@yschimke I was not aware that this needed input from my side. I thought the "needs info" was related to

Do you close the HTTP response when you’re done reading it?

What do you need in terms of reproducible test case. Exhausting file descriptors and a crashing app are hard to write tests for. So I guess a sample app that has the described behavior?

@awenger Yep - something like that.  If you can hack a failing test case in
https://github.com/square/okhttp/blob/master/android-test/src/androidTest/java/okhttp/android/test/OkHttpTest.kt
it would really help.  Reopen if possible.


GlideImageLoader

hi
I can not initialize the BigImageViewer with this GlideImageLoader used in the project
BigImageViewer.initialize(GlideImageLoader.with(applicationContext));
This function with is a input type of ImageLoader but output function with is a GlideImageLoader
What should I do to initialize ?

I found the answer myself :)


lasers

:star: PR built and available in a preview environment carlossg-croc-hunter-jenkinsx-serverless-pr-42 here

/approve


Use MPS backend on Apple Silicon devices if it's available.

See #113 instead, that has a small fix on top of this Pull Request. Since this Pull Rueqst has been merged accidentally and reverted on main, I can't update this Pull Request anymore.

Problems
For the inference, it works faster by using MPS backend on Apple Silicon devices but it's not enabled by default and requires some modification to the code, which only considering CUDA availability.
Solution
Use MPS backend if it's available.

Use compatible dtype.
Enable CPU offloading only if CUDA backend is used (disabled for MPS backend, which is unnecesary because of unified memory.)
Use the nightly pytorch, which is required to address VAE issue.

NOTE: This patch is not taking trainig account at all, only for inference. I tried to make it works as well as CUDA with this patch, but because of for example, dependencies update, which may not be preferred, therefore I don't expect that this Pull Request is mergable into main. However, anyways posting here because I think it’s worth to have it for those who want to try inferencing easily on such as thier MacBook Pro.

that'd be amazing, I'm really struggling with the fp64 dtype error and was hoping for someone to find a fix

Sorry, I just clicked merge and then undid it. I will instead add an entry in the README.md so that Mac users can easily find this pull request.

Thank you for your hard work! Greatly appreciated!
Where should the app.py file go?
Not sure what I missed, but this was the error I got:
ComfyUI Error Report
Error Details

Node Type: PyramidFlowNode
Exception Type: AttributeError
Exception Message: module 'torch._C' has no attribute '_cuda_setDevice'

Stack Trace
  File "/Users/john2stai/Desktop/sd/ComfyUI/execution.py", line 323, in execute
    output_data, output_ui, has_subgraph = get_output_data(obj, input_data_all, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb)
                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

  File "/Users/john2stai/Desktop/sd/ComfyUI/execution.py", line 198, in get_output_data
    return_values = _map_node_over_list(obj, input_data_all, obj.FUNCTION, allow_interrupt=True, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

  File "/Users/john2stai/Desktop/sd/ComfyUI/execution.py", line 169, in _map_node_over_list
    process_inputs(input_dict, i)

  File "/Users/john2stai/Desktop/sd/ComfyUI/execution.py", line 158, in process_inputs
    results.append(getattr(obj, func)(**inputs))
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^

  File "/Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/PyramidFlow-ComfyUI/__init__.py", line 68, in gen_video
    torch.cuda.set_device(0)

  File "/Users/john2stai/Desktop/sd/ComfyUI/venv/lib/python3.12/site-packages/torch/cuda/__init__.py", line 478, in set_device
    torch._C._cuda_setDevice(device)
    ^^^^^^^^^^^^^^^^^^^^^^^^

System Information

ComfyUI Version: v0.2.3-5-g3c60ecd
Arguments: main.py --use-split-cross-attention
OS: posix
Python Version: 3.12.5 (main, Aug  6 2024, 19:08:49) [Clang 15.0.0 (clang-15<IP_ADDRESS>)]
Embedded Python: false
PyTorch Version: 2.6.0.dev20241016

Devices

Name: mps

Type: mps
VRAM Total:<PHONE_NUMBER>4
VRAM Free:<PHONE_NUMBER>6
Torch VRAM Total:<PHONE_NUMBER>4
Torch VRAM Free:<PHONE_NUMBER>6

Logs
2024-10-17 01:52:32,035 - root - INFO - Total VRAM 36864 MB, total RAM 36864 MB
2024-10-17 01:52:32,035 - root - INFO - pytorch version: 2.6.0.dev20241016
2024-10-17 01:52:32,035 - root - INFO - Set vram state to: SHARED
2024-10-17 01:52:32,035 - root - INFO - Device: mps
2024-10-17 01:52:32,394 - root - INFO - Using split optimization for cross attention
2024-10-17 01:52:32,724 - root - INFO - [Prompt Server] web root: /Users/john2stai/Desktop/sd/ComfyUI/web
2024-10-17 01:52:38,832 - root - INFO - Total VRAM 36864 MB, total RAM 36864 MB
2024-10-17 01:52:38,832 - root - INFO - pytorch version: 2.6.0.dev20241016
2024-10-17 01:52:38,832 - root - INFO - Set vram state to: SHARED
2024-10-17 01:52:38,833 - root - INFO - Device: mps
2024-10-17 01:52:39,401 - root - WARNING - Traceback (most recent call last):
  File "/Users/john2stai/Desktop/sd/ComfyUI/nodes.py", line 2001, in load_custom_node
    module_spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 995, in exec_module
  File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
  File "/Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/ComfyUI_LayerStyle/__init__.py", line 60, in <module>
    imported_module = importlib.import_module(".py.{}".format(name), __name__)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File<EMAIL_ADDRESS>line 90, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 995, in exec_module
  File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
  File "/Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/ComfyUI_LayerStyle/py/image_auto_crop.py", line 2, in <module>
    from .segment_anything_func import *
  File "/Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/ComfyUI_LayerStyle/py/segment_anything_func.py", line 17, in <module>
    from sam_hq.build_sam_hq import sam_model_registry
  File "/Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/ComfyUI_LayerStyle/py/sam_hq/build_sam_hq.py", line 13, in <module>
    from .modeling.tiny_vit import TinyViT
  File "/Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/ComfyUI_LayerStyle/py/sam_hq/modeling/tiny_vit.py", line 17, in <module>
    from timm.models.registry import register_model
  File "/Users/john2stai/Desktop/sd/ComfyUI/venv/lib/python3.12/site-packages/timm/models/registry.py", line 1, in <module>
    from ._registry import *
AttributeError: module 'timm.models._registry' has no attribute 'get_pretrained_cfgs_for_arch'. Did you mean: 'get_pretrained_cfg_value'?

2024-10-17 01:52:39,401 - root - WARNING - Cannot import /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/ComfyUI_LayerStyle module for custom nodes: module 'timm.models._registry' has no attribute 'get_pretrained_cfgs_for_arch'
2024-10-17 01:52:39,735 - root - INFO -
Import times for custom nodes:
2024-10-17 01:52:39,735 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/websocket_image_save.py
2024-10-17 01:52:39,735 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/AIGODLIKE-COMFYUI-TRANSLATION
2024-10-17 01:52:39,735 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/comfyui-saveimage-plus
2024-10-17 01:52:39,735 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/ComfyUI-Molmo
2024-10-17 01:52:39,735 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/ComfyUI-Miaoshouai-Tagger
2024-10-17 01:52:39,735 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/cg-use-everywhere
2024-10-17 01:52:39,735 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/ComfyUI_Noise
2024-10-17 01:52:39,735 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/ComfyUI-Inpaint-CropAndStitch
2024-10-17 01:52:39,735 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/ComfyUI-Logic
2024-10-17 01:52:39,735 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/Comfyui_TTP_Toolset
2024-10-17 01:52:39,735 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/Comfyui-fast
2024-10-17 01:52:39,735 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/ComfyUI-Lora-Auto-Trigger-Words
2024-10-17 01:52:39,735 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/ComfyUI-enricos-nodes
2024-10-17 01:52:39,735 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/ComfyUI-post-processing-nodes
2024-10-17 01:52:39,735 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/ComfyUI-WD14-Tagger
2024-10-17 01:52:39,735 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/cg-mixed-casting
2024-10-17 01:52:39,735 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/pre_cfg_comfy_nodes_for_ComfyUI
2024-10-17 01:52:39,735 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/comfyui-lama-remover
2024-10-17 01:52:39,735 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/ControlAltAI-Nodes
2024-10-17 01:52:39,735 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/comfyui_face_parsing
2024-10-17 01:52:39,735 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/ComfyUI-DDColor
2024-10-17 01:52:39,735 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/masquerade-nodes-comfyui
2024-10-17 01:52:39,735 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/ComfyUI-moondream
2024-10-17 01:52:39,735 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/ComfyUI-AutoCropFaces
2024-10-17 01:52:39,735 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/ComfyUI-TiledDiffusion
2024-10-17 01:52:39,735 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/ComfyUI-Video-Matting
2024-10-17 01:52:39,735 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/comfyui-portrait-master
2024-10-17 01:52:39,735 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/ComfyUI-Depth-Pro
2024-10-17 01:52:39,735 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/ComfyUI_IPAdapter_plus
2024-10-17 01:52:39,735 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/Comfy_KepListStuff
2024-10-17 01:52:39,735 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/ComfyUI_essentials
2024-10-17 01:52:39,735 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/ComfyUI-AdvancedLivePortrait
2024-10-17 01:52:39,735 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/Derfuu_ComfyUI_ModdedNodes
2024-10-17 01:52:39,735 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/ComfyUI-IC-Light
2024-10-17 01:52:39,735 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/ComfyUI_UltimateSDUpscale
2024-10-17 01:52:39,735 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/ComfyUI-Custom-Scripts
2024-10-17 01:52:39,735 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/OneButtonPrompt
2024-10-17 01:52:39,735 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/ComfyUI-KJNodes
2024-10-17 01:52:39,735 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/rgthree-comfy
2024-10-17 01:52:39,735 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/efficiency-nodes-comfyui
2024-10-17 01:52:39,735 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/ComfyUI-Advanced-ControlNet
2024-10-17 01:52:39,735 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/comfyui-browser
2024-10-17 01:52:39,736 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/ComfyUI-segment-anything-2
2024-10-17 01:52:39,736 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/ComfyUI-GGUF
2024-10-17 01:52:39,736 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/ComfyUI_Comfyroll_CustomNodes
2024-10-17 01:52:39,736 - root - INFO -    0.0 seconds (IMPORT FAILED): /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/ComfyUI_LayerStyle
2024-10-17 01:52:39,736 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/comfyui_controlnet_aux
2024-10-17 01:52:39,736 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/ComfyUI_NYJY
2024-10-17 01:52:39,736 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/Comfyui-ergouzi-Nodes
2024-10-17 01:52:39,736 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/ComfyUI-Florence2
2024-10-17 01:52:39,736 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/ComfyUI_tinyterraNodes
2024-10-17 01:52:39,736 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/comfy_mtb
2024-10-17 01:52:39,736 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/ComfyUI-CCSR
2024-10-17 01:52:39,736 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/ComfyUI-MingNodes
2024-10-17 01:52:39,736 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/ComfyUI-Impact-Pack
2024-10-17 01:52:39,736 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/PyramidFlow-ComfyUI
2024-10-17 01:52:39,736 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/ComfyUI-Inspire-Pack
2024-10-17 01:52:39,736 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/ComfyUI_Searge_LLM
2024-10-17 01:52:39,736 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/ComfyUI-PuLID-Flux
2024-10-17 01:52:39,736 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/ComfyUI-SUPIR
2024-10-17 01:52:39,736 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/ComfyUI-Long-CLIP
2024-10-17 01:52:39,736 - root - INFO -    0.0 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/ComfyUI-Manager
2024-10-17 01:52:39,736 - root - INFO -    0.1 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/ComfyUI-Easy-Use
2024-10-17 01:52:39,736 - root - INFO -    0.1 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/ComfyUI-BrushNet
2024-10-17 01:52:39,736 - root - INFO -    0.1 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/ComfyUI-Allor
2024-10-17 01:52:39,736 - root - INFO -    0.1 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/eden_comfy_pipelines
2024-10-17 01:52:39,736 - root - INFO -    0.3 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/ComfyUI_Stable_Makeup
2024-10-17 01:52:39,736 - root - INFO -    0.5 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/comfyui-reactor-node
2024-10-17 01:52:39,736 - root - INFO -    0.5 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/was-node-suite-comfyui
2024-10-17 01:52:39,736 - root - INFO -    0.5 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/ComfyUI_FaceAnalysis
2024-10-17 01:52:39,736 - root - INFO -    1.7 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/ComfyUI-PMRF
2024-10-17 01:52:39,736 - root - INFO -    2.5 seconds: /Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/DZ-FaceDetailer
2024-10-17 01:52:39,736 - root - INFO -
2024-10-17 01:52:39,741 - root - INFO - Starting server

2024-10-17 01:52:39,741 - root - INFO - To see the GUI go to: http://<IP_ADDRESS>:8188
2024-10-17 01:52:55,005 - root - INFO - got prompt
2024-10-17 01:52:55,921 - root - ERROR - !!! Exception during processing !!! module 'torch._C' has no attribute '_cuda_setDevice'
2024-10-17 01:52:55,923 - root - ERROR - Traceback (most recent call last):
  File "/Users/john2stai/Desktop/sd/ComfyUI/execution.py", line 323, in execute
    output_data, output_ui, has_subgraph = get_output_data(obj, input_data_all, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb)
                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/john2stai/Desktop/sd/ComfyUI/execution.py", line 198, in get_output_data
    return_values = _map_node_over_list(obj, input_data_all, obj.FUNCTION, allow_interrupt=True, execution_block_cb=execution_block_cb, pre_execute_cb=pre_execute_cb)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/john2stai/Desktop/sd/ComfyUI/execution.py", line 169, in _map_node_over_list
    process_inputs(input_dict, i)
  File "/Users/john2stai/Desktop/sd/ComfyUI/execution.py", line 158, in process_inputs
    results.append(getattr(obj, func)(**inputs))
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/john2stai/Desktop/sd/ComfyUI/custom_nodes/PyramidFlow-ComfyUI/__init__.py", line 68, in gen_video
    torch.cuda.set_device(0)
  File "/Users/john2stai/Desktop/sd/ComfyUI/venv/lib/python3.12/site-packages/torch/cuda/__init__.py", line 478, in set_device
    torch._C._cuda_setDevice(device)
    ^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: module 'torch._C' has no attribute '_cuda_setDevice'

2024-10-17 01:52:55,923 - root - INFO - Prompt executed in 0.91 seconds

Attached Workflow
Please make sure that workflow does not contain any sensitive information such as API keys or passwords.
{"last_node_id":22,"last_link_id":13,"nodes":[{"id":22,"type":"Preview Video","pos":{"0":732,"1":199},"size":{"0":440,"1":470},"flags":{},"order":3,"mode":0,"inputs":[{"name":"video","type":"VIDEO","link":13,"label":"video"}],"outputs":[],"properties":{"Node name for S&R":"Preview Video"},"widgets_values":[]},{"id":4,"type":"LoadImage","pos":{"0":-77,"1":345},"size":[320,310],"flags":{},"order":0,"mode":0,"inputs":[],"outputs":[{"name":"IMAGE","type":"IMAGE","links":[3],"label":"IMAGE"},{"name":"MASK","type":"MASK","links":null,"label":"MASK"}],"properties":{"Node name for S&R":"LoadImage"},"widgets_values":["ComfyUI_temp_dlbla_00002_.png","image"]},{"id":21,"type":"Text to Prompt","pos":{"0":-174,"1":40},"size":{"0":400,"1":200},"flags":{},"order":1,"mode":0,"inputs":[],"outputs":[{"name":"TEXT","type":"TEXT","links":[12],"slot_index":0,"label":"TEXT"}],"properties":{"Node name for S&R":"Text to Prompt"},"widgets_values":["a wizard cat, waving its magic wand, casting spells"]},{"id":1,"type":"PyramidFlowNode","pos":{"0":361,"1":270},"size":{"0":320,"1":150},"flags":{},"order":2,"mode":0,"inputs":[{"name":"prompt","type":"TEXT","link":12,"label":"prompt"},{"name":"image","type":"IMAGE","link":3,"shape":7,"label":"image"}],"outputs":[{"name":"VIDEO","type":"VIDEO","links":[13],"slot_index":0,"label":"VIDEO"}],"properties":{"Node name for S&R":"PyramidFlowNode"},"widgets_values":["768p",16,9,5]}],"links":[[3,4,0,1,1,"IMAGE"],[5,2,0,1,0,"TEXT"],[12,21,0,1,0,"TEXT"],[13,1,0,22,0,"VIDEO"]],"groups":[],"config":{},"extra":{"ds":{"scale":0.473624407447671,"offset":[648.5200009724545,547.5965866642734]}},"version":0.4}

Additional Context
(Please add any additional context or steps to reproduce the error here)

@john2stai I asumme you're trying to use kijai/ComfyUI-PyramidFlowWrapper.
app.py is a demo web UI for this original jy0205/Pyramid-Flow therefore nothing you need to deal with it however, other changes also the change in app.py I made in this patch need to be applied to the correspoinding place for the ComfyUI-PyramidFlowWrapper.
I recommend to ask it at ComfyUI-PyramidFlowWrapper repository instead of here.

For all, again, I made #113 which includes some updates on top of this Pull Request since I can no longer update this Pull Request. Those who want to try Pyramid-Flow on MacBook, see #113 instead.


Adding roadmap section

Adding the roadmap items for Production certification.

@smugcloud It is great to see a public roadmap coming up! One thing which I believe would be valuable is a paragraph about whether/when/why not yet open-sourcing the code itself.


DO NOT MERGE-Try OCP tests triggers

Signed-off-by: Flavius Lacatusu<EMAIL_ADDRESS>What does this PR do?
What issues does this PR fix or reference?
Is it tested? How?

/retest

/test

/retest

/test ?

/test all

/retest


No mp3-streaming over plugin, after Update to 2.0

Hi Petro,
since the update to the new 2.0-version, the mp3-stream to my Homepod mini doesn't work within homekit-automation.
Do I have to change a setting?
The manual-start of the shortcut on my iphone works, but now shows a messagebox with the Error: "Could not connect to Server". The mp3 is playing after a few secands.
Via Homekit, the stream is not triggerd properly. Here is the log:
[23.2.2023, 18:16:13] [@petro-kushchak/homebridge-homepod-radio] [Filmabend] Started streaming http://<IP_ADDRESS>:8585/play/kino.mp3
Error: This callback function has already been called by someone else; it can only be called one time.
at /var/lib/homebridge/node_modules/homebridge/node_modules/hap-nodejs/src/lib/util/once.ts:12:13
at /var/lib/homebridge/node_modules/@petro-kushchak/homebridge-homepod-radio/src/lib/homebridgeCallbacks.ts:19:34
at processTicksAndRejections (node:internal/process/task_queues:95:5)
Greetings from Germany!
Matt

Hi, which version of tvOS you are running on the HomePod mini? I've noticed that with latest tvOS 16.4 beta both web streaming and file streaming is not reliable...
Also could you please check this beta version of the plugin @petro-kushchak/homebridge-homepod-radio-2.0.9? It have fixes which should make audio streaming more resilient, also you can add "audio switch" accessory which will stream file when "ON" (instead of using HTTP request "/play/")
Thanks, Petro

Hi Petro.
The TvOs is 16.3.2. I'll check the beta version later.
Matt

Hit Petro.
Sry, but i find only the Version 2.0.0. The switch-setting, i've tested earlier with this version, but the stream doesn't work...
Could you send me a link to the version 2.0.9?
Thanks,
Matt

Hi, follow steps from this doc about plugin beta testing with Homebridge: https://github.com/homebridge/homebridge/wiki/How-to-Install-Alternate-Plugin-Versions

Hi Petro.
Now, I installed the beta-version 2.0.9 and set the audio-button-settings, instead of the radio-settings. Before that, I've deleted the "old" speakers in Homekit. The manual stream via "shortcuts" now works without error-message, but the stream via homekit, still doesn't start. Do I have to change the stream-url in the audio-button-setting, too?
Thanks for your support so far!
Matt

Hi, can you share plugin config that you have? Once audio-button is configured (all it needs - just file name) - you should add "switch" accessory and can switch ON/OFF to play/stop the audio

Hi Petro.
Thats it! That easy. Instead of the filename, I had set the complete Stream-URL. Thanks a lot, it now works.
Best wishes,
Matt


Googlebilling: Better exceptions on handleInstallError

(This is just a memo for me, I will implement this in the future)
When the purchaseManager can't be installed, observer's handleInstallError method is called. At the moment, it can't get recognized by a surrounding game why this is the case. The following reasons are interesting to show a special error message helping the user:

Network problems/no internet connection
No Play services on the device or user has not set up a Google account

For these cases, special Exceptions in gdx-client should be introduced extending GdxPayException and raised (NoNetworkException and ServiceNotAvailableException).
Documentation
Concerned line in code

After testing, I noticed that Billing library will not return a dedicated error code when network connection is not available. Instead, onSkuResponse is called with return code 6 (Error) leading to a GdxPayException with description "onSkuDetailsResponse failed, status code is 6".
I will change this developer-type message to be more user-friendly.


SubmitMetrics does not comply with http.Error spec, crashes on any spec-compliant error

Describe the bug
The http stdlib has this to say about http.Error*:

func Error
func Error(w ResponseWriter, error string, code int)
Error replies to the request with the specified error message and HTTP code. It does not otherwise end the request; the caller should ensure no further writes are done to w. The error message should be plain text.

However, if you follow this rule for a server which can receive Datadog metrics**, the library will crash if it receives any error generated this way. It expects JSON-formatted error strings and tries to parse any string it receives as JSON; for an error like so:
http.Error(wr, "Client Error: Headers", http.StatusBadRequest)
SubmitMetrics fails with the following message:
level=error msg="invalid character 'C' looking for beginning of value"

*An example of using net/http this way can be viewed at pkg.go.dev/net/http#example-Hijacker

**In my case the server is a proxy which lets us limit our client's access-control exceptions to a single URL we control rather than a selection of Datadog-controlled URLs. Code snippets abstract this away but are simplified versions of the real production code.
To Reproduce
Steps to reproduce the behavior:
1 Create a proxy or other endpoint which accepts HTTP traffic. It can be run anywhere - localhost:80 is fine. Set the endpoint to return a plain-text error message like the above snippet. (https://gist.github.com/jkopczyn/068fd2edd8d259a94d18e0229030d629 should be sufficient, ignoring the request entirely for brevity.)
2. Create an instance of the library which directs a SubmitMetrics request to that endpoint. Configure the library to submit metrics to a nonstandard URL. (https://gist.github.com/jkopczyn/f9dc116cc4c03b6ccaeee25d9313f902 should be sufficient; the metric body doesn't matter.)
3. Run the server and client locally, watching logs of the client.
4. The invalid character 'C' looking for beginning of value message will immediately appear.
Expected behavior
All plain-text error messages SHOULD be accepted. Other messages MAY be accepted; ideally they wouldn't be, but that's a breaking change to the API and doesn't seem crucial to do until and unless a new major version of the API is coming out.
Environment and Versions (please complete the following information):
A clear and precise description of your setup:
Go version 1.16 through 1.18 should make no difference here; different parts of the setup use both, and testing code used during development made no effort to match them. This behavior was consistent throughout.

I don't see any active severity/* labels in this repository or guidelines on how to choose one, so I haven't attempted to add any.

Hi,
Can you verify which version of the SDK you're using? I think I fixed that in #1572

I haven't specified a package version; go mod tidy selects v1.16.0 and the source has import "github.com/DataDog/datadog-api-client-go/api/v2/datadog". Since you mentioned it, I tried switching to v2.0.0 unsuccessfully. As far as I can tell there's no way to validly specify v2.x in a go.mod file for this repository; it doesn't seem to follow any of the conventions I've been able to find.

Found a way to import it, and it has the same problem. Gists are updated, but to explicitly specify packages imported and other config, see https://github.com/jkopczyn/dd-api-bug-demo/tree/main. The same error occurs.

Thanks for the detailed example. I may miss something, but I think the issue comes from the fact that your server returns 200. Because it returns 200, the client tries to parse the response payload (not parse an error), and that is what's failing.

It didn't seem to behave well when returning an error, but this example is now fairly far from the real code - the weird versioning is not compatible with our real code without a lot of work - so I'm unsure what the correct behavior is.

We had a hiccup releasing 2.0, but now things should be settled: we have a common package for client and configuration, and API and models are in their respective datadogVX package,

I'll close that one for now, feel free to reopen with more information. Thanks,


Add .podspec

There's a .podspec for ParseKit on CocoaPods, but it's not included in the official repo and that makes it a bit troublesome to try and fix some outstanding issues in the kit along with a CocoaPods-enabled app. Adding the .podspec file to the root of the repo solves the problem, so that you can always say in your Podfile:
pod 'ParseKit', path: '/some/path/on/your/local/filesystem/where/the/repo/is/checked/out'
Yours fork seems to be the most maintained on GitHub currently so I've decided to fork it and add some essential patches. ;)

I guess this may safely be closed now as not relevant anymore. Please feel free to reopen if the PR still makes sense.


Removed mac statefunc

Fix for issue #232
StateFunc is removed for mac adresses, so they work for unknown values during plan phase

Sorry for seeing this after #235 and thanks again for contributing!
As mentioned on that PR, this statefunc is required for existing tests. It also would be a breaking change since supporting dashed mac addresses was added as a feature enhancement in https://github.com/terra-farm/terraform-provider-xenorchestra/issues/114#issuecomment-768825955. Removing this statefunc isn't impossible, but it would require documentation updates (and potentially other changes) if the breaking change is deemed acceptable.
Can you please explain the steps to reproduce the error you are seeing? I tried to run a VM acceptance test that didn't set a mac address in addition to one that only performed a terraform plan. In both cases, I didn't see any errors after adding the statefunc back in.
Being able to reproduce what you are seeing would be helpful to understand what options we have available to address #235.

I understand what you mean about dashed mac. Let's close this PR for now and I will paste the example in the issue. Probably I can figure out a different way to handle it in a new PR.


feat: Allow to edit commit message

Allows users to edit the selected commit message before committing

closes #110
cc @privatenumber

Thanks, will try to review soon.
Would you be able to update the image in the README in a separate PR?

Sure. I can do that.


feat(branding) - use executable-based values

In an effort to make rebranding the CLI app a bit easier, this
changes all parsers, cmds, and settings to use a value based on
the executable name rather than the hard-coded "deis" values.
As things stand right now, the executable name built by make is
still deis, so all online help via deis help will still refer
to deis, DEIS_PROFILE, and ~/.deis/config.json, and the
default remote name is still deis.
If on windows (where the executable is deis.exe), much of this is
the same, except that the commands suggested in the online help
refer to deis.exe rather than just deis.
Renaming the executable to anything modifies all of the above to
use the new exectuable name as the basis for the information
presented.

This is awesome work and we will be happy to merge it in as soon as possible @ess ! Thank you for keeping backwards compatible with the current behaviour and leaving deis as the default name.
Just a quick problem I noticed. When I built using your branch and renamed the executable from deis to hephy. When I do hephy login it does not create the ~/.hephy/client.json as it should and I am not able to log in. It worked once I created that folder and client.json file manually. Can we fix this before merge?

@Cryptophobia good catch. I've shot up another commit that should rectify that problem. Please do let me know if anything else bubbles up.


VimTeX 2.0 - Math contex seems to be broke

Helo everyone, i updated VimTeX and every math contex snnippet stopped working, mabybe something in the definition broke. I am busy with uni now and will only be able to fix them in the winter break. I removed the 'context "math()"' and I will need to manually expand them if there  conflicts with my language (like sr). Dont recomment updating if you use the snippets daily.

See pull request #12. Worked for me.

More updates: https://github.com/lervag/vimtex/issues/1864#issuecomment-739916236.

I'm running the newest vimtex version and still have this problem.

You can just change the math environment definition to the one the the pull request #12, will fix it


keep-prd: IAM Members

Here's the initial list of folks who can participate in the env.  This will likely evolve over time.

Good to go, let's do it.


add support serverless.yml mapping(key-value) httpApi parameter

why: see #6
I have written test code where the value of httpApi is a string or mapping. (But I don't think it's best to write arrays in the test code).

Sorry for not following up here. This is now implemented in #8 with wildcard support.


Image Toggle Issue with Adaptive Cards on Microsoft Teams Web Version

Hi,
We are seeing an issue with the Adaptive Card Image toggle.
The action does not work on the Web Version.
However, it works on Desktop and Mobile Versions.
We are using Adaptive Card framework 1.5 which has the above support on Teams.

@poojaborhade - Could you please the card JSON which you are using, so that we can try once from our end?

@poojaborhade - Could you please the card JSON which you are using, so that we can try once from our end?

Hi Prasad, Thanks for your response.
Attaching the card JSON here.
The issue is only with the Teams Web Browser Version. The toggle works on Desktop and Mobile versions.
Attaching the file as text as not able to add JSON here.
ChargeCard.txt

Thanks @poojaborhade  for sharing the JSON. Also are you sending this card by Teams bot or via Power Automate/Flow?

Thanks @poojaborhade for sharing the JSON. Also are you sending this card by Teams bot or via Power Automate/Flow? Also please share screen recording of the issue.

Prasad, We are sending it via a Teams Bot. Sure, Will share the recording in a few minutes.

Thanks @poojaborhade for sharing the JSON. Also are you sending this card by Teams bot or via Power Automate/Flow? Also please share screen recording of the issue.

PFA
https://user-images.githubusercontent.com/5822344/224699440-635fd456-27d4-49fb-b55b-60c83f24fc35.mp4

@poojaborhade - We tried with the JSON provided and are observing below behaviour. Please do confirm if this is the same issue as you are facing or not.
Teams Web client:
Nothing happens on clicking the buttons.

Android: It works
https://user-images.githubusercontent.com/62237649/224700556-d7c20c82-1ac9-438d-ba2a-a3e7d9e5442d.mp4

Yes Prasad, This is exactly the issue we are facing.

Okay, great. We have raised a bug for the same and engineering team is looking into it. We will inform you once we get any further update.
Thanks!

@poojaborhade - The issue seems to be fixed now. Tested in both MS Teams desktop  Microsoft Teams Version <IP_ADDRESS>77 and web client and it works fine. Please do verify.
Thanks!

@poojaborhade - The issue seems to be fixed now. Tested in both MS Teams desktop  Microsoft Teams Version <IP_ADDRESS>77 and web client and it works fine. Please do verify. Thanks!

Thanks a lot for letting me know, Prasad. We will confirm on our end and get back to you in case of issues.


Connected to server undefined - misleading

const client = Stomp.over(() => new WebSocket('wss://some-url'));

client.heartbeat.outgoing = 20000;
client.heartbeat.incoming = 0;
client.reconnect_delay = 3000;
client.connect();

Wrong repo... moving to stomp-js/stompjs


Refile is removing animation from gifs

if provide additional metadata file is showed as a gif but without animation.

I think CarrierWave supports rescaled GIFs, but it's very, very slow. I'm not actually sure if doing this is a good idea, it can be a performance bottleneck.

But it was working before, without extension... i think the problem is format method.. maybe some fix to dont convert gif to gif can solve the problem

Hmm, strange. It's weird that MiniMagick even does anything if the format is already correct. I'd appreciate a PR for this if you have the time!

#104


fix issue #2488

fix issue #2488

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.tangkailin seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.tangkailin seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.


Replace Azure Deployment Stacks role

The Azure Deployment Stacks Contributor role doesn't appear to allow validation on the deployment stack during deployment. This seems to be a recent issue which may coincide with some recent Azure PowerShell changes with version 12+ but I cannot seem to find definitive information on this.
When running a deployment with the existing RBAC role it fails with a validation error. I have tested this on two separate environments:

When assigning the Azure Deployment Stack Owner role this works correctly. Looking at the Azure Deployment Stack Contributor role definition it seems to possess only the Read and Write permssions for the Microsoft.Resources/deploymentStacks action:
{
    "id": "/providers/Microsoft.Authorization/roleDefinitions/bf7f8882-3383-422a-806a-6526c631a88a",
    "properties": {
        "roleName": "Azure Deployment Stack Contributor",
        "description": "Allows a user to manage deployment stacks, but cannot create or delete deny assignments within the deployment stack.",
        "assignableScopes": [
            "/"
        ],
        "permissions": [
            {
                "actions": [
                    "Microsoft.Authorization/*/read",
                    "Microsoft.Insights/alertRules/*",
                    "Microsoft.Resources/deployments/*",
                    "Microsoft.Resources/subscriptions/resourceGroups/read",
                    "Microsoft.Resources/deploymentStacks/write",
                    "Microsoft.Resources/deploymentStacks/read"
                ],
                "notActions": [],
                "dataActions": [],
                "notDataActions": []
            }
        ]
    }
}

The Azure Deployment Stacks Owner role has all Microsoft.Resources/deploymentStacks permissions:
{
    "id": "/providers/Microsoft.Authorization/roleDefinitions/adb29209-aa1d-457b-a786-c913953d2891",
    "properties": {
        "roleName": "Azure Deployment Stack Owner",
        "description": "Allows a user to manage deployment stacks, including those with deny assignments.",
        "assignableScopes": [
            "/"
        ],
        "permissions": [
            {
                "actions": [
                    "Microsoft.Authorization/*/read",
                    "Microsoft.Insights/alertRules/*",
                    "Microsoft.Resources/deployments/*",
                    "Microsoft.Resources/subscriptions/resourceGroups/read",
                    "Microsoft.Resources/deploymentStacks/*"
                ],
                "notActions": [],
                "dataActions": [],
                "notDataActions": []
            }
        ]
    }
}

List of actions for Microsoft.Resources/deploymentStacks:
az provider operation show --namespace Microsoft.Resources --query "resourceTypes[?name == 'deploymentStacks'].operations[].name" --output jsonc

[
  "Microsoft.Resources/deploymentStacks/read",
  "Microsoft.Resources/deploymentStacks/write",
  "Microsoft.Resources/deploymentStacks/delete",
  "Microsoft.Resources/deploymentStacks/manageDenySetting/action"
]

Weird. The only actions containing "validate" for the whole Microsoft.Resources provider are:
az provider operation show --namespace Microsoft.Resources --query "resourceTypes[].operations[?contains(name, 'validate')]|[].name" --output jsonc

[
  "Microsoft.Resources/subscriptions/resourceGroups/validateMoveResources/action",
  "Microsoft.Resources/deployments/validate/action"
]

@richeney Happy for you to create the PR.
Good point regarding the historical environments. We have made some manual adjustments for the PowerShell elements across customer repositories already.
We can proceed to make these amendments for the RBAC permissions for these customers.


value error on minimal tagging example

I created a minimal script:
import spacy.en
nlp = spacy.en.English()
tokens = nlp(u"The cow jumped over the moon.", tag=True, parse=False)

And then ran it under Python 2.7.9, spaCy 0.70, OS X 10.10.3.
It crashes, giving the following error:
❯ python test_spacy.py
Traceback (most recent call last):
  File "test_spacy.py", line 2, in <module>
    nlp = spacy.en.English()
  File "/Users/jordansuchow/.virtualenvs/spacy/lib/python2.7/site-packages/spacy/en/__init__.py", line 76, in __init__
    tok_rules, prefix_re, suffix_re, infix_re = read_lang_data(tok_data_dir)
  File "/Users/jordansuchow/.virtualenvs/spacy/lib/python2.7/site-packages/spacy/util.py", line 16, in read_lang_data
    tokenization = json.load(file_)
  File "/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", line 290, in load
    **kw)
  File "/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/__init__.py", line 338, in loads
    return _default_decoder.decode(s)
  File "/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 366, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/json/decoder.py", line 382, in raw_decode
    obj, end = self.scan_once(s, idx)
ValueError: Expecting property name: line 567 column 1 (char 15406)

There's a trailing comma in the specials.json data file that's in the version on pip. This is fixed in the next pip release.
For now, if you run
$ python -m spacy.en.download all

The correct data will be downloaded.

Perfect, thanks.


Phase 0: Current controller/Agent function - SEPT - BETA 1.

ONIE USB Drive Requirements
There are two prerequisites for using a USB drive to install an operating system utilizing the automatic zero-touch option. The USB drive needs to be in a FAT32 or EXT2 format (ONIE doesn't support NTFS). The file name needs to be a qualified name that starts with “onie-installer”.
Installing using a USB thumb drive
To install via USB simply copy the installer image to the root directory of the USB thumb drive, using the file name onie-installer.
For this guide, assume the NOS installer image is named ACME_XYZ1234_PowerPC_Installer.bin. Let’s assume the USB drive shows up at /dev/sdd1 under Linux (it might be different on your system and OS).
Copy the installer file to the root of the USB thumb drive like this:
linux:~$ sudo mkdir /mnt/usb
linux:~$ sudo mount /dev/sdd1 /mnt/USB
linux:~$ sudo cp ACME_XYZ1234_PowerPC_Installer.bin /mnt/usb/onie-installer
linux:~$ sudo umount /mnt/USB
Now remove the USB drive from your computer and insert it into the USB port on the front (or rear) panel of your ONIE-enabled device. Power on the device and ONIE will discover the onie-installer file on the root of the USB drive and execute it.

*https://opencomputeproject.github.io/onie/user-guide/index.html

ONIE: Image Discovery and Execution
The primary responsibility of ONIE is to locate a network operating system (NOS) installer and execute it.
Platform Name and Identification
For identifying the running platform. ONIE uses the following definitions:

Arch – The CPU architecture. The currently supported architectures are:

arm.

PowerPC.

x86_64.

machine – A string of the form _.

machine-revision – A string of the form r, used to track different hardware revisions of a machine

platform – A string of the form --

switch-silicon-vendor – A string of one of the following, used to track ASIC silicon vendor:

The allowable characters in the above strings are:
VENDOR - cannot contain _ (underscore) or - (hyphen) characters
MODEL - cannot contain - (hyphen) character. _ (underscore) is OK
ARCH - cannot contain _ (underscore) or - (hyphen) characters
Installer Discovery Methods
ONIE attempts to locate the installer through a number of discovery methods. The first successful method found is used to download and run an installer.
Even though an installer is successfully found, the installer can fail, in which case ONIE moves on to the next discovery method.
The following methods are tried in this order:

Statically configured (passed from boot loader).
Local file systems (USB for example).
Exact URLs from DHCPv4.
Inexact URLs based on DHCP responses.
IPv6 neighbors.
TFTP waterfall.

The discovery methods are tried repeatedly, forever, until a successful image install occurs.
The general image discovery procedure is illustrated by this pseudo-code:
while (true) {
  Configure Ethernet management console
  Attempt discovery method 1
  Attempt discovery method 2
  ...
  Attempt discovery method N
  Sleep for 20 seconds
}

Default File Name Search Order
In a number of the following methods, ONIE searches for default file names in a specific order. All the methods use the same default file names and search order, which are described in this section.
The default installer file names are searched for in the following order:

onie-installer--_-r<machine_revision>
onie-installer--_-r<machine_revision>.bin *
onie-installer--_
onie-installer--_.bin *
onie-installer-_
onie-installer-_.bin *
onie-installer-<cpu_arch>-<switch_silicon_vendor>
onie-installer-<cpu_arch>-<switch_silicon_vendor>.bin *
onie-installer-
onie-installer-.bin *
onie-installer
onie-installer.bin *

ONIE 2017.08 added the .bin extension to all the default file names. Previous ONIE versions do not look for file names with the .bin extension.
For a hypothetical x86_64 machine, the default installer file names would be:
onie-installer-x86_64-VENDOR_MACHINE-r0
onie-installer-x86_64-VENDOR_MACHINE-r0.bin
onie-installer-x86_64-VENDOR_MACHINE
onie-installer-x86_64-VENDOR_MACHINE.bin
onie-installer-VENDOR_MACHINE
onie-installer-VENDOR_MACHINE.bin
onie-installer-x86_64-SWITCH_SILICON_VENDOR
onie-installer-x86_64-SWITCH_SILICON_VENDOR.bin
onie-installer-x86_64
onie-installer-x86_64.bin
onie-installer
onie-installer.bin

ONIE 2016.05 introduced onie-installer-<cpu_arch>-<switch_silicon_vendor>. All previous ONIE versions do not include this naming item.
For the exact file names used for your specific hardware platform please contact your NOS vendor or your hardware vendor.
Local File System Method - USB Stick
In this method, ONIE searches the partitions of locally attached storage devices looking for one of the ONIE default installer file names.
This method is intended for the case where the NOS installer is available on a USB memory stick plugged into the front panel.
Two file system types are supported, the popular vFAT partition type (common on commercially available USB sticks) and Linux’s ext2.
Note
OSX’s Disk Utility by default will write out an unsupported partition type. Please use the diskutil command line tool for formatting:

# Find USB drive

% diskutil list
/dev/disk2
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *8.1 GB     disk2
   1:               Windows_NTFS ONIE                    8.1 GB     disk2s1

# Write out correctly label (wipes all data on drive)

% sudo diskutil eraseDisk FAT32 ONIE MBRFormat /dev/disk2
Started erase on disk2
Unmounting disk
Creating the partition map
Waiting for the disks to reappear
Formatting disk2s1 as MS-DOS (FAT32) with name ONIE
512 bytes per physical sector
/dev/rdisk2s1: 15697944 sectors in 1962243 FAT32 clusters (4096 bytes/cluster)
bps=512 spc=8 res=32 nft=2 mid=0xf8 spt=32 hds=255 hid=2 drv=0x80 bsec=15728638 bspf=15331 rdcl=2 infs=1 bkbs=6
Mounting disk
Finished erase on disk2

The general algorithm for locating the installer on local storage proceeds as follows:
foreach $partition in /proc/partitions {
  if able to mount $partition then {
    if default file name exists {
      Add partition to found_list
    }
  }
}

foreach $partition in found_list {
  Run installer from $partition
}

source: https://opencomputeproject.github.io/onie/design-spec/discovery.html

Task:
Preparing an onie build for kvm :

We need onie-kvm_x86_64.qcow2, onie_efi_vars.fd, onie_efi_code.fd without any modifications, just upstream ideally one recent, like the latest release, one from 2-3 years ago, and one 5+ years ago if that's possible.

Steps:
1 - git clone --recurse-submodules git@github.com:opencomputeproject/onie.git
2 - ./due --create --platform linux/amd64 --name onie-build-debian-11 --prompt ONIE-11 --tag onie-11 --use-template onie --from debian:11 --description 'ONIE Build Debian 11'
3 - due --run
3 - cd onie/build-config
4 - make MACHINE=kvm_x86_64 signing-keys-generate
6 - make MACHINE=kvm_x86_64 -j4 shim-self-sign
7 - make MACHINE=kvm_x86_64 -j4 all demo recovery-iso
9 - cd /onie/emulation:
./onie-vm.sh update-m-usb
./onie-vm.sh run --m-embed-onie --m-onie-iso ../build/images/onie-recovery-x86_64-kvm_x86_64-r0.iso
Artifacts available at:
http://<IP_ADDRESS>/cesar/

Hedgehog ONIE Build for KVM:
https://github.com/githedgehog/kvm_onie


Increase tolerance on one test

Increase tolerance on one test to work on 32bit.

This tolerance change lets this test pass on quango.  To-be checked on GRETA.


chore: bdd-sbrp-import-1583169770 to 0.0.1

chore: Promote bdd-sbrp-import-1583169770 to version 0.0.1

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by:
To fully approve this pull request, please assign additional approvers.
We suggest the following additional approvers:
If they are not already assigned, you can assign the PR to them by writing /assign  in a comment when ready.
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment


Table metadata in different projects

I can't access table metadata in other projects, only the one that is used when creating BigQuery object.
I would like to have an argument (optional) in dataset where I could specify a projectId that overrides the default one when looking up table metadata.

I'm going to go ahead and say we aren't very likely to support this. I would suggest making additional BQ instances per project ID.


Shouldn't we check the default client at the pac4j core level

I see that you check if the default client is part of the clients: https://github.com/pac4j/dropwizard-pac4j/blob/master/src/main/java/org/pac4j/dropwizard/Pac4jFactory.java#L326
Shouldn't we check this in the Clients component directly?

I'm not sure I understand the problem.
To rephrase what is happening in this code: the user choose a default client (to be set as the Clients.getDefaultClient()) but he can only do so with a String in the YAML and Clients expects a Client. So we simply find the corresponding client from all the clients declared in the YAML file.
Do you mean it would be best to use Clients.getClients instead of clients? For now it would be exactly the same I think, no?

No, I think about the check that the default client is one of the defined clients (otherwise, you can't set it).

Sorry ^^ I still don't get your point, I'm a bit slow this morning :)
What could we do instead of what we are currently doing?

No problem. Let's take an example. I have the FacebookClient and the FormClient defined in the Clients.
Let's say that I want to add the SAML2Client as a default client, it won't complain.
So my idea is to check that the SAML2Client is already one of the defined clients (FacebookClient,  FormClient)  which is false in that case.
Is it clearer?

Isn't that what is already happening with this code?
This would be trigerred:
            if (!found) {
                throw new IllegalArgumentException("Client '" + defaultClient
                        + "' is not one of the configured clients");
            }

Sure, but it's in the Dropwizard source code: shouldn't we move that to the pac4j-core module, in the Clients class, at the setDefaultClient level?

aaah, yes, ok, that's a good idea! sorry for the confusion :)

Tracked here: https://github.com/pac4j/pac4j/issues/870

Done and addressed in: https://github.com/pac4j/dropwizard-pac4j/pull/28 also...


[DEVELOP] new linked message doesn't works

 const newlyLinked = m.authenticationState === "NEWLY_LINKED";
 if (newlyLinked) {
   m.say("home_user.enter.newlyUser.1", { name: NAME });
   m.say("home_user.enter.newlyUser.2", { name: NAME });

   return;
 }

message :
Alright. Here's the test version of cela library dev.
Welcome back to your EDRLAB Library! What would you like to do?
instead of
Welcome back to your CELA Library!
Congratulations! You have succesfully linked your account and can now access all of your favorite books!
Would you like to search for a specific book or author,  discover our top 3 picks or would you prefer starting a book from your bookshelf?


vcra file not extracting

i got a vrca file and tried to extract the contents of it and it had an error

No promises, but you can try my AssetRipper fork.


Migrate to cherrypy wsgi instead of eventlet

Description:
This migrates our WSGI server to use CherryPy instead of Eventlet. We tried a lot of approaches to get it to work but an asynchronous server just doesn't fare well with a threaded application as Home Assistant.
Things that are fixed now:

Camera streaming completely blocked any other request from happening.
Eventlet depended on greenlet which had a C-extension, causing installation troubles for people running it on Synology.
No HTTP responses handled while handling a service request that came in via API

Stays compatible with the SSL work of this release.
Related issue (if applicable): fixes #2329
Example entry for configuration.yaml (if applicable):
http:

Checklist:
If the code does not interact with devices:

[ ] Local tests with tox run successfully. Your PR cannot be merged unless tests pass
[x] Tests have been added to verify that the new code works.

CC @JshWright

Just a couple of observations:

Installation works flawless on Fedora in a venv

16-06-29 09:52:40 INFO (MainThread) [homeassistant.util.package] Attempting install of cherrypy==6.0.2

Traceback (only first start,  could be a false-positive)

16-06-29 09:52:45 INFO (Timer) [homeassistant.core] Timer:starting
Exception in thread WSGI-server:
Traceback (most recent call last):
  File "/usr/lib64/python3.4/threading.py", line 920, in _bootstrap_inner
    self.run()
  File "/usr/lib64/python3.4/threading.py", line 868, in run
    self._target(*self._args, **self._kwargs)
  File "/home/fab/Documents/repos/home-assistant/homeassistant/components/http.py", line 314, in start
    from cherrypy import wsgiserver
ImportError: No module named 'cherrypy'

API works as expected
SSE works as well

No issues while running for a couple of hours.

And this traceback is gone too :smile:
16-06-29 18:07:00 INFO (WSGI-server) [homeassistant.components.http] Traceback (most recent call last):
  File "/home/fab/.homeassistant/deps/eventlet/wsgi.py", line 506, in handle_one_response
    write(b''.join(towrite))
  File "/home/fab/.homeassistant/deps/eventlet/wsgi.py", line 453, in write
    wfile.flush()
  File "/usr/lib64/python3.4/socket.py", line 394, in write
    return self._sock.send(b)
  File "/home/fab/.homeassistant/deps/eventlet/greenio/base.py", line 379, in send
    return self._send_loop(self.fd.send, data, flags)
  File "/home/fab/.homeassistant/deps/eventlet/greenio/base.py", line 366, in _send_loop
    return send_method(data, *args)
BrokenPipeError: [Errno 32] Broken pipe

So much <3