disabled blocks are evaluated

Consider keeping them out of evaluation and making sure the object is deleted upon disable. This may free up claims to unused resources like for example the sdr blocks.

https://github.com/pothosware/pothos/commit/16d8f80b8be3dce2ae6524a3f2dc3b3845038b76
The one side effect of this change is that the block is loaded as disabled, it remains unevaluated until its enabled. Basically the properties panel doesnt know the data types of the expressions.

Much better. Now disabled blocks dont hang onto resources. There might be an unintended side effect still,  but time will tell. https://github.com/pothosware/pothos/commit/66f0bc94104ebf6f06ef0e321422b77bba90e59d


main field in package.json raise error under pm2 enviromment

Hi, I have a question in main field in package.json.

main field in package.json

// ...
"main": "dist/index.js",
// ...

ls -al result on installed package

drwxr-xr-x imjuni staff 256 B  Mon Feb 21 16:20:25 2022  constant/
drwxr-xr-x imjuni staff 192 B  Mon Feb 21 16:20:24 2022  decorator/
drwxr-xr-x imjuni staff 256 B  Mon Feb 21 16:20:25 2022  domain/
drwxr-xr-x imjuni staff 192 B  Mon Feb 21 16:20:25 2022  enum/
drwxr-xr-x imjuni staff 192 B  Mon Feb 21 16:20:25 2022  exception/
drwxr-xr-x imjuni staff 192 B  Mon Feb 21 16:20:25 2022  explorer/
.rw-r--r-- imjuni staff 224 B  Sat Oct 26 17:15:00 1985  index.d.ts
.rw-r--r-- imjuni staff 957 B  Sat Oct 26 17:15:00 1985  index.js
drwxr-xr-x imjuni staff 320 B  Mon Feb 21 16:20:25 2022  interface/
.rw-r--r-- imjuni staff 1.0 KB Sat Oct 26 17:15:00 1985  LICENSE
.rw-r--r-- imjuni staff 1.8 KB Tue Mar  8 12:59:45 2022  package.json
.rw-r--r-- imjuni staff 1.9 KB Sat Oct 26 17:15:00 1985  queue.module.d.ts
.rw-r--r-- imjuni staff  10 KB Sat Oct 26 17:15:00 1985  queue.module.js
.rw-r--r-- imjuni staff  27 KB Sat Oct 26 17:15:00 1985  README.md
drwxr-xr-x imjuni staff 224 B  Mon Feb 21 16:20:24 2022  service/
.rw-r--r-- imjuni staff 110 KB Sat Oct 26 17:15:00 1985  tsconfig.prod.tsbuildinfo
drwxr-xr-x imjuni staff 320 B  Mon Feb 21 16:20:25 2022  util/

installed package don't have a dist directory.

pm2 execution environment error raised by main field

(node:16111) [DEP0128] DeprecationWarning: Invalid 'main' field in<EMAIL_ADDRESS>of 'dist/index.js'. Please either fix that or report it to the module author
(Use `node --trace-deprecation ...` to show where the warning was created)

I change 'dist/index.js' to 'index.js' after execute without error.

environment

node 16.14.0
typescript 4.6.2
pm2 5.2.0
@nestjs/common 8.2.6
@team-supercharge/nest-amqp 3.0.3

How can I fix this?

Fixed by #60


Publish package on pypi.org

It would be nice to have this package publish on PyPi also.

Ohh man. I've never done that. Let me see what I can do. :-)

This one explains at all nicely:
https://packaging.python.org/tutorials/packaging-projects/


Fix IP field name and add namespace support in Cassandra example

Fixes IP field name in KubernetesSeedProvider.java (ip must be in lowercase) and almost fixes #10034 (the new version of the image needs to be pushed to gcr.io/google_containers).
kubernetes-cassandra.jar was built with jdk 1.7.

Thanks for the PR!  I would like to double check this myself, and then this is good to merge.
--brendan

@mwielgus I'm not sure but, maybe you should use the namespace in url too? Something like this:
        String podNamespace = getEnvOrDefault("POD_NAMESPACE", "default");
        String host = String.format("https://kubernetes.%s.cluster.local", podNamespace);
        String serviceName = getEnvOrDefault("CASSANDRA_SERVICE", "cassandra");
        String path = String.format("/api/v1/namespaces/%s/endpoints/", podNamespace);

It works without this. And, at least on my cluster, kubernetes service is in the default namespace.

@brendanburns is it good to go?

LGTM, @quinton-hoole can you take a look?

I'm happy to take a look when I have time, but it's not at the top of my priority list right now.  Give the U.S. vacation, it might only happen next week.

Ping :)

LGTM


Allow consuming a dependency from a ServiceScope with the unique name (string) instead of the ServiceKey object.

Category
[X ] Bug
[X ] Enhancement / Suggestion
Not sure which one it is so will leave it to you guys :)
I have uploaded my entire code for this issue here: https://github.com/vman/ServiceScope-WIP/tree/master/src/webparts/spRequestor
Also added comments in the code explaining the problem. Let me know if I am making a mistake somewhere.
Expected or Desired Behavior
I have created a ServiceScope and registered my service mappings using the following code:
    const serviceScope: ServiceScope = ServiceScope.startNewRoot();
    const listServiceKey: ServiceKey<IListService> = ServiceKey.create<IListService>("listservicekey", ListService);
    const loggingServiceKey: ServiceKey<ILoggingService> = ServiceKey.create<ILoggingService>("loggingservicekey", LoggingService);
    serviceScope.finish();

Now to instantiate my services: Expected behavior is that I would be able to consume my services from the ServiceScope by using the uniquename string used in the mapping.
const listServiceInstance: IListService = serviceScope.consume("listservicekey");
Observed Behavior
But the ServiceScope.consume method only accepts a ServiceKey<T> object as the parameter. So we have to consume it using the following code:
const listServiceInstance: IListService = serviceScope.consume(listServiceKey);
This is possible if you have your ServiceKey object ready in the same class but this will not be the case in most scenarios.
In most cases, you would be doing the consuming from where the ServiceKey object is not available e.g. the constructor of a class. In the following code, I want to instantiate my LoggingService class from the constructor of my ListService class.
So the only option in such cases is to create a new ServiceKey object which means there is tight coupling between classes.
constructor(serviceScope: ServiceScope) {

    this.httpClient = new HttpClient(serviceScope);

    //It would be nice to use the LogginService here by consuming it from the serviceScope object passed in from the contructor.
    //It will have to be instantiated by consuming it from the ServiceScope;

    serviceScope.whenFinished(() => {
      //It is not possible to consume a dependency by just using the unique name of the ServiceKey.
      //this.loggingService = serviceScope.consume("loggingservicekey");

      //So we have to resort to creating a ServiceKey<ILoggingService> object and using it to consume the ILoggingService dependency.
      //This also means that we have to use the LoggingService class here which means there is tight coupling between ListService and LoggingService classes.
      this.loggingServiceKey = ServiceKey.create<ILoggingService>("loggingservicekey", LoggingService);
      this.loggingService = serviceScope.consume(this.loggingServiceKey);
    });

  }

I think I have figured it out. I will need to import the ServiceKeys in order to access them. I have updated my code, if someone can have a look and check if that is the expected way to register and consume services from the ServiceScope:
I have created a class "ServiceLocator":
https://github.com/vman/ServiceScope-WIP/blob/master/src/webparts/spRequestor/ServiceLocator.ts
and then use that to register and consume the services from the webpart class:
https://github.com/vman/ServiceScope-WIP/blob/master/src/webparts/spRequestor/SpRequestorWebPart.ts
and from custom classes:
https://github.com/vman/ServiceScope-WIP/blob/master/src/webparts/spRequestor/services/ListService.ts

The ServiceScope is a somewhat advanced plumbing feature that isn't intended to the everyday API for working with web parts.  This is sketched out in the API documentation, however I will write up a wiki page that gives some more detail.
Here are some additional comments regarding your specific code/questions:
1. Request for string keys

In most cases, you would be doing the consuming from where the ServiceKey object is not available e.g. the constructor of a class. In the following code, I want to instantiate my LoggingService class from the constructor of my ListService class.
So the only option in such cases is to create a new ServiceKey object which means there is tight coupling between classes.

The ServiceScope uses object keys instead of string keys by design, for a couple reasons:

It ensures that there is always a default implementation.  If every call to serviceScope.consume() had to consider the possibility that the service might be unavailable, the code would quickly become very complex. The SPFx framework uses runtime versioning (i.e. the web part developer has no control over the application/framework bundles that are loaded on the page).  What would happen if you developed/tested your web part for application A which provides service S, but then an author added your web part to application B, which failed to provide this service?  Your code would need a backup strategy for each service that might be missing.  ServiceScope addresses this concern by requiring your serviceKey to include a default implementation of the interface.

It ensures uniqueness.  With different developers creating components that get mixed together into our page (again, via runtime versioning), how do we ensure that two developers don't accidentally define the same string?

2. ListService approach
export class ListService implements IListService {

  private httpClient: HttpClient;
  private loggingService: ILoggingService;

  constructor(serviceScope: ServiceScope) {

    this.httpClient = new HttpClient(serviceScope);  <<<=== INCORRECT

The HttpClient is a service, so you would consume it via serviceScope.consume(httpClientServiceKey); otherwise, you are constructing a new instance of the object which is inefficient.
3. Logging Service
export class LoggingService implements ILoggingService {

  public log(message: any){
      console.log(message);
  }

  public warn(message: any)
  . . .
}

Were you aware that there is already a Log class in sp-client-base?
4. ServiceLocator design
export class ServiceLocator {

  public static serviceScope: ServiceScope;
  public static ListServiceKey: ServiceKey<IListService>;
  public static LoggingServiceKey: ServiceKey<ILoggingService>;

  public static Init(){
    this.serviceScope = ServiceScope.startNewRoot();
    this.ListServiceKey = ServiceKey.create<IListService>("listservicekey", ListService);
    this.LoggingServiceKey = ServiceKey.create<ILoggingService>("loggingservicekey", LoggingService);
    this.serviceScope.finish();
  }

  public static getServiceInstance<T>(serviceKey: ServiceKey<T>): T {
      return this.serviceScope.consume(serviceKey);
  }
}

In general, there should only be one call to ServiceScope.startNewRoot() for the entire application.  Web parts receive their scope via BaseClientSideWebPart.context.serviceScope.  If your intent is to add your own services to the existing serviceScope, you can simply call ServiceScope.consume() which will automatically construct the default implementation.  If you want to set up a secondary implementation of your interface (i.e. not the default implementation), then you would create a child scope by calling this.context.serviceScope.startNewChild.
Theoretically, the ServiceScope API is already a service locator pattern, so it doesn't really make sense to introduce your own "ServiceLocator" class.  Rather, you should simply define whatever services/keys you want, and then consume them from your code.  If you need to register non-default instances, you would do this by creating a child scope as part of the regular initialization for your web part and/or unit test.
5. When to use ServiceScope
However, as I will explain in the wiki note, the reason for factoring your code in this way is to pass dependencies around in a decoupled code base, which is a somewhat advanced scenario.  If you are coding a simple web part and don't have that need, it would be simpler to just pass your dependencies explicitly to your class constructors.   All the interesting system API's are already accessible via BaseClientSideWebPart.context.

Thanks @pgonzal! Appreciate the detailed answer. Agree that this is an advanced feature and should only be used if the code base is going to be large enough.
1. Request for string keys

It ensures that there is always a default implementation.
It ensures uniqueness.

This makes sense. When I created the issue, it was't clear to me how to consume the services with the ServiceKey objects. Thanks for this.
2. ListService approach
The HttpClient is a service, so you would consume it via serviceScope.consume(httpClientServiceKey);
Nice one! The only addition I had to do was to consume it inside the whenFinished callback
constructor(serviceScope: ServiceScope) {
    serviceScope.whenFinished(() => {
      this.httpClient = serviceScope.consume(httpClientServiceKey);
    });
}

Otherwise, I got the following error:

Unable to load web part script resources due to: Error: Cannot consume services during autocreation.

3. Logging Service

Were you aware that there is already a Log class in sp-client-base?

I wasn't aware of this so thanks for that! The reason I had created a custom logging services was just for illustration purposes.
4. ServiceLocator design
It makes sense not to re-create your own "ServiceLocator" given that ServiceScope is a service locator already. It would make sense though to have all your service/key registrations defined in a single location.
Thanks again for the in depth response :)

Thanks @pgonzal  just a quick question about creating a child scope to register the MockService, is this so that the root ServiceScope is not polluted with default implementations as well as mocks for all services?

The primary reason for having child scopes is to create a nested context with different service objects.  For example, suppose your LoggingService collects error logs for diagnostic purposes and uploads them to a telemetry server, and there are various configuration settings (e.g. name of component that is doing the logging, where to send the error information, whether to include verbose logs, etc).  If your application is organized into big components (e.g. the authored pages, the admin panel, the background tasks) then you could create a child scope for each area.  Each scope would have its own LoggingService instance with a distinct configuration, e.g. maybe background tasks get a lower priority than the admin panel, etc.  Code that uses the LoggingService would behave differently depending on which scope it's running from.
There is also a second, more pragmatic reason for creating new scopes, which is that that you cannot add more services into a scope after ServiceScope.finish() has been called.  This is part of the "two-stage initialization" that I described in the technical note.  This restriction requires system architects to put a little bit more thought into how the services get registered, but it makes life much simpler for consumers and eliminates a bunch of counterintuitive bugs.

Thanks @pgonzal just a quick question about creating a child scope to register the MockService, is this so that the root ServiceScope
is not polluted with default implementations as well as mocks for all services?

That was just an example.  In a unit test, we usually create a new isolated root scope for each test, and it's fine to add your services directly to that root.  In a real application however, there should only be one root scope.  By the time a web part is loaded, the root scope is already finished, so you need to create child scope if you want to register an alternative service implementation there.

Also, I have followed your guidance on the OrgChart webpart sample I have submitted to
the sp-dev-fx-webpart repo: https://github.com/vman/sp-dev-fx-webparts/tree/master/samples/OrganisationChart

This code looked a little odd to me:
  private getPropertiesForUsers(userLoginNames: string[]): Promise<IPerson[]> {
    return new Promise<IPerson[]>((resolve, reject) => {

      const arrayOfPersons: IPerson[] = [];

      const batchOpts: IODataBatchOptions = {};

      const odataBatch: ODataBatch = new ODataBatch(this.serviceScope, batchOpts);

I would just call this.httpClient.beginBatch(), and then you can avoid persisting the serviceScope beyond your constructor.

I'm going to go ahead and close this issue.  Feel free to reopen it if you have more questions.


[Bug]: If the describe table query is not successful, the error message doesn't clearly mentions what exactly went wrong

Is there an existing issue for this?

[X] I have searched the existing issues

Description
If the describe table query is not successful, the error message should clearly mentions what exactly went wrong.
Actual reason:
User: arn:aws:iam::391311798816:user/dynamodb-tester is not authorized to perform: dynamodb:DescribeTable on resource: arn:aws:dynamodb:ap-south-1:391311798816:table/one because no identity-based policy allows the dynamodb:DescribeTable action (Service: DynamoDb, Status Code: 400, Request ID: 9V6HVSQGP14MISMI84NTCFV55BVV4KQNSO5AEMVJF66Q9ASUAAJG, Extended Request ID: null)
Steps To Reproduce

create a dynamo datasource
create a describe table query
user a table name which exist in the system
Observe - There is an error

Public Sample App
No response
Environment
Production
Issue video log
https://knynrq7fk9.vmaker.com/record/EvJunWZI8cMdatOY
Version
1.9.9

@subrata71 Test passed now. Checked with both valid and invalid names and getting the desired error message.


Missing environment variable for deploy_rule_templates.py

Another environment variable for AWS default region needs to be added to compliance-account-initial-setup.yaml since  - python ./deploy_rule_templates.py $AWS_DEFAULT_REGION $OUTPUT_BUCKET_NO_REGION $ENGINE_RULE_NAME $OTHER_ACTIVE_REGIONS in buildspec_deploytemplates.yaml takes 4 arguments.
  CodeBuildRuleDeployProject:
    Condition: IsMainRegion
    Type: AWS::CodeBuild::Project
    Properties:
      ServiceRole: !Join [ ":", ["arn:aws:iam:", !Ref 'AWS::AccountId', "role/ComplianceEngine-CodeBuildRole"]]
      Artifacts:
        Type: CODEPIPELINE
      Name: Compliance-Rule-Template-Deploy
      Description: Deploy the Config Rules CloudFormation to be deployed
      Environment:
        Type: LINUX_CONTAINER
        ComputeType: BUILD_GENERAL1_SMALL
        Image: aws/codebuild/python:3.6.5
        EnvironmentVariables:
         - Name: AWS_DEFAULT_REGION
           Value: !Ref 'AWS::Region'
         - Name: OUTPUT_BUCKET_NO_REGION
           Value: !Join [ "-", [ !Ref CodebuildDestinationS3BucketConfig, !Ref 'AWS::AccountId']]
         - Name: OTHER_ACTIVE_REGIONS
           Value: !If [ OtherActiveRegions, !Ref OtherActiveRegions, 'none']
         - Name: ENGINE_RULE_NAME
           Value: !Ref EngineComplianceRule

The AWS_DEFAULT_REGION is part of the default set of variable, available in CodeBuild: https://docs.aws.amazon.com/codebuild/latest/userguide/build-env-ref-env-vars.html
Hence, no need to pass it from the CloudFormation as a customer-defined environment variables.
Are you experiencing any issues?


install *.ipp files along with other header files

The current vcpkg port is broken since the ipp files are not installed

Thank you for sending the PR.
I will merge it and release the merged main as 7.0.1 soon.
And then, I will update vcpkg port.


[Arte7Bridge] Exclude trailers and sort by

Replace video_duration_filter by exclude trailers option (according to https://github.com/RSS-Bridge/rss-bridge/issues/662#issuecomment-1099145809) which is simpler and filter videos from a category using metadata
Replace default sorting lastModified by none and add a sorting option. Since a couple of months, I've tried the change on my instance, and it works much better. On some TV shows, using a sort option create some weird behaviour.
Set myself as a maintainer. It appears that no one want to be a maintainer. I'm not a PHP expert, but I do use daily this bridge.

Thanks. Great work.

@dvikan : The html preview showed you that the bridge doesnt create a feed anymore if you select the defaults, why did you merge it?
@imagoiq Both contexts are broken and not working at all. Please do a new PR and fix both, right now the arte bridge is not usable for anyone.

Code looked good. Didn't test. Op said he used the bridge daily so I assumed it was working. Reverted the commit in master.

@imagoiq Here is the error:
{
    "errors": [
        {
            "id": "85eb854ef2872b",
            "status": 400,
            "code": 10404,
            "title": "Bad Request",
            "detail": "Parameter \"sort\" violated a constraint \"Parameter 'sort' value, does not match requirements '(\\-?(videoRightsBegin|videoRightsEnd|broadcastBegin|creationDate|lastModified|views|viewsPeriod|availableScreens|episode),?)*'\""
        }
    ]
}


Add fake v1alpha2 and keep v1alpha1 the only served version

Make a copy of the v1alpha1 api folder and change it into v1alpha2 with
the exact same schema. Make v1alpha1 the only served version and the
storage version. Make v1alpha2 unserved.
The kubebuilder:unservedversion marker seems not working, so this
commit used kubebuilder:skipversion on v1alpha2 CRDs. Without this
marker, v1alpha2 had served: true and storage: false. When I looked
at the CRs, I saw v1alpha2 version is served.
We don't want to serve v1alpha2 before it's ready, so we will only
manually change it to be servedversion for testing during development.
Part of #868
The issue with unservedversion marker is filed here.

/assign @adrianludwin
/assign @rjbez17
/cc @GinnyJI , @adrianchung

Why do you want to start with a full copy of all the files, even the ones that will change over time? Did you consider only adding an empty skeleton for, say, HC but not adding anything else yet?

Because the changes are minor based on the v1alpha1 and I felt it's easier to review for later PR to make a diff on top of that, so reviewer can just see the changes instead of to review the newly-added code (which is changes upon v1alpha1).

Makes sense
/lgtm
/approve

/retest
The previous failed test logs are put in a gist and #871 is filed to investigate this failed test since it doesn't seem relevant.


[MINOR] Remove spaces between intepreter group and name

What is this PR for?
#1395 changed alignment of html tag and it caused to make space between interpreter group and name.
What type of PR is it?
Bug Fix
Screenshots (if appropriate)
Before

After

Questions:

Does the licenses files need update? no
Is there breaking changes for older versions? no
Does this needs documentation? no

@minahlee Nice catch! LGTM 👍

LGTM

LGTM

Merging it into master


What is the best way to parse vec3s into glm::vec3

I tried the following, but it didn't work.
void from_json(const json& j, glm::vec3& vec)
{
	j.at("x").get_to(vec.x);
	j.at("y").get_to(vec.y);
	j.at("z").get_to(vec.z);
}

Please help me out,
thank you :)

You need to define the from_json function in the same namespace as the type (see the README), so the following should work:
namespace glm
{

void from_json(const json& j, vec3& vec)
{
	j.at("x").get_to(vec.x);
	j.at("y").get_to(vec.y);
	j.at("z").get_to(vec.z);
}

}

Hmm I tried that exactly, It didn't work.

I have all from_json in one class... Should I move the from_json function to the glm class? (that is in a separate library)

that worked, I completely overlooked that. thank you very much nlohmann :)

Can I close the issue?

Yes absolutely. Quick question, is there a forum for questions and answers? These questions you answer here maybe helpful to other people who stumble upon this. If the github search includes closed tickets then it should do I guess.


⚠ Bofrost.es has degraded performance

In 7155e27, Bofrost.es (https://www.bofrost.es) experienced degraded performance:

HTTP code: 200
Response time: 1516 ms

Resolved: Bofrost.es performance has improved in 163a3bc after 9 minutes.


Small fixes to the travis build.

Closing this as the HDMI2USB-jahanzeb-firmware is no longer under development.
All active development is now on the HDMI2USB-misoc-firmware which supports both the Atlys and Opsis boards and has loads of other new features!


Print out method name to help debugging method call which caused dead…

… actor error.

Looks good to me :+1:
( Only wonder if maybe the # character ought to be inserted before the method name, to make it clearer it's a method name? )


modifying colored_img_generator to loop over known colors.

Before this correction, the function raised "ValueError("Not enough default colors! Pass additional " 'colors to "colors" parameter')", but we couldn't pass additional colors.
To avoid this problem and to make it easier, the correction takes the 9 known colors (Blue, Red, Green, Yellow, Magenta, Pink, Gray, Brown, Orange), and loop over them if needed.

Thanks! Can we keep the error message anyway?

Or what exactly is idx%len(colors) doing? Just repeating the first color after the last one is reached?

Yes of course we can keep the message, I'm going to add a couple of lines to make it even better.
idx%len(colors) means that, for a given tuple "colors", if the number of images is longer than this tuple length, it will repeat from the first color.
I had a problem using 20 images, so I did this correction and thought it would be useful for people !
By the way, thank you for this insane package !

I have added a warning message, with instructions for those who wish to add their own colours. Otherwise, it loops the default colors.
Let me know if anything is missing, or if you need anything else !

I have now corrected all your requests, tell me if everything is correct now !

Thanks a lot! :)


Get file size prior to start downloading it

I've started using the library and gone through the simple implementation, although it doesn't tell about implementation of getting size of file before actually downloading it.
What i tried so far is
String downloadLink = VALID_FILE_URL;                String filePath = Environment.getExternalStorageDirectory() + File.separator + Environment.DIRECTORY_DOWNLOADS + File.separator + "file.mp4";                 Logger.log(String.valueOf(FileDownloader.getImpl().create(downloadLink).setPath(filePath).getSmallFileTotalBytes()));
but it's returning 0.00 every time i execute the above code.

can't use FileDownloader.getImpl().create(downloadLink).setPath(filePath).getSmallFileTotalBytes() to get so far bytes of a running task.
You can get so far bytes of a running task by fellow ways:

in methods of FileDownloadListener which attached to the task object.
use FileDownloader#getSoFar through the task Id.

So it's not possible to get the size of file before starting a download, correct?

No, you can use FileDownloader#getSoFar.

My motive is to get the TotalBytes of the file to show the size of the file, but FileDownloader#getSoFar will return me how many Bytes of data have been downloaded so far.

If you start a task, until it completed downloading, FileDownloader will store its downloading data in the filedownloader database, which used for resuming from the breakpoint. And you also can get downloaded so far bytes from the filedownloader database through FileDownloader#getSoFar.

2333...
If you need get the  TotalBytes, Just use FileDownloader#getTotal.

Another way: because before start fetching the data from the network, FileDownloader will pre-allocate total length for the file to store the data, so you also can get the total bytes through new File(FileDownloadUtil.getTempPath(filePath)).length() if the task not completed downloading yet, it would always be the TotalBytes.

FileDownloader#getTotal the implementation of this states that it's been deprecated and point to FileDownloader#getSmallFileTotalBytes() which i already did in my example.

NOT BaseDownloadTask#getTotalBytes.
I saidFileDownloader#getTotal,  it isn't been deprecated.

https://github.com/lingochamp/FileDownloader/blob/master/library/src/main/java/com/liulishuo/filedownloader/FileDownloader.java#L365

Can you please provide a sample code snippet to do ot, I'm still not able to understand the APIs behind.

I don't know what's your problem.

If you have any problem, I really recommend simply clone the demo project, and check TasksManagerDemoActivity.

For example:
Start Task(s): https://github.com/lingochamp/FileDownloader/wiki/Start-downloading .
In downloading:  You can get TotalBytes /SofarBytes in methods of FileDownloadListener.
In other status :  You also can just easily get TotalBytes/SofarBytes through FileDownloader.getImpl().getTotal(downloadId)/FileDownloader.getImpl().getSoFar(downloadId). It isn't need the task is running.

What is downloadId? @see FileDownloadUtils#generateId， If you create a task and start it, the return value of BaseDownloadTask#start() is downloadId.

this is now I've implemented
            `int downloadId = FileDownloader.getImpl().create(downloadLink).setPath(filePath).getId();
            Log.i("", String.valueOf(FileDownloader.getImpl().getTotal(downloadId)));`

still returning 0

..... If you just need the downloadId, you can use FileDownloadUtils#generateId or store the return value after you start the task.

For the 0, Please check your Logcat window in IDE,  Is there is a warning log in the Logcat window IDE: xxx, but the download service isn't connected yet. .  You need start FileDownloadService before invoke getTotal.

RECOMMEND: clone the demo project, And check the TasksManagerDemoActivity. Your case is very very basic and simple, and I this after you ran the demo project, you will know everything.

DEMO to getTotalBytes:
// WAY 1:
final String url = "";
final String path = "";
long totalBytes;
final int downloadId = FileDownloader.getImpl().create(url)
        .setListener(new FileDownloadListener() {
            // in the bellow callback methods, you can get totalBytes.
            @Override
            protected void pending(BaseDownloadTask task, int soFarBytes, int totalBytes) {
            }

            @Override
            protected void progress(BaseDownloadTask task, int soFarBytes, int totalBytes) {

            }

            @Override
            protected void completed(BaseDownloadTask task) {

            }

            @Override
            protected void paused(BaseDownloadTask task, int soFarBytes, int totalBytes) {

            }

            @Override
            protected void error(BaseDownloadTask task, Throwable e) {

            }

            @Override
            protected void warn(BaseDownloadTask task) {

            }
        }).start();

// WAY 2:
File downloadedFile = new File(path);
if (downloadedFile.exists()) {
    totalBytes = downloadedFile.length();
} else {
    File downloadingTempFile = new File(FileDownloadUtils.getTempPath(path));
    if (downloadingTempFile.exists()) {
        totalBytes = downloadingTempFile.length();
    } else {
        totalBytes = 0;
    }
}

// WAY 3:
// 1. make sure FileDownloadService is connected.
if (FileDownloader.getImpl().isServiceConnected()) {
    // 2. get Total from the filedownloader database in FileDownloadService.
    totalBytes = FileDownloader.getImpl().getTotal(downloadId);
} else {
    final FileDownloadConnectListener listener = new FileDownloadConnectListener() {
        @Override
        public void connected() {
            totalBytes = FileDownloader.getImpl().getTotal(downloadId);
        }

        @Override
        public void disconnected() {

        }
    };

    FileDownloader.getImpl().addServiceConnectListener(listener);
    // waiting to connect.

    // DO NOT FORGET to remove ServiceConnectListener when you no need it.
}

I'm really thankful for your time and your amazing work
I actually thinks you did not understand my use case, but I finally managed to did this way
FileDownloader.getImpl().create(downloadLink).setListener(new FileDownloadListener() {
                    @Override
                    protected void pending(BaseDownloadTask task, int soFarBytes, int totalBytes) {

                    }

                    @Override
                    protected void progress(BaseDownloadTask task, int soFarBytes, int totalBytes) {
                        String dTotal = String.format(Locale.getDefault(), "%.2f", (float) totalBytes / 1048576);
                        Logger.log(dTotal);
                        task.pause();
                    }

                    @Override
                    protected void completed(BaseDownloadTask task) {

                    }

                    @Override
                    protected void paused(BaseDownloadTask task, int soFarBytes, int totalBytes) {

                    }

                    @Override
                    protected void error(BaseDownloadTask task, Throwable e) {

                    }

                    @Override
                    protected void warn(BaseDownloadTask task) {

                    }
                }).start();

OK. I think I know, now. If you want to  get TotalBytes through FileDownloader instead of standalone API.
Though I don't recommend, but you can get totalBytes in FileDownloadListener#connected, it is better than in FileDownloadListener#progress which you did.

I think we're headed to the correct direction, but now the problem is I can't override the FileDownloadListener#connected
method signature indicates that it can't be overridden I think, please help
/**
     * Already connected to the server, and received the Http-response.
     *
     * @param task       The task
     * @param etag       ETag
     * @param isContinue Is resume from breakpoint
     * @param soFarBytes Number of bytes download so far
     * @param totalBytes Total size of the download in bytes
     * @see IFileDownloadMessenger#notifyConnected(MessageSnapshot)
     */
    protected void connected(final BaseDownloadTask task, final String etag,
                             final boolean isContinue, final int soFarBytes, final int totalBytes) {

    }

No, you can, please feel free to do it:
FileDownloader.getImpl().create(url)
      .setListener(new FileDownloadListener() {
          @Override
          protected void pending(BaseDownloadTask task, int soFarBytes, int totalBytes) {
          }

          @Override
          protected void connected(BaseDownloadTask task, String etag, boolean isContinue, int soFarBytes, int totalBytes) {
              super.connected(task, etag, isContinue, soFarBytes, totalBytes);
              // here.
          }

          @Override
          protected void progress(BaseDownloadTask task, int soFarBytes, int totalBytes) {

          }

          @Override
          protected void completed(BaseDownloadTask task) {

          }

          @Override
          protected void paused(BaseDownloadTask task, int soFarBytes, int totalBytes) {

          }

          @Override
          protected void error(BaseDownloadTask task, Throwable e) {

          }

          @Override
          protected void warn(BaseDownloadTask task) {

          }
      })


build(deps): Bump pub packages

The Dependabot pub updater keeps failing to raise PRs https://github.com/dependabot/dependabot-core/issues/7223
- What I did
Updated pubspec.yaml for at_secondary_server per the changes that should have been generated by Dependabot
- How I did it
Took this from the end of the latest (failed) Dependabot run
updater | +---------------------------------------------------------+
updater | |           Changes to Dependabot Pull Requests           |
updater | +---------+-----------------------------------------------+
updater | | created | at_persistence_spec ( from 2.0.12 to 2.0.14 ) |
updater | | created | collection ( from 1.17.2 to 1.18.0 )          |
updater | | created | basic_utils ( from 5.6.0 to 5.6.1 )           |
updater | | created | at_lookup ( from 3.0.37 to 3.0.38 )           |
updater | | created | at_utils ( from 3.0.14 to 3.0.15 )            |
updater | +---------+-----------------------------------------------+

and applied to pubspec.yaml
- How to verify it
Automated tests
- Description for the changelog
build(deps): Bump pub packages

Ah ... Murari has a PR which takes up the new versions of the persistence packages but it's still a work in progress
For now I guess we need to keep those two packages at their current versions

Unit tests are firmly failing:
  error • test/remove_malformed_keys_test.dart:17:16 • 'MockHiveKeyStore.remove' ('Future<int?> Function(String)')
          isn't a valid override of 'HiveKeystore.remove' ('Future<int?> Function(String, {bool skipCommit})'). •
          invalid_override

There's also a BIG stack of info messages :(
Switching this to Draft until things are straightened out (and maybe we just close this in favour of @murali-shris PR).


Error control operator may trigger a fatal error with PHP 8.0

Is your feature request related to a problem?

In many plugins, I have noticed an issue with the error control operator @ used with set_time_limit().
The error happens when PHP 8.0 is used and when set_time_limit() has been disabled on the server.

Prior to PHP 8.0.0, it was possible for the @ operator to disable critical errors that will terminate script execution. For example, prepending @ to a call of a function which did not exist, by being unavailable or mistyped, would cause the script to terminate with no indication as to why.
https://www.php.net/manual/en/language.operators.errorcontrol.php

Describe the solution you'd like

I think the sniffs should look for the error operator and trigger a warning.
Additional context (optional)

PHP 8.0
any disabled function used with the error operator

@benoitchantre It already does. The WordPress.PHP.NoSilencedErrors sniff does exactly that and is included in both the WordPress-Core as well as the WordPress-Extra rulesets.
For Core, the sniff respects a list of PHP native functions for which to allow the @ operator (which doesn't include the set_time_limit() function. For Extra that list is disregarded by default and a warning will be thrown for all uses of @.

@benoitchantre Happy to help.


Rename {find,canonicalize} to unsafe{Find,Canonicalize}

Hello, and thanks for the good work.
This is a design proposal
Both find and canonicalize, as defined, are abstraction breaking, because the data structure is not in a sound state if you don't call rebuild previously. My proposal, in keeping with the spirit of Haskell of correctness first is that:

the functions named find and canonicalize should call rebuild before querying the data structure (note: in the case where the data structure is already rebuilt, then the work list is empty, therefore rebuild will be very fast anyway)
for the sake of performance tuning, direct queries to the data structure, called unsafeFind and unsafeCanonicalize would be introduced. With the documentation explaining that the onus is on the programmer to only call them on a “rebuilt” E-graph.

Thank you!
I haven't given much thought to how one might end up using find and canonicalize in practice.
One thing that doesn't feel right with your proposal is that merge is also unsafe and rebuild is exported.
The Data.Equality.Graph module allows one to create, modify, and choose when to rebuild e-graphs. So a consumer of that module (such as Data.Equality.Saturation) understands the e-graph is only guaranteed to have its invariants maintained after rebuild.
Perhaps for more correctness we could have this be enforced with an ST-like monadic interface, in which the analogue for runST would be rebuild 🙂 -- meaning functions like merge could only be run inside it, rebuild wouldn't exist, and we wouldn't need any unsafe, just a difference between the functions that can be run inside the invariant breaking computation and the others. I don't know at what point we're complicating it beyond need, but we could also just have this in additional modules.
So going back to find and canonicalize: I wouldn't call them "unsafe" (but do convince me otherwise). Both will work correctly when called on any e-graph, that is, they will find the representative in the e-graph. The contract of having  a library in which you can choose when to rebuild the invariants is to understand that until rebuilding it, the invariants aren't maintained. Meaning that if you called merge on the e-graph a couple of times, and then try to find an id, you'll find the current representative for it -- which is not necessarily the same as if you had called it after rebuilt.

One thing that doesn't feel right with your proposal is that merge is also unsafe and rebuild is exported.

So going back to find and canonicalize: I wouldn't call them "unsafe" (but do convince me otherwise). Both will work correctly when called on any e-graph, that is, they will find the representative in the e-graph.

In Haskell tradition “unsafe” means: when calling this function, there is a proof obligation that the type system can't discharge, and the programmer will have to prove themself. This is not the case of merge: it's always safe to call merge. But it's the case of the current find and canonicalize, which only make sense on rebuilt e-graphs.
You are arguing otherwise, but I believe the “right” abstraction is to think of the egg data structure as a lazy e-graph (where the laziness is embodied by the actions deferred to the worklist). When you call find or canonicalize you force the data structure. You also have a rebuild, which is kind of like seq in Haskell: something that doesn't change the semantics (divergence notwithstanding), but can be used for performance reason.

Perhaps for more correctness we could have this be enforced with an ST-like monadic interface, in which the analogue for runST would be rebuild slightly_smiling_face

It is likely that you could so something like this. Also something with linear types ( :blush: ). Both sound more painful than they are worth (I mean, I certainly intend to push linear types until it's not unpleasant to do this sort of abstraction, but I wouldn't advise doing so today unless it has a lot of value). But honestly, I think that the simple way outlined in the original issue is really fine.

Under that light I must say it does make sense.
I agree we can then have an unsafeFind and unsafeCanonicalize that doesn't force the e-graph to be rebuilt!
I also do agree that both the monadic and linear types thing would be too much here, and that the proposed solution under that light is good.
I'll leave the issue open and close it when we change the interface in a MR.
Re: linear types: I'm a fan of linear types and of your work on Linear Haskell, and wanted to mention I wrote an undergraduate thesis on synthesis from linear types and more recently wrote a GHC plugin implementing the synthesis using GHC's 9.0 linear types :) (which I got to show to Mathieu at ZuriHac!)

(This is getting very off topic, but this is very neat! I'd love to see you demonstrate it to me some time)


Fail to run k3s using TLS mysql when server cert doesn't contain any IP SANs

Version:
v1.17.4+k3s1 (3eee8ac3)
K3s arguments:
--datastore-endpoint="mysql://<user>:<password>@tcp(<IP>:3306)/database" --tls-san <IP2> \
  --datastore-cafile=<ca.pem> --datastore-certfile=<client-cert.pem> \
  --datastore-keyfile=<client-key.pem>

Describe the bug
k3s server command failed, error logs from journald:
k3s[30781]: time="2020-05-06T13:50:38.910630084Z" level=fatal msg="starting kubernetes: preparing server: creating storage endpoint: building kine: x509: cannot validate certificate for <IP> because it doesn't contain any IP SANs"

However, I'm able to connect the database using mysql-client
To Reproduce

provision an ubuntu18.04 instance in AWS.
set up mysql

$ sudo apt-get update && sudo apt-get install -y mysql-server mysql-client
$ sudo mysql_secure_installation
# use the install tool in the mysql-server package with the following options
# no validate password plugin
# remove anonymous users
# disallow root login remotely
# remove test database

$ sudo vi /etc/mysql/my.cnf
# Add the following configs
[mysqld]
# Require clients to connect either using SSL or through a local socket file
require_secure_transport = ON
bind-address = <IP_ADDRESS>

$ sudo systemctl restart mysql

configure db, user and auth

$ sudo mysql -u root -p
mysql> CREATE USER 'testuser'@'%' IDENTIFIED BY 'password';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'testuser'@'%';
mysql> ALTER USER 'testuser'@'%' REQUIRE X509;
mysql> FLUSH PRIVILEGES;
mysql> create database example;
mysql> SHOW VARIABLES LIKE '%ssl%';
+---------------+-----------------+
| Variable_name | Value           |
+---------------+-----------------+
| have_openssl  | YES             |
| have_ssl      | YES             |
| ssl_ca        | ca.pem          |
| ssl_capath    |                 |
| ssl_cert      | server-cert.pem |
| ssl_cipher    |                 |
| ssl_crl       |                 |
| ssl_crlpath   |                 |
| ssl_key       | server-key.pem  |
+---------------+-----------------+
9 rows in set (0.01 sec)

Check access to the database

# get certs from /var/lib/mysql
$ mysql -u testuser -p -h <IP> --ssl-ca=ca.pem --ssl-cert=client-cert.pem --ssl-key=client-key.pem

run k3s

curl -sfL https://get.k3s.io | sh -s - server \
  --datastore-endpoint="mysql://<user>:<password>@tcp(<IP>:3306)/database" --tls-san <IP2> \
  --datastore-cafile=<ca.pem> --datastore-certfile=<client-cert.pem> \
  --datastore-keyfile=<client-key.pem>

Expected behavior
Be able to run k3s using the mysql instance.
Or provide additional flags to help pass the certificate validation.
Additional context / logs
k3s runs successfully when IP SANs are added to the certificate. For example:
$ echo subjectAltName = IP:<IP_ADDRESS> > extfile.cnf
$ openssl req -newkey rsa:2048 -days 3600 \
        -nodes -keyout server-key.pem -out server-req.pem
$ openssl rsa -in server-key.pem -out server-key.pem
$ openssl x509 -req -in server-req.pem -days 3600 \
        -CA ca.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem -extfile extfile.cnf
$ chown mysql:mysql *.pem && mv *.pem /var/lib/mysql/
$ sudo systemctl restart mysql

IP SANs are usually not set following MySQL docs to generate certs: https://dev.mysql.com/doc/refman/5.7/en/creating-ssl-rsa-files.html

This doesn't appear to be a k3s issue. The error you're getting is from the golang core crypto library:
https://github.com/golang/go/blob/master/src/crypto/x509/verify.go#L122
You need to either disable certificate validation, use the hostname instead of the IP address in the datastore address, or add the IP address to the SANs on the cert.

I was wondering if we can have additional configurations, such as servername in tlsConfig.
I think your suggestion makes sense.

See the comments from Google Could SQL Team: https://stackoverflow.com/questions/33878356/certificate-validation-on-cloud-sql
It would be nice to have an option to turn off only hostname validation.

@brandond I tried to skip verification, but it does not work --datastore-endpoint="mysql://<user>:<password>@tcp(<IP>:3306)/database?tls=skip-verify" (https://github.com/go-sql-driver/mysql#tls)
@gitlawr can reopen this issue? (for requesting ServerName in tlsConfig...)


Replicate official models cannot be used as of promptfoo 0.61

I have been using promptfoo to test prompts against official models provided by Replicate, such as meta/meta-llama-3-8b-instruct.
I attempted to run an eval today for the first time in a while and was greeted with the following error in my evaluation output after updating promptfoo to the latest version.
[FAIL] API call error: Error: Invalid reference to model version: meta/meta-llama-3-8b-instruct:. Expected format: owner/name or owner/name:version
I found this strange, as I use the owner/name format in my promptfoo config and have not changed it.
Here is a snippet from the config:
  - id: replicate:meta/meta-llama-3-8b-instruct
    config:
      temperature: 0
      # continued...

I subsquently sought to specify a version for the model, but the replicate API returns the following for this model:
{"status":404,"title":"Not found","detail":"This model is an official model and does not expose a list of versions."}
After manually walking back the promptfoo version, I'm seeing my setup work fine in 0.60 but not 0.61. I do not see anything explicit in the changelog for 0.61 that would cause this.

Thanks for flagging, @aaronstillwell!  #1059 fixes this issue.

A fix for this was deployed in 0.68.1 Please let us know if you run into any other issues and thanks again for reporting it!


Remove EmailSenderService

This was supposed to be removed as part of
https://github.com/alphagov/email-alert-api/pull/307
It is no longer used.

👍


[Posts] Threads article

👷 Deploy Preview for fedihamdi processing.
Name	Link
🔨 Latest commit	b8d2b03
🔍 Latest deploy log	https://app.netlify.com/sites/fedihamdi/deploys/6661943d3435ec0008c495f0

Ready to push to PROD


Only precompiled release 1.0.0 works with Shine X

What happened?
Try to flash Shine X Stick with newest release. This works, but all LEDs are on and no Wifi is available. Try 2.0.0, the LEDs are still all on and no wifi. Flashing is successfull with each verstion.
Try 1.0.0 this works fine. WiFi and Connection to Inverter works.
Try this several times, with different tools and try to erase flash before.
Is there a Modbus TCP Server running? Which Port?

Shine X

Which Inverter are you using?

MIC-1500-TL-X

Just tested the latest release on an esp8266 - Works for me. Have you tried to completly erase the esp's flash by running something like this:
esptool --chip esp8266 erase_flash


[Docs] Identifier first login flow is not defined in the new docs.

Explanations on how to enable identifier first authentication flow for a service provider is missing in the new docs.
However, the flow is defined in the old docs under the "Configuring Local and Outbound Authentication for a Service Provider" section [1].
[1] https://docs.wso2.com/display/IS570/Identifier-first+Flow+Handler

Will be tracked at
wso2/docs-is#114


fixing broken link to sshd_config

@pkirch,
Thanks for your contribution as a Microsoft full-time employee or intern. You do not need to sign a CLA.
Thanks,
Microsoft Pull Request Bot

@pkirch : Thanks for your contribution to the Azure documentation! The author, @wesmc7777, has been notified to review your proposed change.

#sign-off

@pkirch @cephalin - This article moved in the repo to a new location so it's not actually practical to resolve the merge conflict that now exists. I've re-implemented the change in the article in it's new location. @cephalin - in the future, can you check to see if the merge conflict is due to your file moves and then take the appropriate action?


Improve docs

#490

@chanwit I have opened this PR to address issue #490

I don't think any change is required for 1st point, as the doc here is pretty clear on the behaviour of .spec.approvePlan :disable.
For the 2nd point I have made the required changes in the document.
For the 3rd point, the scope seems very broad as it questions documentation of each field in terraform spec. Also, the spec has been updated many times since the issue was originally reported which means many of the reporter's concerns might have already been resolved.

@chanwit can you please take a look :)


SslHandler LocalChannel read/unwrap reentry fix

Motivation:
SslHandler invokes channel.read() during the handshake process. For some
channel implementations (e.g. LocalChannel) this may result in re-entry
conditions into unwrap. Unwrap currently defers updating the input
buffer indexes until the unwrap method returns to avoid intermediate
updates if not necessary, but this may result in unwrapping the same
contents multiple times which leads to handshake failures [1][2].
[1] ssl3_get_record:decryption failed or bad record mac
[2] ssl3_read_bytes:sslv3 alert bad record mac
Modifications:

SslHandler#unwrap updates buffer indexes on each iteration so that if
reentry scenario happens the correct indexes will be visible.

Result:
Fixes https://github.com/netty/netty/issues/11146

@Scottmitch tested and fixes #11146. All our Unit Tests pass.

the state consolidation was moved into https://github.com/netty/netty/pull/11160, and this PR has been rebased

@rkapsi - would you mind re-checking this PR resolves your issues. it has been rebased and there are some additional changes made since your first verified.

@Scottmitch re-tested; still works and all tests pass.

master (59867fa0fd)


Flow can't run where there's a large number of macros

Description
The flow uses environment variables to pass configuration options to the commands executed by the steps.
When running the flow with a large number of macros, the flow runs out of space for the environment variables, and fails with the following error:
OSError: [Errno 7] Argument list too long: 'yosys'

As a matter of fact, the argument list isn't the problem (the command it is trying to run is just yosys -c /nix/store/cbyby0fylkjnbv36hzrbsmxc8srh4d41-python3-3.10.9-env/lib/python3.10/site-packages/openlane/scripts/yosys/json_header.tcl).
Rather, it fails because command line args and environment variables share the same pool.
Looking at the environment variables that OpenLane passes to downstream commands, MACROS, which contains a JSON object, is huge - seems like the size is above the 128K limit
A workaround I found is simply to avoid passing "MACROS" as an environment variable. I'm not sure if any of the steps actually need it, but I was able to get through must of flow just by adding         del env["MACROS"] after https://github.com/efabless/openlane2/blob/4c7deb421e35285432410719a326a2e8801d7340/openlane/steps/tclstep.py#L192-L193.
Expected Behavior
The flow would run to completion successfully
Environment report
kernel: Linux
kernel_version: <IP_ADDRESS>-microsoft-standard-WSL2
supported: True
distro: ubuntu
distro_version: 20.04
python_version: 3.10.9
python_path:
  - /nix/store/jplv2wmvbkjzd7phx0713sin0vry1i3s-python3.10-openlane/bin
  - /nix/store/ns7p6q9gw667v41ysn750103v7dgxgwz-python3.10-click-8.1.3/lib/python3.10/site-packages
  - /nix/store/n0kq2qalwygww8h3pr7v6av7h7jxgd25-python3.10-cloup-1.0.1/lib/python3.10/site-packages
  - /nix/store/l8y1hkbki6pjbr1lm0k0iv51ii9864wz-python3.10-pyyaml-6.0/lib/python3.10/site-packages
  - /nix/store/gkphk53397gfy6mr5nhlqyg5cmgk304h-python3.10-rich-12.5.1/lib/python3.10/site-packages
  - /nix/store/i09vhwzivdhr017688ywhzjwz14xdhn9-python3.10-requests-2.28.1/lib/python3.10/site-packages
  - /nix/store/yrp4f59aa0a1kvrgzdm58v56q8h90604-python3.10-pcpp-1.21/lib/python3.10/site-packages
  - /nix/store/25dlz6av123fbc6qclh6w2agq62dlkmh-python3.10-volare/lib/python3.10/site-packages
  - /nix/store/qvb8isbg9kgmjzkmm9i20r05hns807cj-python3.10-tkinter-3.10.9/lib/python3.10/site-packages
  - /nix/store/xkvl0krzk8l9ch8ksxkb9xmg2jjiszq7-python3.10-lxml-4.9.1/lib/python3.10/site-packages
  - /nix/store/cdgsnj5kmpawp52iramjc7craindq2hr-python3.10-deprecated-1.2.13/lib/python3.10/site-packages
  - /nix/store/aip2pp28ld9wcbqgwsgy3xybqhc21025-python3.10-immutabledict-2.2.2/lib/python3.10/site-packages
  - /nix/store/qll21g8p4421c0bw98qs8rg9gr64256g-python3.10-libparse/lib/python3.10/site-packages
  - /nix/store/l4aj7qwjpia6ympk913jsvv26q22bb01-yosys-0.23/lib/python3.10/site-packages
  - /nix/store/96165i71r0l69b1n3pn8z4qksby5g30c-openroad/lib/python3.10/site-packages
  - /nix/store/yizhphjr22q1rr77n1067vyykq520gdd-klayout-6a36bfa7c04f55bd732f8e0f91b553c8f9cebed7/lib/python3.10/site-packages
  - /nix/store/y3ymwmqpmarqqqxp537jsgiqf1mp5rqz-netgen/lib/python3.10/site-packages
  - /nix/store/1xfp6kmcah4pmic46v2s2nbgmm08ncv0-magic-vlsi/lib/python3.10/site-packages
  - /nix/store/z41wwdc6zlmxz0mgcjmg33gmdcxwsww4-iverilog-11.0/lib/python3.10/site-packages
  - /nix/store/z9sqf8a4vy55416cbxz40wz6mdhjw946-verilator/lib/python3.10/site-packages
  - /nix/store/378rxqdx6lh4swhw49ifbilc6hbk7h2r-tcl-8.6.11/lib/python3.10/site-packages
  - /nix/store/pjjdz5sjrf2xk8vzf7461wbhkky00k4r-python3.10-cffi-1.15.1/lib/python3.10/site-packages
  - /nix/store/6i9gf8hz2h9as3lxsraysv7qjh102g67-python3.10-pycparser-2.21/lib/python3.10/site-packages
  - /nix/store/65cp4izx3bllnwqn7c7dhrq9h9gmjkal-python3-3.10.9/lib/python3.10/site-packages
  - /nix/store/3gb94vhj1ycgvn135h19qh5zlr39mr2f-python3.10-argon2-cffi-bindings-21.2.0/lib/python3.10/site-packages
  - /nix/store/cbyby0fylkjnbv36hzrbsmxc8srh4d41-python3-3.10.9-env/lib/python3.10/site-packages
  - /nix/store/22pfzrq241ipn89330825ybdildl23wx-python3.10-notebook-6.4.12/lib/python3.10/site-packages
  - /nix/store/19n7yd6drwv783w65yf7h7mcrfaagpb7-python3.10-Jinja2-3.1.2/lib/python3.10/site-packages
  - /nix/store/j0icmszh4azcmikmrzib4vicnwns6fn9-python3.10-babel-2.11.0/lib/python3.10/site-packages
  - /nix/store/yfxxhqmckk7kljaqydz07xjfhv3wnx2d-python3.10-pytz-2022.2.1/lib/python3.10/site-packages
  - /nix/store/yfis2i220a8pgy53kx0g5wqwdl7hjn42-python3.10-markupsafe-2.1.1/lib/python3.10/site-packages
  - /nix/store/5jphlf51x69jjlj4did10nd9f68xnml0-python3.10-tornado-6.2/lib/python3.10/site-packages
  - /nix/store/gmac070bibirfdf5wysk4ch5r2hvfnng-python3.10-ipython_genutils-0.2.0/lib/python3.10/site-packages
  - /nix/store/g2yv0ykq3baqrfza664rivffd96sicrw-python3.10-traitlets-5.4.0/lib/python3.10/site-packages
  - /nix/store/v1l9pwi92fbnjvsd0mpck2xd1cjigvsc-python3.10-decorator-5.1.1/lib/python3.10/site-packages
  - /nix/store/kx5anc33hbjj9cd9h3wll51p9b6lasb4-python3.10-six-1.16.0/lib/python3.10/site-packages
  - /nix/store/bfh8fgpcpskjiss1diq92yxvfhw0mvhg-python3.10-jupyter_core-4.11.2/lib/python3.10/site-packages
  - /nix/store/20ckyqfx5hf6riilgzv0sr26jva9ws9i-python3.10-Send2Trash-1.8.1b0/lib/python3.10/site-packages
  - /nix/store/big6ccqb03w6ilr819ra9n9mhznv1j6z-python3.10-jupyter_client-7.3.5/lib/python3.10/site-packages
  - /nix/store/9q0sjf2f0dpkwdx14f755fhqnx81lsiv-python3.10-entrypoints-0.4/lib/python3.10/site-packages
  - /nix/store/njq5zmps7r5shv9py91agng07li32rv3-python3.10-nest_asyncio-1.5.5/lib/python3.10/site-packages
  - /nix/store/rfq9y7g59q4lwm4r1mw7b4p7pvlr84xw-python3.10-python-dateutil-2.8.2/lib/python3.10/site-packages
  - /nix/store/l0rky4yga6ji2pk44mvvv34gdz3i270f-python3.10-pyzmq-23.2.1/lib/python3.10/site-packages
  - /nix/store/x6vjsnm4aq0w1h4l9mi5pn7wq26p020k-python3.10-py-1.11.0/lib/python3.10/site-packages
  - /nix/store/ifi68lsz88dzaiy4dar51z0nyai3kk6z-python3.10-nbformat-5.7.0/lib/python3.10/site-packages
  - /nix/store/clp6zb4s5h8wicamcxkkrwq3091kknjj-python3.10-fastjsonschema-2.16.2/lib/python3.10/site-packages
  - /nix/store/vghm2kpw39j1mx8l38gsamy4ricqpdwf-python3.10-jsonschema-4.17.0/lib/python3.10/site-packages
  - /nix/store/h7j7mrqva6wfsc9a3c4sbgs6dh0zd5m0-python3.10-attrs-22.1.0/lib/python3.10/site-packages
  - /nix/store/ybziay9fz0cy1nx3bvqi1rjcg9fn1gyz-python3.10-pyrsistent-0.18.1/lib/python3.10/site-packages
  - /nix/store/s1nwcpdnpgp294iivj7pp5hvlwvf8lc5-python3.10-nbconvert-7.2.3/lib/python3.10/site-packages
  - /nix/store/vsfv1csakh0hvphcxk3hdk8hlm8vm9f4-python3.10-beautifulsoup4-4.11.1/lib/python3.10/site-packages
  - /nix/store/mfdissddhv02i6ly0wi1s5cv8r6i5kyd-python3.10-chardet-5.0.0/lib/python3.10/site-packages
  - /nix/store/wk1zvimzsc89rbr6nqn3g5bjnq5ggjcv-python3.10-html5lib-1.1/lib/python3.10/site-packages
  - /nix/store/risl3q040vj1c6gl4xgkdbvy7n94dr3r-python3.10-webencodings-0.5.1/lib/python3.10/site-packages
  - /nix/store/3rjrab93xa8y23yd1m2aaiydd78342wv-python3.10-soupsieve-2.3.2.post1/lib/python3.10/site-packages
  - /nix/store/raw0xqlbzq2vlsjh2n0sd8775fnfrjyb-python3.10-bleach-5.0.1/lib/python3.10/site-packages
  - /nix/store/myyr3gvkqc7qdcwz5rgp63as3gchcsw5-python3.10-packaging-21.3/lib/python3.10/site-packages
  - /nix/store/3nwm7x7vsc4df6qwzr39wg94p23rzqgl-python3.10-pyparsing-3.0.9/lib/python3.10/site-packages
  - /nix/store/49pg4ljx6qandwdr6mbc8w8k8fh0dd2j-python3.10-setuptools-65.3.0/lib/python3.10/site-packages
  - /nix/store/b6ld8s8mj11sisxv1si2mdq7wy6l9rz5-python3.10-defusedxml-0.7.1/lib/python3.10/site-packages
  - /nix/store/mfhym26ywy1iaqdlhx1m8irz92z8dh8z-python3.10-jupyterlab_pygments-0.1.2/lib/python3.10/site-packages
  - /nix/store/cpv31grqdbxvsq7jx4kdgbxg2rsxkkfy-python3.10-pygments-2.13.0/lib/python3.10/site-packages
  - /nix/store/9ljcxsc2gqnf5gysl45993v4v88iwzz7-python3.10-docutils-0.19/lib/python3.10/site-packages
  - /nix/store/v5fgbri0rdjw183c8z5cz04l4h3jahmc-python3.10-mistune-2.0.4/lib/python3.10/site-packages
  - /nix/store/gprmixpnzsyyvl1ab5w4j5x2gzqds0dz-python3.10-nbclient-0.6.8/lib/python3.10/site-packages
  - /nix/store/zwny3mk377qlpx88lpskaxkb1jy8dyaf-python3.10-async-generator-1.10/lib/python3.10/site-packages
  - /nix/store/w6pcnr7y354pkd7s36b5didyyfzgn1i9-python3.10-pandocfilters-1.5.0/lib/python3.10/site-packages
  - /nix/store/dlz3pszi4ly71s5ymijhkkzml9g2i1v0-python3.10-tinycss2-1.1.1/lib/python3.10/site-packages
  - /nix/store/z2dhmf1y3bm4pfrrf2pb4m4jl5s036kg-python3.10-ipykernel-6.15.3/lib/python3.10/site-packages
  - /nix/store/d4swckgazsa236wdixkvpyxz2gjb8knj-python3.10-ipython-8.4.0/lib/python3.10/site-packages
  - /nix/store/3q71i6346iwx4azyx23xd4337wbk5j39-python3.10-backcall-0.2.0/lib/python3.10/site-packages
  - /nix/store/350ybb2fxm4fbfwqi4zibmz9qs6yszbc-python3.10-jedi-0.18.1/lib/python3.10/site-packages
  - /nix/store/3bkfagkxrggcbkdxlyym8f4pfmdaml74-python3.10-parso-0.8.3/lib/python3.10/site-packages
  - /nix/store/fmjwj7m3cd2s5d57vbb7jjfk6sxjxm68-python3.10-matplotlib-inline-0.1.6/lib/python3.10/site-packages
  - /nix/store/h7cmdfyv11sg369lkglhz3lrg97wx0af-python3.10-pexpect-4.8.0/lib/python3.10/site-packages
  - /nix/store/bihdcprlyf9jkrnjpsgpp2i9pf2cqib1-python3.10-ptyprocess-0.7.0/lib/python3.10/site-packages
  - /nix/store/r51iq868vlvl9wnvwqjszzw4gp9wwlc6-python3.10-pickleshare-0.7.5/lib/python3.10/site-packages
  - /nix/store/04m2m7zd2axx021fbw9ix0lnhafwgq9k-python3.10-path-16.4.0/lib/python3.10/site-packages
  - /nix/store/dvx6vkz7mg9k6j80vrgd5bxywdfbqhzc-python3.10-prompt-toolkit-3.0.31/lib/python3.10/site-packages
  - /nix/store/4hz6djp5my9mj8x594s7mv693a8zy6sk-python3.10-wcwidth-0.2.5/lib/python3.10/site-packages
  - /nix/store/32kvwf0n7m63r654avn44c4vvzb073y0-python3.10-stack-data-0.2.0/lib/python3.10/site-packages
  - /nix/store/42gmwq7yfp8qam09daz5ribzisw1nh3a-python3.10-asttokens-2.0.8/lib/python3.10/site-packages
  - /nix/store/f04l1d9bm4wfb5fmfxcfll4qxihgnihs-python3.10-executing-0.8.2/lib/python3.10/site-packages
  - /nix/store/qinnsnlb8j423zy90mi23sssxgayr6z7-python3.10-pure_eval-0.2.2/lib/python3.10/site-packages
  - /nix/store/yqziisvama0a8vga5lxp70iya0znfbwv-python3.10-toml-0.10.2/lib/python3.10/site-packages
  - /nix/store/c2ahwjcjnhi2r9yw42fa7l66gnvqsbp7-python3.10-psutil-5.9.3/lib/python3.10/site-packages
  - /nix/store/691d7j7ssm1j7ybhxfqzr52cpgl0i6q8-python3.10-terminado-0.15.0/lib/python3.10/site-packages
  - /nix/store/6bkqcc8d265j605rzrb92lr2pn82442h-python3.10-brotlicffi-<IP_ADDRESS>/lib/python3.10/site-packages
  - /nix/store/8k41q7l3ff3i4lz0drn34w3phk8fw49z-python3.10-certifi-2022.12.07/lib/python3.10/site-packages
  - /nix/store/2s5sa0zibgjshn0s3hhjna4cql3flsnn-python3.10-charset-normalizer-2.1.0/lib/python3.10/site-packages
  - /nix/store/wl8rwlabb29g5gqpy0dsqf9g4xagnc2j-python3.10-idna-3.4/lib/python3.10/site-packages
  - /nix/store/3whxw66aiiixk326lj6h63cxbv0cpilg-python3.10-urllib3-1.26.12/lib/python3.10/site-packages
  - /nix/store/vwrdsq0v60p5gv5v6vlydmy045ihf29q-python3.10-brotli-1.0.9/lib/python3.10/site-packages
  - /nix/store/ah2w40lqazbkjd4cga7binijihm8dvb3-python3.10-pysocks-1.7.1/lib/python3.10/site-packages
  - /nix/store/16riacyavyzhav5ly0f4spkwkj832yqd-python3.10-prometheus-client-0.15.0/lib/python3.10/site-packages
  - /nix/store/97zsmfrirvvikjqpm3lp9a8vfhnx1jsr-python3.10-argon2-cffi-21.3.0/lib/python3.10/site-packages
  - /nix/store/65cp4izx3bllnwqn7c7dhrq9h9gmjkal-python3-3.10.9/lib/python310.zip
  - /nix/store/65cp4izx3bllnwqn7c7dhrq9h9gmjkal-python3-3.10.9/lib/python3.10
  - /nix/store/65cp4izx3bllnwqn7c7dhrq9h9gmjkal-python3-3.10.9/lib/python3.10/lib-dynload
  - /nix/store/jplv2wmvbkjzd7phx0713sin0vry1i3s-python3.10-openlane/lib/python3.10/site-packages
  - /nix/store/k5b7jpzi9dvg3x7h2a90df14aq8wh6bl-python3.10-commonmark-0.9.1/lib/python3.10/site-packages
  - /nix/store/8zzhma74gr86jzakxd8f1pzlrdf8snzx-python3.10-future-0.18.2/lib/python3.10/site-packages
  - /nix/store/filc9bjiifd21l66dicrwr4y3rbza01x-python3.10-zstandard-0.19.0/lib/python3.10/site-packages
  - /nix/store/hjhzx3ic251y5gjigcxiyp2chdzd8s9k-python3.10-wrapt-1.13.3/lib/python3.10/site-packages
tkinter: True
container_info:
  engine: docker
  version: 24.0.6
  conmon: False
  rootless: False
nix_info:
  version: nix-env (Nix) 2.18.1
  multi_user: False
  sandbox: True
  channels: None
  nixpkgs: /home/uri/.nix-defexpr/channels/nixpkgs

Reproduction material
Tiny Tapeout multiplexer setup is a bit non-traditional, as it includes custom steps. But I believe this can be easily reproduced by just a configuration file with a "MACROS" that contain a huge number of "instances" that have very long names (the instances don't actually have to exist in the design - they flow will fail anyway when it's trying to run yosys).
Relevant log output
Traceback (most recent call last):
  File "/home/uri/p/tinytapeout-05-staging/tt-multiplexer/ol2/tt_top/build.py", line 272, in <module>
    flow.start(last_run = args.open_in_klayout)
  File "/nix/store/cbyby0fylkjnbv36hzrbsmxc8srh4d41-python3-3.10.9-env/lib/python3.10/site-packages/openlane/flows/flow.py",
line 553, in start
    final_state, step_objects = self.run(
  File
"/nix/store/cbyby0fylkjnbv36hzrbsmxc8srh4d41-python3-3.10.9-env/lib/python3.10/site-packages/openlane/flows/sequential.py",
line 276, in run
    current_state = step.start(
  File "/nix/store/cbyby0fylkjnbv36hzrbsmxc8srh4d41-python3-3.10.9-env/lib/python3.10/site-packages/openlane/steps/step.py",
line 768, in start
    views_updates, metrics_updates = self.run(state_in_result, **kwargs)
  File "/nix/store/cbyby0fylkjnbv36hzrbsmxc8srh4d41-python3-3.10.9-env/lib/python3.10/site-packages/openlane/steps/yosys.py",
line 194, in run
    return super().run(state_in, env=env, **kwargs)
  File
"/nix/store/cbyby0fylkjnbv36hzrbsmxc8srh4d41-python3-3.10.9-env/lib/python3.10/site-packages/openlane/steps/tclstep.py", line
193, in run
    generated_metrics = self.run_subprocess(
  File "/nix/store/cbyby0fylkjnbv36hzrbsmxc8srh4d41-python3-3.10.9-env/lib/python3.10/site-packages/openlane/steps/step.py",
line 906, in run_subprocess
    process = subprocess.Popen(
  File "/nix/store/65cp4izx3bllnwqn7c7dhrq9h9gmjkal-python3-3.10.9/lib/python3.10/subprocess.py", line 971, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "/nix/store/65cp4izx3bllnwqn7c7dhrq9h9gmjkal-python3-3.10.9/lib/python3.10/subprocess.py", line 1847, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
OSError: [Errno 7] Argument list too long: 'yosys'

Update: I was able to get the flow to complete successfully using the following workaround (instead of the one mentioned in the original comment):
diff --git a/openlane/steps/tclstep.py b/openlane/steps/tclstep.py
index 86d6069..68f046e 100644
--- a/openlane/steps/tclstep.py
+++ b/openlane/steps/tclstep.py
@@ -157,6 +157,8 @@ class TclStep(Step):
             filename = f"{self.config['DESIGN_NAME']}.{output.value.extension}"
             env[f"SAVE_{output.name}"] = os.path.join(self.step_dir, filename)

+        if "MACROS" in env: del env["MACROS"] # Workaround for https://github.com/efabless/openlane2/issues/272
+
         return env

     @protected

@donn would a minimal reproduction be useful here?

No, I have what I need- just thinking of a non-jank solution to this
TclStep.prepare_env arbitrarily excluding dataclasses would be weird

Thank you!


Remove token registry dependency

This PR removes and replaces the @solana/spl-token-registry dependency, which was by far the largest dependency and was pulling in an >3MB outdated JSON file on every page. It should improve performance across the board, especially on slower networks. Token data will also be much more up to date, and tokens created since we deprecated the token registry will be represented correctly.
The main replacement for this dependency is Solflare's Unified Token List (UTL) SDK. This is a typescript SDK that provides information about a token. It's got great performance and covers most use cases we have really well.
It has some tradeoffs:

It's quite a heavy dependency, mostly because of its metaplex-foundation/js dependency which allows it to fetch on-chain data for tokens that aren't in its API/CDN already. For this reason I've used the underlying API directly for the search bar, to avoid pulling the SDK into the root layout. This is actually the same behaviour as the SDK has for search anyway, since falling back to an on-chain query can't be done for search.
It doesn't have all the per-token data from the old token registry, specifically for extensions it only has the coingecko one, and is missing eg bridge contracts and websites. We only use these on the token address page. Longer term we might want to remove these since we don't have a way to get this data for new tokens. But for now I'm using a CDN version of our last token list to fetch the token info including these legacy fields. For tokens that aren't in that list I use the SDK as a fallback, and just return the data without those extensions.

Other than these cases, we now use the SDK for all token info.
Some specific implementation decisions:

The address/[address] page fetches token info once (using the legacy CDN, then API fallback), and uses prop drilling for child components.
useAccountOwnedTokens now returns tokens with the fetched name/logo/symbol for each, fetched from the UTL SDK.
The <Address> component used to search the token registry in all cases, like it does with programs etc. This is no longer the case since we no longer have the entire token list on every page. A new prop tokenListInfo can be used to pass known token info in. This is used for example when rendering the user's owned tokens. Alternatively fetchTokenLabelInfo can be used to asynchronously fetch the token for the address, and update  the address to display it after fetching. This should be used for addresses that might be a token, for example transaction accounts. This is the equivalent of useMetadata which fetches NFT metadata.
I've used SWR in a few places where we fetch token info as an enhancement, usually just to display the symbol for a token as a suffix for a count, eg 5 USDC. In these cases I use the loading state of SWR to distinguish between data not fetched yet (we display no suffix) and no data available (we typically add the 'tokens' suffix)

The result of all this is that the huge tokenlist file which dominated our bundle is gone:
Master:

This branch:

Looking at just the layout shared by all pages, the effect is even more drastic.
Master:

This branch:

Closes #201

On the topic of react-select, I've pushed a commit which refactors the searchto use their <AsyncSelect> component. This removes most of our state handling code around search, and instead we just have a simple function that async returns a list of options.
The main benefit of this for users is that it avoids an annoying race condition introduced by the token search where if the local search returned no results, then we showed either no results or loading, as we loaded the tokens. This meant that there was an annoying flash as you typed, as it flicked between token results and a loading state. I couldn't find an easy way to fix this in the current code and what we had for handling options was already getting pretty complex. AsyncSelect automatically keeps the current list of tokens displayed as it loads more, and handles the loading state for us.
The downside is that local results are no longer shown immediately, they wait for the token search to resolve. But because the results are kept as you type, I think that in practice this is a better UX overall.
I did also find one annoying regression, if you start typing in search, blur it and then re-focus it, currently we will show the options for what you previously typed but AsyncSelect won't. I think this is a react-select bug, see https://github.com/JedWatson/react-select/issues/5714
Also unrelated to this change, something in our search-bar CSS is breaking keyboard navigation of options which is annoying! It works nicely by default in all the react-select examples. I haven't figured out what yet though.

Oooh. Is it possible, at all, to break the change from react-select to AsyncSelect into a separate PR, maybe before this one? This is already a lot of change, and now the changes are unrelated.

Also unrelated to this change, something in our search-bar CSS is breaking keyboard navigation of options which is annoying!

FTFY: e4aec85

I took another look at the original issue and one of the problems was that the Kin logo is wrong on our Explorer. I noticed that I still had this bug, because the token page was using the old CDN content if it existed (to keep extensions). I've updated that a bit so that it now fetches both old and new info in parallel, and if both exist then it uses as much data from the SDK as it can. The result is that Kin has the correct logo and stuff with extensions still show them.
I also tweaked the loading of full token info to use SWR and pass its loading state down to the child components, which hold rendering until it's loaded. That avoids the flash of 'unknown token' you could get after the token account loaded and before the token info was fetched.


transition.style(name, function) doesn’t remove style on end.

We do remove the style on transition end in this case:
transition.style("foo", null);

But we don’t in this case:
transition.style("foo", function() { return null; });

When the target value is specified as a function, the target value is not known until the tween is initialized and the function is called. And a transition’s tweens are initialized immediately after the transition starts; at that point, it’s too late to register an end event listener, as is done in the constant case. Per the README:

The transition then dispatches a start event to registered listeners. This is the last moment at which the transition may be modified: after starting, the transition’s timing, tweens, and listeners may no longer be changed.

So either: (1) we need to defer the state change from STARTING to STARTED until after the tweens are initialized, allowing them to add or remote transition event listeners (which is a bit confusing since at that point the start event was already dispatched… but probably okay) or (2) we need to use a different mechanism for removing the style after the transition ends, say by registering a tween that removes the style when t === 1 (which is icky because due to easing that could occur at times other than the exact end of the transition) or perhaps a tween that checks that state === ENDING.


Reusable comma separated parameter component

Create a reusable comma separated component for use and inlineSection

the comma itself is a noise (`$.text)

The structure is quite different compared to inlineSection


Migrate OpenAI task files to ti-community-infra/configs repo

merge orders:

https://github.com/PingCAP-QE/ci/pull/2198
should merge in short time window:
https://github.com/PingCAP-QE/ee-ops/pull/628
https://github.com/ti-community-infra/configs/pull/923


Topic poll projection not functioning

Topic poll was implemented in #1010, however the projection-feature is still not implemented/broken and shows an empty slide while throwing an error "slide error:  calculating key [...]" on the slide-container.component.ts
Might not be a pure frontend problem.

error message from autoupdate service:
docker-autoupdate-1        | 2022/05/25 14:01:04 Error calculating key projection/52/content: calculating slide poll for p7on &{52  poll/8 1 [123 125]}: get Options func: getTitleInfoFromContentObject: no titler function registered for

@ostcar I suspect that the autoupdate service/restricter ist not ready yet for topic polls, can you look into this?

I think we should make the content object required, then. Just accessing the content object from the poll if the one from the option is empty is probably too specific to be a valid solution, right?

Update: I just looked into it again, and I didn't fully grasp the problem. For options, it is okay if either content_object_id or text is set, which was done because of things such as topic polls. There, each options contains a free-hand text to vote about instead of some content object. Therefore, it would not make sense to fill the field content_object_id.
Instead, I would adjust the wiki at https://github.com/OpenSlides/OpenSlides/wiki/Projector-System#poll. It also says to leave out certain keys sometimes, so we should leave out text if option/text is empty and leave out content_object if option/content_object_id is empty (so the GetTitleInformation function is not called at all, but also not needed, since we have the text to display).
After that, a specific slide has to be created for topic polls and inserted into https://github.com/OpenSlides/openslides-client/blob/main/client/src/app/site/pages/meetings/modules/projector/modules/slides/components/poll-slide/components/poll-slide.component.html. This can just display the given key text for the options.
Let me know if I overlooked something, else you can implement this and I will adjust the wiki accordingly.

Update: I just looked into it again, and I didn't fully grasp the problem. For options, it is okay if either content_object_id or text is set, which was done because of things such as topic polls. There, each options contains a free-hand text to vote about instead of some content object. Therefore, it would not make sense to fill the field content_object_id.

Yes, that's right. The topic polls were implemented correctly. The autoupdate service has to be updated accordingly, to deal with topic polls (respectively an empty content_object_id but text).

I don't have any opinion about this. Just tell me as abstract as possible how the autoupdate-service should render the content in which situation.

I adjusted https://github.com/OpenSlides/OpenSlides/wiki/Projector-System#poll as described above - should be a simple fix.

@ostcar or @r-peschke can you do this in the projector?


[GEP-26] Add Support for Workload Identity Signing Key Rotation

How to categorize this PR?
/area security ipcei
/kind enhancement
/ipcei workload-identity
What this PR does / why we need it:
Add Support for Workload Identity Signing Key Rotation
Which issue(s) this PR fixes:
Fixes #
Special notes for your reviewer:
Part of https://github.com/gardener/gardener/issues/9586
/cc @dimityrmirchev
Release note:

/assign

Question: After the rotation of this key is prepared (i.e., a new key got created and GAPI got rolled out), shouldn't we issue new tokens for all WorkloadIdentitys in the system? Otherwise, how do we prevent that the completion is triggered too fast/early?

Good question, I was expecting the human operator to not trigger completion so fast, but as there is no prevention mechanism this could easily happen. I will think about this, but maybe a solution similar to service account signing key rotation will be the way forward, what do you think?

Question: After the rotation of this key is prepared (i.e., a new key got created and GAPI got rolled out), shouldn't we issue new tokens for all WorkloadIdentitys in the system? Otherwise, how do we prevent that the completion is triggered too fast/early?

Good question, I was expecting the human operator to not trigger completion so fast, but as there is no prevention mechanism this could easily happen. I will think about this, but maybe a solution similar to service account signing key rotation will be the way forward, what do you think?

Yes, this makes sense. I guess we don't need such operation annotation in the setup w/ gardener-operator since we can just trigger this in the reconciliation flow. We do this here for the ServiceAccount secrets: https://github.com/gardener/gardener/blob/3a13ee1aa75ee7e6c500aaec69326cd0c8640037/pkg/operator/controller/garden/garden/reconciler_reconcile.go#L319-L329 and https://github.com/gardener/gardener/blob/3a13ee1aa75ee7e6c500aaec69326cd0c8640037/pkg/operator/controller/garden/garden/reconciler_reconcile.go#L357-L380
I guess we should add a similar task for the WorkloadIdentity secrets

Thanks! Apart from the https://github.com/gardener/gardener/pull/10313#pullrequestreview-2232788377 discussion other looks good to me so feel free move the PR forward once the discussion is resolved

/label ipcei/workload-identity

Workload identity tokens in all seeds are now renewed with 297a091

Thanks! Apart from the #10313 (review) discussion other looks good to me so feel free move the PR forward once the discussion is resolved

@dimityrmirchev Do you plan to have a second look as well?

@dimityrmirchev Do you plan to have a second look as well?

Yes, I will take a look in the afternoon

/lgtm
/approve


Merge Stats Refactor and Error Processing Fixes

Mid last week, I came across some errors in the stats output and error processing code on the qa_workflow side.
Specifically there was code that needed to be adapted from how autocrop QA was handling its output from the autocropper vs how line extraction QA is handling output from the watershed line extraction. For watershed line extraction QA the QA workflow is: 'clear', 'run', 'collate' (and specifically meaning, 'collate_errors'), and then 'output_stats'. The latter two steps are reversed in autocropping QA. A revised error handling and new stats merging function was necessary for the outputs we actually want from line extraction QA. Part of this work also includes readying line extraction QA (qa_line_extraction.py) for the upcoming, new line extraction method.
Below is a checklist of the work that is necessary/has been done for this so far.

[X] Refactor helper functions for line extraction QA's output_stats for computing metrics and tallying stats across books and pages.

[X] Make sure this functionality is separated out as code for watershed line extraction in preparation for the new line extraction method

[X] Make sure error files are being properly written out by run_dhsegment.py and watershed_line_extraction.py

[X] Change their write location to new, common folder like 'qa_results' inside the input book directory
NOTES: dhsegment error source: tbraddyll_R4267_duke_8_essaytoheraldry1684
watershed error source: tbraddyll_R4267_duke_8_essaytoheraldry1684
dhsegment error output
le_dhsegment_errors_<run_uuid>.txt in <book_directory>/qa_results
le_watershed_errors_<run_uuid>.txt in <book_directory>/qa_results

[X] Make sure error files per book are being merged from two files into one file

[X] Make sure error files are all read from the new 'qa_results' folder inside the input book directory

[X] Write new function __correlate_errors_watershed_merge_all() in qa_line_extraction.py to put all errors into one csv file

[X] This should be called before output_stats() - just as correlate_errors() is already called before output_stats()

[X] Sample necessary code from collate_results functions for merge stats function and then remove collate_results and its helpers

[ ] - [ ] Make sure errors are properly tallied for book and run level results files
NOTES: anon_R11260_wellcome_4_generalhistoryair1692 has no stats file - it errors out during watershed
tbraddyll has significant traceback errors

[X] Take outputs - book level results, run level summary results, and errors - and put them into one Google sheets file

[X] In order to temporarily facilitate coordination of runs of the QA script between 'collate_errors' and 'output_stats' a new config yaml variable ERROR_RUN_UUID was added for use in the __tally_stats_for_book_watershed function. This allows the script to find the appropriate error file in the qa_results directory output by watershed line extraction

Blocked until new line extraction method, eynollah, is integrated into QA line extraction code.

Just to update here: total_errors appears to be inaccurate for the book level stats – and likely unique_errors follows suit.
Needs investigation.

After reviewing the reported errors in a meeting soon after this comment, I recall that most of them could be disregarded as warnings/will-not-fix errors coming from the watershed code.


Python 3?

I don't know if this is still being actively developed but are their plans to port to Python 3?

Hi,
How much work would be involved in changing from Python2 to Python3 ?
Has anyone had to do it themselves for this project ?
Thanks,
Andrew

any update on that? doesn't seem to work out of the box. Is this project still actively developed?

Same question answered on the google group: https://groups.google.com/d/topic/pynetdicom/uOs5aMD6UNQ/discussion
Unfortunately Patrice isn't likely to do this. It does work out of the box on Python 2.7.
Has anyone/would anyone attempt updating this to work with both 3.5 and 2.7?

Thanks for the heads up.
I have no idea how much work represents switching from 2.* to 3.* and if it has any expected deeper implications.  (just replace the "print" statements? does any underlying library will break as well? etc.)
Being new to pynetdicom, I do not even know if it is good for me, that is why I am still weighting my options. I have been using DCMTK in the past and wanted to move to a pure python solution to avoid writing tons of wrapping functions...

@NicolasRannou I came here looking for the same thing. All of the code in the repository seems to be written in Python (no C APIs or anything), so I think it should be fairly straightforward to convert. The only dependency I can see is pydicom, which supports python3 in the master branch.

I agree that it may not be that big a job converting the code so it can run on python 3 but to my opinion, there are much larger things that need to be done. In my best dreams, I'd like to almost completely rewrite the code to make it more pythonic and more testable. Making any change in the code in its present form makes me unconfortable because I'm never sure that the change will not break anything. With a nicer, more modern code and a good suite of unit/functional tests I would certainly be happy to port it to python 3, or to make it compatible to both 2 and 3. That being said, I don't have time for this right now, but I will start to think at how this code refactoring could be done.

I've created a fork for Python 3: pynetdicom3

Fantastic! I'm very exited to see there are unit tests!

@scaramallion Is Python 2 also supported in this fork, or only Python 3? Ping @spichardo

Not at the moment, no.

I have started a fork of pynetdicom3 compatible with both python 2.7 and 3.5, which I called, for the moment pynetdicom23. I took some inspiration from pydicom which supports both. So far, unit test almost all pass on both version, and I have tested echosc[u,p] and storesc[u,p] apps.
This pynetdicom3 is not only a python 3 port of pynetdicom, but it cleans up a lot of things, adds unit tests and a lot new documentation. Amazing work @scaramallion!

Amazing work both of you @patmun and @scaramallion!
A 2+3 fork of pynetdicom gives my project OpenREM a future!
Really appreciate your work on this. Thanks.


dashboard and image - [closed]

In GitLab by @liyanq528 on Aug 2, 2017, 07:00
Merges 20170728 -> dev
1,modify dashboard for drag the Zoom-Bar
2,add image detail and image service
3,delete user interface,add error dispatch,modify chart datasource
4,modify some problems from issue and by review

In GitLab by @wknet123 on Nov 13, 2019, 09:51
closed


Fix case sensitivity issue using mono/linux

Solve issue #150
Note: I've noticed this issue should have already been addressed (along with others) in v3 branch (see https://github.com/rianjs/ical.net/commit/a6c263bb5cb6fa35012ca1994d9bf5b43f4c7c37)

Oh, interesting. I've kind of been wondering what the cross-platform story was going to be for case sensitivity. Non-windows platforms are usually case-sensitive, but pretty much the whole world in .NET is built on CI assumptions. Even namespaces in C# files are case-insensitive. (Probably because VB.NET is case-insensitive.)
Anyway, thanks for the fix!

Indeed, this PR is renaming files to work around the mismatched project references issues.
But then, project filenames, namespaces and folder hierarchy no longer have consistent casing (ical.NET), even though .NET really don't care :)
I guess your patch (on v3 branch, https://github.com/rianjs/ical.net/commit/a6c263bb5cb6fa35012ca1994d9bf5b43f4c7c37) is more consistent in this regard.
Anyway, thank you for merging my pull request !


Synchronise UI state and settings across machines

VSCode Version: 1.14.1
OS Version: Windows 10

It would be nice to be able to start session in visual studio code to be able to save the customized characteristics and once it is installed again in another computer that adds the characteristics once the session begins.

Duplicate of #2743


Last Message

Proposal:
Proposal written by ƨʌvʌʛєƈɾєєƥєɾ28™✔#0662
What is the title of your proposal?: Last Message
Is it a suggestion for the website or for the bot?: bot
Explain your proposal more accurately (It's best to give as much information as possible, so that we can implement the proposal better): There is standing "Why we should add this feature?". It will be better when there is standing "Why should we add this feature?"
Why we should add this feature?: Because thats better grammatik (idk whats "grammatik" in english sry)
ReportID: 62

➤ LenoxBot commented:
Approve:
good proposal - (for our developer: <#413020633748996096>)
Dadi#7808

➤ LenoxBot commented:
Approve:
I agree with dadi
Monkeyyy11#0001

➤ LenoxBot commented:
Approve:
I agree with dadi too
Denarioyt#3352


Links page doesn't scroll horizontally on Nexus 5X

And presumably other phones

Site now points to the official documentation so this issue is redundant.


Feature Request: Tag support

Hi again @AnWeber
Got another feature request idea and possibly another opportunity for me to contribute!
Thanks to the junit output support, our team is trying out httpyac for our basic functional web api tests on one of our projects.
One feature, however, that we miss from other testing frameworks -- such as junit -- is the ability to tag tests (or rather http requests in httpyac's case) and then specify the tags to run from the cli.
For example, say we have 2 http files:
# file1.http

 # @tag smoketest
GET https://httpbin.org/json

# file2.http

 # @tag smoketest
GET https://httpbin.org/json

 # @tag perftest
GET https://httpbin.org/json

Then say we want to run the 2 smoke tests in file1 and file2. It would be nice if we could call:
httpyac ./tests/* --includeTags smoketest -e dev --junit

And of course if we only want to run the single perf test in file2 we could call:
httpyac ./tests/* --includeTags perftest -e dev --junit

I think this tag info may also be useful in the junit xml reports, but that'd be a stretch goal IMO.
Let me know what you think. If you are open to the idea I can take a stab at the initial implementation.

I'm not a fan of --includeTags and would use --tag instead, but otherwise I think the feature makes a lot of sense. I added it into httpyac CLI. I still have to figure out the necessary steps for the testrunner in vscode-httpyac

Incredible, thank you soo much!

I totally miss this feature. Glad to learn that its already in the works

I have now released the tag feature. You can use # @tag foo, bar to set multiple tags per httpregion. In CLI it is possible to execute only certain tags with --tag=foo. In VSCode you can set a filter based on the tags. However, both require that I have to parse all files and therefore more CPU is needed.

Thanks again @AnWeber , we'll be incorporating this into our test suite shortly.


Hungarian flag

Hungarian flag added.
(At the end of the Canadian line there was a space that my text editor removed when the file was saved).

@jabbalaci Hey! :smile:
Thank you for contributing! Please resolve the conflicts so that we can merge this.

I hope it's OK now.

Yeps. Perfect. Keep contributing. :smile:


Include LICENSE file in sdist

It would be good to include the LICENSE file in the source distribution on pypi.

this is done.  configured in setup.cfg.


added git-lfs instructions with question to help start using git-lfs …

…for the new project

This is looking good. Thank you @cchris28 for all the work here!


Paper appeared officially: Citation should be adjusted

https://doi.org/10.1515/lingty-2019-0030

so it is now "2020".


Test message payloads and edge cases for process.send and process.emit

As requested in https://github.com/webdriverio/wdio-mocha-framework/pull/9#discussion_r49090310

Sweet, thanks!


Exception when trying update

2019-02-15 19:59:05 : ERROR : base : Job "Interval container update for unix://var/run/docker.sock (trigger: interval[0:05:00], next run at: 2019-02-15 20:03:38 CET)" raised an exception
Traceback (most recent call last):
File "/usr/local/lib/python3.7/site-packages/apscheduler/executors/base.py", line 125, in run_job
retval = job.func(*job.args, **job.kwargs)
File "/usr/local/lib/python3.7/site-packages/pyouroboros/dockerclient.py", line 275, in update
updateable, depends_on_containers, hard_depends_on_containers = self.socket_check()
File "/usr/local/lib/python3.7/site-packages/pyouroboros/dockerclient.py", line 240, in socket_check
if current_image.id != latest_image.id:
AttributeError: 'list' object has no attribute 'id'
Also experience a strange behavior, i noticed a lot of unexpected image downloaded and not cleaned, dunno if related.

duplicate of #210
please update to 1.2.1 and prune any old images :)

Updating manually worked fine:
2019-02-15 21:00:43 : INFO : ouroboros : Version: 1.2.1-master
2019-02-15 21:01:13 : INFO : dockerclient : ActiveMQ will be updated
Thank you very much