Problem following basic usage of jupyter mlflow and prefect tutorial

Good afternoon,
In the prefect configuration step, I get the following error:
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
/tmp/ipykernel_164/2133135275.py in <module>
     42 flow_run_id = prefect_client.create_flow_run(flow_id=training_flow_id, run_name=f "run {prefect_project_name}")
     43
---> 44 create_prefect_flow()

/tmp/ipykernel_164/2133135275.py in create_prefect_flow()
     30 storage = S3(s3_bucket)
     31
---> 32 session_token = get_prefect_token()
     33 prefect_client = Client(api_server=prefect_url, api_token=session_token)
     34 schedule = IntervalSchedule(interval=timedelta(minutes=2))

/tmp/ipykernel_164/2133135275.py in get_prefect_token()
     14 r = requests.get(auth_url)
     15 jsn = r.json()
---> 16 action_url = jsn["methods"]["methods"]["password"]["config"]["action"]
     17 data = {"identifier": username, "password": password}
     18 headers = {"Accept": "application/json", "Content-Type": "application/json"}

KeyError: 'methods'

in the response you don't get the key "methods".
Response example
{
    "id": "bad96217-aac0-4456-8ae7-54467b4c3813",
    "type": "api",
    "expires_at": "2021-08-23T14:00:44.432803488Z",
    "issued_at": "2021-08-23T13:50:44.432803488Z",
    "request_url": "http://mlops.mydomain.com/self-service/login/api",
    "ui": {
        "action": "https://mlops.mydomain.com/.ory/kratos/public/self-service/login?flow=bad96217-aac0-4456-8ae4-54467b4c323e2",
        "method": "POST",
        "nodes": [
            {
                "type": "input",
                "group": "default",
                "attributes": {
                    "name": "csrf_token",
                    "type": "hidden",
                    "value": "",
                    "required": true,
                    "disabled": false
                },
                "messages": null,
                "meta": {}
            },
            {
                "type": "input",
                "group": "password",
                "attributes": {
                    "name": "password_identifier",
                    "type": "text",
                    "value": "",
                    "required": true,
                    "disabled": false
                },
                "messages": null,
                "meta": {
                    "label": {
                        "id": 1070004,
                        "text": "ID",
                        "type": "info"
                    }
                }
            },
            {
                "type": "input",
                "group": "password",
                "attributes": {
                    "name": "password",
                    "type": "password",
                    "required": true,
                    "disabled": false
                },
                "messages": null,
                "meta": {
                    "label": {
                        "id": 1070001,
                        "text": "Password",
                        "type": "info"
                    }
                }
            },
            {
                "type": "input",
                "group": "password",
                "attributes": {
                    "name": "method",
                    "type": "submit",
                    "value": "password",
                    "disabled": false
                },
                "messages": null,
                "meta": {
                    "label": {
                        "id": 1010001,
                        "text": "Sign in",
                        "type": "info",
                        "context": {}
                    }
                }
            }
        ]
    },
    "created_at": "2021-08-23T13:50:44.433949Z",
    "updated_at": "2021-08-23T13:50:44.433949Z",
    "forced": false
}

Thanks for pointing this out: We have upgraded our Ory Kratos module version, which has the info we need there under a different key. We will need to update the notebook to reflect that, but you can use action_url = jsn["ui"]["action"]

Good afternoon @bernardolk , I'm also following the tutorial and applying the change you mentioned leads me to another error I can't figure out how to solve .I tried multiple things like passing flow as param, creating cookies, forcing refresh, passing a value that forcing refresh returns, .. with no sucess. I'm appending the request result after just getting the correct action_url:
{
   "id":"0fcc6629-2668-4af2-8824-c30396d7b173",
   "type":"api",
   "expires_at":"2021-08-23T16:00:06.279179Z",
   "issued_at":"2021-08-23T15:50:06.279179Z",
   "request_url":"http://mlops.mydomain.com/self-service/login/api",
   "ui":{
      "action":"https://mlops.mydomain.com/.ory/kratos/public/self-service/login?flow=0fcc6629-2668-4af2-8824-c30396d7b173",
      "method":"POST",
      "nodes":[
         {
            "type":"input",
            "group":"default",
            "attributes":{
               "name":"csrf_token",
               "type":"hidden",
               "value":"",
               "required":true,
               "disabled":false
            },
            "messages":"None",
            "meta":{

            }
         },
         {
            "type":"input",
            "group":"password",
            "attributes":{
               "name":"password_identifier",
               "type":"text",
               "value":"",
               "required":true,
               "disabled":false
            },
            "messages":"None",
            "meta":{
               "label":{
                  "id":1070004,
                  "text":"ID",
                  "type":"info"
               }
            }
         },
         {
            "type":"input",
            "group":"password",
            "attributes":{
               "name":"password",
               "type":"password",
               "required":true,
               "disabled":false
            },
            "messages":"None",
            "meta":{
               "label":{
                  "id":1070001,
                  "text":"Password",
                  "type":"info"
               }
            }
         },
         {
            "type":"input",
            "group":"password",
            "attributes":{
               "name":"method",
               "type":"submit",
               "value":"password",
               "disabled":false
            },
            "messages":"None",
            "meta":{
               "label":{
                  "id":1010001,
                  "text":"Sign in",
                  "type":"info",
                  "context":{

                  }
               }
            }
         }
      ],
      "messages":[
         {
            "id":4010002,
            "text":"Could not find a strategy to log you in with. Did you fill out the form correctly?",
            "type":"error"
         }
      ]
   },
   "created_at":"2021-08-23T15:50:06.281029Z",
   "updated_at":"2021-08-23T15:50:06.281029Z",
   "forced":false
}```

I am sorry to hear you wasted so much time @jonpoveda! I know what your issue is. Ory also changed the way you need to send the credentials in their flow. You need to update this line: data = {"identifier": <username>, "password": <pwd>} to data = {"password_identifier": <username>, "password": <pwd>, "method": "password"}

do you know if there is also any modification in the prefect api to create the project apparently it is waiting for a tenant id
---------------------------------------------------------------------------
HTTPError                                 Traceback (most recent call last)
/opt/conda/lib/python3.9/site-packages/prefect/client/client.py in _send_request(self, session, method, url, params, headers)
    374         try:
--> 375             response.raise_for_status()
    376         except requests.HTTPError as exc:

/opt/conda/lib/python3.9/site-packages/requests/models.py in raise_for_status(self)
    952         if http_error_msg:
--> 953             raise HTTPError(http_error_msg, response=self)
    954

HTTPError: 400 Client Error: Bad Request for url: https://prefect.mlops.mydomain.com/graphql

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

ClientError                               Traceback (most recent call last)
/tmp/ipykernel_166/3997178121.py in <module>
     18     flow_run_id = prefect_client.create_flow_run(flow_id=training_flow_id, run_name=f"run {prefect_project_name}")
     19
---> 20 create_prefect_flow()

/tmp/ipykernel_166/3997178121.py in create_prefect_flow()
     14         data = fetch_data()
     15         train_model(data=data, mlflow_experiment_id=5, alpha=0.3, l1_ratio=0.3)
---> 16     prefect_client.create_project(project_name=prefect_project_name)
     17     training_flow_id = prefect_client.register(flow, project_name=prefect_project_name)
     18     flow_run_id = prefect_client.create_flow_run(flow_id=training_flow_id, run_name=f"run {prefect_project_name}")

/opt/conda/lib/python3.9/site-packages/prefect/client/client.py in create_project(self, project_name, project_description)
    969
    970         try:
--> 971             res = self.graphql(
    972                 project_mutation,
    973                 variables=dict(

/opt/conda/lib/python3.9/site-packages/prefect/client/client.py in graphql(self, query, raise_on_error, headers, variables, token, retry_on_api_error)
    296             - ClientError if there are errors raised by the GraphQL mutation
    297         """
--> 298         result = self.post(
    299             path="",
    300             server=self.api_server,

/opt/conda/lib/python3.9/site-packages/prefect/client/client.py in post(self, path, server, headers, params, token, retry_on_api_error)
    211             - dict: Dictionary representation of the request made
    212         """
--> 213         response = self._request(
    214             method="POST",
    215             path=path,

/opt/conda/lib/python3.9/site-packages/prefect/client/client.py in _request(self, method, path, params, server, headers, token, retry_on_api_error)
    457         )
    458         session.mount("https://", requests.adapters.HTTPAdapter(max_retries=retries))
--> 459         response = self._send_request(
    460             session=session, method=method, url=url, params=params, headers=headers
    461         )

/opt/conda/lib/python3.9/site-packages/prefect/client/client.py in _send_request(self, session, method, url, params, headers)
    386                         "mutation but the response could not be parsed for more details"
    387                     )
--> 388                 raise ClientError(f"{exc}\n{graphql_msg}") from exc
    389
    390             # Server-side and non-graphql errors will be raised without modification

ClientError: 400 Client Error: Bad Request for url: https://prefect.mlops.mydomain.com/graphql

The following error messages were provided by the GraphQL server:

    INTERNAL_SERVER_ERROR: Variable "$input" got invalid value null at
        "input.tenant_id"; Expected non-nullable type UUID! not to be null.

The GraphQL query was:

    mutation($input: create_project_input!) {
            create_project(input: $input) {
                id
        }
    }

The passed variables were:

    {"input": {"name": "wine-quality-project-test", "description": null, "tenant_id": null}}

we have solved this by updating the prefect version my current version is : '0.14.12' after updating '0.15.4' which accepts tenant id this allows me to move forward but then we get error again with the versions :
Failed to load and execute Flow's environment: StorageError("An error occurred while unpickling the flow:\n  TypeError('code() takes at most 15 arguments (16 given)')\nThis may be due to one of the following version mismatches between the flow build and execution environments:\n  - prefect: (flow built with '0.15.4', currently running with '0.14.6')\n  - python: (flow built with '3.9.5', currently running with '3.7.9')")

The second error I have not seen before. I would recommend that you stick with the previous version since in Open MLOps module definitions we are using an image with Prefect in that version. So if you wish to upgrade the version in the notebook you would also need to upgrade the image so the pods in your cluster run a matching version.
Then, you will need to fix the first error:
Bug: prefect-server-agent pod is in a “CrashLoopBackOff” with an error of Your Prefect Server instance has no tenants. Create a tenant with prefect server create-tenant.
This will raise a ClientError if we try to deploy a flow to prefect:

          raise ClientError(f"{exc}\n{graphql_msg}") from exc

E               prefect.utilities.exceptions.ClientError: 400 Client Error: Bad Request for url: https://prefect.mlops.datarevenue.com/graphql
E
E               The following error messages were provided by the GraphQL server:
E
E                   INTERNAL_SERVER_ERROR: Variable "$input" got invalid value null at
E                       "input.tenant_id"; Expected non-nullable type UUID! not to be null.
Solution: This means that the apollo pod didn’t create a tenant. To do this you need to:

Port-forward the apollo service kubectl port-forward svc/prefect-server-apollo 4200
Having Prefect installed, run: prefect backend server && prefect server create-tenant --name default --slug default
Restart the agent pod

I think that if a tenant exists, when querying in graphql I can see its name slug and id

@Pfriasf you should open a new terminal tab after port-forwarding, but make sure you have prefect installed locally. What is happening is that you are forwarding the port from the cluster to your local machine, then having prefect installed (via pip install) in your local machine, you can access the prefect server in your cluster from it.

There seems to be a problem with your pip installation. Do you have python installed?
This is the package, for reference:
https://pypi.org/project/prefect/

Hi,
I got the same error:
ClientError: 400 Client Error: Bad Request for url: https://prefect.mlops.pixtavietnam.com/graphql

The following error messages were provided by the GraphQL server:

    INTERNAL_SERVER_ERROR: Variable "$input" got invalid value null at
        "input.tenant_id"; Expected non-nullable type UUID! not to be null.

The GraphQL query was:

    mutation($input: create_project_input!) {
            create_project(input: $input) {
                id
        }
    }

The passed variables were:

    {"input": {"name": "wine-quality-project", "description": null, "tenant_id": null}}

I followed the fix and it seems to work. the prefect-server-agent pod is running. When I check prefect dashboard, I can see there is 1 agent running. But when I run notebook, I still get the same error. How do I debug this? Thanks

@NhatAnh Can you share the request you made? Please make sure that python and prefect version running in your notebook instance is the same that is running in your prefect agent.

@pedrocwb I'm just doing the tutorial https://github.com/datarevenue-berlin/OpenMLOps/blob/master/tutorials/basic-usage-of-jupyter-mlflow-and-prefect.md
I use OpenMLOps-AWS terraform scripts to set it up, so I think the versions should match.
I can give you the login to jupyter notebook in my setup, if that helps.

I tried to create prefect project in prefect dashboard. And in Jupyter notebook, only register the already existing project, but now I get error:
ImportError: cannot import name 'get_boto_client' from 'prefect.utilities.aws' (/opt/conda/lib/python3.9/site-packages/prefect/utilities/aws.py)

How do I change python version of the jupyter notebook? It seems prefect does not work well with python 3.9

You would need to change the notebook image, which is specified in the singleuser option of the jupyterhub module. If you want to test with a different python version, though, you can try creating a virtual env with a different python version and install prefect client there. Should be faster. But I am not sure that's the issue, do you have any references to where they say Prefect doesn't play nice with Python 3.9?

It seems the tenant is created. But Apollo can't connect to Graphql server:
As you can see when installing helm chart of prefect there is a job ran to create a tenant id.
kubectl logs -n prefect prefect-server-create-tenant-job-xxxx (change pod name)
Tenant created with ID: 496e7a7e-7fad-44ca-9cb1xxxxxxxxxx

Also it seems the default url for /graphql/ is internet facing URL so it is uses  ory kratos but since it is not authenticated it gets 401 error (auth failed). So we logon to prefect./graphql/ using kratos but UI itself is not authenticated....

It seems the tenant is created. But Apollo can't connect to Graphql server:
As you can see when installing helm chart of prefect there is a job ran to create a tenant id.
kubectl logs -n prefect prefect-server-create-tenant-job-xxxx (change pod name)
Tenant created with ID: 496e7a7e-7fad-44ca-9cb1xxxxxxxxxx

Also it seems the default url for /graphql/ is internet facing URL so it is uses ory kratos but since it is not authenticated it gets 401 error (auth failed). So we logon to prefect.domain/graphql/ using kratos but UI itself is not authenticated....

@bernardolk  can you shed some light on this issue ?

Also one thing i found out that you always download latest version:
https://github.com/datarevenue-berlin/OpenMLOps/blob/master/modules/prefect-server/variables.tf#L19-L22
Though it is not for prefect/server docker image i have seen that image had an issue and i switched it to 0.15.4 version manually for tenant creation images (that is prefectVersionTag) as defined here:
https://github.com/PrefectHQ/server/blob/master/helm/prefect-server/values.yaml#L13-L17
Also  Server Tags are different https://github.com/PrefectHQ/server/tags and is used with helm chart version.
https://github.com/PrefectHQ/server/blob/master/helm/prefect-server/values.yaml#L3-L11
I Also updated jupyterhub with a new docker image to install 0.15.4 of prefect python packages by updating
https://github.com/datarevenue-berlin/OpenMLOps/blob/master/docker/openmlops-notebook/Dockerfile#L4
but still getting same error. Any update greatly appreciated!


Sort out refreshing + invalidation of data in WrappedComponent

Previously we could key off the Locale -- we now don't know how to do that.
Perhaps the partition function idea could be restored, but returning an Object that is required to appropriately implement equals() and hashCode(), to determine identity? Implementations could return a single value, or a record with the appropriate data.

Partition functions were restored a while ago :)


Error when starting SimpleFOC Studio after installation

After installing Python (3.9), PIP, and SimpleFOC Studio, I try to run SimpleFOC Studio with the following command:
python simpleFOCStudio.py
I then get the following error:
C:\SimpleFOCStudio>python simpleFOCStudio.py
Traceback (most recent call last):
File "C:\SimpleFOCStudio\simpleFOCStudio.py", line 8, in
from gui.mainWindow import UserInteractionMainWindow
ModuleNotFoundError: No module named 'gui'

There is a problem with PYTHONPATH if you run it from command line interface that needs to be solved. If you run in from an IDE and includes  as gui "source folder" the problem dos not appear.   As workaround until i get a beat solution you can download a working version from CLI from here:  https://tinyurl.com/y4ul9psf

There is a problem with PYTHONPATH if you run it from command line interface that needs to be solved. If you run in from an IDE and includes  as gui "source folder" the problem dos not appear.   As workaround until i get a beat solution you can download a working version from CLI from here:  https://tinyurl.com/y4ul9psf

Solved 👍


$this->package isn't available in Laravel 5

Removed offending line of code cause issues with Laravel 5+

Levi,
I found an offending line of code causing issues with composer in Laravel 5.


Instructions to create amscli container image

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

Hello @n1t1nv3rma   Thanks for your earlier comment. I have updated the PR accordingly. Please help to review.


Firefox: “/“ key command for the Finder sometimes results in focusing the browsers search bar

(I hit this too.)

Considering removing Ctrl+k and Cmd+k keybinds when on specific Firefox + OS combinations.

Fixed by https://github.com/unisonweb/codebase-ui/pull/146


Should generate complete arguments when updating a non-empty string

What do you want to change?
I'm trying to make dynamic queries, to not update a column if given input is an empty string.
The description field is not recognized in the Update query.
Same result with @xxx notation.

What database engines need to be changed?
SQLite
What programming language backends need to be changed?


Recursive Inscription links not working on iOS Safari

It appears that /content/ links are not working on Safari on iOS in the block explorer.
Example: https://ordinals.com/inscription/cf58bbc5db189aab538c927dc7cabcb399d06868ef64e163d408a8abdd8c479ci0
The iframe loads, but the linked content does not:

Unfortunately this is a known issue that can't be fixed. Safari doesn't implement the content security policy header spec correctly, so the whitelisting method used to allow requests to /content/ paths doesnt' work.


Moving to 2018 edition

This pull request does two things:

Moves to the 2018 edition and applies 2018 edition idioms
Runs rustfmt

The application of rustfmt makes this PR look scarier than it is, so you may want to checkout 558d34f, review the diff at 558d34f, and then and run rustfmt yourself.

Thank you


Migrate

Jenkins build finished, all tests passed.
Refer to this link for build results: http://ci.sequenceiq.com/job/cloudbreak-pull-request/2279/


Error AssertionError: Torch not compiled with CUDA enabled with PC only

AssertionError                            Traceback (most recent call last)
Cell In[26], line 10
7 device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
8 print(device)
---> 10 model = KAN(width=[15,6,3,1], grid=5, k=3,device=device) #, grid_range=(0,1)) #, seed=0) # noise_scale_base = 0., base_fun = lambda x: x, noise_scale = 0)
12 # model = KAN(width=[12,6,3,1], grid=GBest, k=kBest) #, seed=0) # noise_scale_base = 0., base_fun = lambda x: x, noise_scale = 0)
File c:\Users\thnog\AppData\Local\Programs\Python\Python311\Lib\site-packages\kan\KAN.py:140, in KAN.init(self, width, grid, k, noise_scale, noise_scale_base, base_fun, symbolic_enabled, bias_trainable, grid_eps, grid_range, sp_trainable, sb_trainable, device, seed)
[137](file:///C:/Users/thnog/AppData/Local/Programs/Python/Python311/Lib/site-packages/kan/KAN.py:137) for l in range(self.depth):
[138](file:///C:/Users/thnog/AppData/Local/Programs/Python/Python311/Lib/site-packages/kan/KAN.py:138)     # splines
[139](file:///C:/Users/thnog/AppData/Local/Programs/Python/Python311/Lib/site-packages/kan/KAN.py:139)     scale_base = 1 / np.sqrt(width[l]) + (torch.randn(width[l] * width[l + 1], ) * 2 - 1) * noise_scale_base
--> [140](file:///C:/Users/thnog/AppData/Local/Programs/Python/Python311/Lib/site-packages/kan/KAN.py:140)     sp_batch = KANLayer(in_dim=width[l], out_dim=width[l + 1], num=grid, k=k, noise_scale=noise_scale, scale_base=scale_base, scale_sp=1., base_fun=base_fun, grid_eps=grid_eps, grid_range=grid_range, sp_trainable=sp_trainable,
[141](file:///C:/Users/thnog/AppData/Local/Programs/Python/Python311/Lib/site-packages/kan/KAN.py:141)                         sb_trainable=sb_trainable, device=device)
[142](file:///C:/Users/thnog/AppData/Local/Programs/Python/Python311/Lib/site-packages/kan/KAN.py:142)     self.act_fun.append(sp_batch)
[144](file:///C:/Users/thnog/AppData/Local/Programs/Python/Python311/Lib/site-packages/kan/KAN.py:144)     # bias
File c:\Users\thnog\AppData\Local\Programs\Python\Python311\Lib\site-packages\kan\KANLayer.py:126, in KANLayer.init(self, in_dim, out_dim, num, k, noise_scale, scale_base, scale_sp, base_fun, grid_eps, grid_range, sp_trainable, sb_trainable, device)
[124](file:///C:/Users/thnog/AppData/Local/Programs/Python/Python311/Lib/site-packages/kan/KANLayer.py:124)     self.scale_base = torch.nn.Parameter(torch.ones(size, device=device) * scale_base).requires_grad_(sb_trainable)  # make scale trainable
[125](file:///C:/Users/thnog/AppData/Local/Programs/Python/Python311/Lib/site-packages/kan/KANLayer.py:125) else:
--> [126](file:///C:/Users/thnog/AppData/Local/Programs/Python/Python311/Lib/site-packages/kan/KANLayer.py:126)     self.scale_base = torch.nn.Parameter(torch.FloatTensor(scale_base).cuda()).requires_grad_(sb_trainable)
[127](file:///C:/Users/thnog/AppData/Local/Programs/Python/Python311/Lib/site-packages/kan/KANLayer.py:127) self.scale_sp = torch.nn.Parameter(torch.ones(size, device=device) * scale_sp).requires_grad_(sp_trainable)  # make scale trainable
[128](file:///C:/Users/thnog/AppData/Local/Programs/Python/Python311/Lib/site-packages/kan/KANLayer.py:128) self.base_fun = base_fun
File c:\Users\thnog\AppData\Local\Programs\Python\Python311\Lib\site-packages\torch\cuda_init_.py:284, in _lazy_init()
...
[286](file:///C:/Users/thnog/AppData/Local/Programs/Python/Python311/Lib/site-packages/torch/cuda/init.py:286)     raise AssertionError(
[287](file:///C:/Users/thnog/AppData/Local/Programs/Python/Python311/Lib/site-packages/torch/cuda/init.py:287)         "libcudart functions unavailable. It looks like you have a broken build?"
[288](file:///C:/Users/thnog/AppData/Local/Programs/Python/Python311/Lib/site-packages/torch/cuda/init.py:288)     )
AssertionError: Torch not compiled with CUDA enabled

If you have a GPU which supports CUDA,  torch.device('cuda' if torch.cuda.is_available() else 'cpu') will return 'cuda'.
That said, if you didn't install pytorch with +cu121 or similar, you'll get the error. Please follow pytorch official documentation.

on KANLayer.py
        if isinstance(scale_base, float):
            self.scale_base = torch.nn.Parameter(torch.ones(size, device=device) * scale_base).requires_grad_(sb_trainable)  # make scale trainable
        else:
            self.scale_base = torch.nn.Parameter(torch.FloatTensor(scale_base).cuda()).requires_grad_(sb_trainable)

It needs to Just remove the .cuda() from the last line. Or add another conditional that maps it to cuda iff device == 'cuda'

It seems that you're using pykan v0.0.3, and the issue you encountered has been fixed in PR #98. However, it hasn't been released yet.
@KindXiaoming, could you please make a new release on the master branch to incorporate the fix and resolve the issue?
Thanks in advance!

Hi @KindXiaoming,
Apologies for the confusion. It seems that pykan v0.0.3 doesn't contain PR #98. The last commit in v0.0.3 is 116f399, which predates commit 70b7b8d where the fix was implemented.

Thanks @Jim137 , is now good?

@KindXiaoming, sorry, I mean for users downloading via pypi. The error still occurs.
Here is my test using pypi version:
❯ /home/jim137/git/kan/test/bin/python /home/jim137/git/kan/test1.py
description:   0%|                                                           | 0/20 [00:00<?, ?it/s]
Traceback (most recent call last):
  File "/home/jim137/git/kan/test1.py", line 23, in <module>
    model.train(dataset, opt="LBFGS", steps=20)
  File "/home/jim137/git/kan/test/lib/python3.11/site-packages/kan/KAN.py", line 898, in train
    self.update_grid_from_samples(dataset['train_input'][train_id].to(device))
  File "/home/jim137/git/kan/test/lib/python3.11/site-packages/kan/KAN.py", line 243, in update_grid_from_samples
    self.forward(x)
  File "/home/jim137/git/kan/test/lib/python3.11/site-packages/kan/KAN.py", line 311, in forward
    x_numerical, preacts, postacts_numerical, postspline = self.act_fun[l](x)
                                                           ^^^^^^^^^^^^^^^^^^
  File "/home/jim137/git/kan/test/lib/python3.11/site-packages/torch/nn/modules/module.py", line 1511, in _wrapped_call_impl
    return self._call_impl(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/jim137/git/kan/test/lib/python3.11/site-packages/torch/nn/modules/module.py", line 1520, in _call_impl
    return forward_call(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/jim137/git/kan/test/lib/python3.11/site-packages/kan/KANLayer.py", line 176, in forward
    y = self.scale_base.unsqueeze(dim=0) * base + self.scale_sp.unsqueeze(dim=0) * y
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~
RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cuda:0 and cpu!

It seems that #98 does not be included in v0.0.3.

Thank you, gotcha! Have released 0.0.4 including new changes.


Documentation around Common Problems section

Is there any preliminary write up around the subsection of the ODBC docs,
"Common Problems: To-Do" ?
Link here:
https://github.com/Microsoft/DataConnectors/blob/master/docs/odbc.md#common-problems
I'm running into all three of these issues in a custom connector that I don't have the ability to resolve in the driver. As a result, I'm requesting any documentation (including incomplete!) in order to continue making progress.
Two specific cases are:

"Failed to convert from date to timestamptz for expression "C1". You can override this by using SqlGetInfo for converting from TYPE_DATE to TYPE_TIMESTAMP."
(How to make this conversion is currently unspecified in the SqlGetInfo section)

"Data Type of column payment_type with searchable property UNSEARCHABLE should be SEARCHABLE or ALL_EXCEPT_LIKE."
(Text column with custom data type is cast to varchar without searchable flag and is not cast back to custom data type on)

PowerBI Community post here:
https://community.powerbi.com/t5/Desktop/OLE-DB-or-ODBC-error-Expression-Error-We-couldn-t-fold-the/m-p/660229/highlight/true#M317083

Still looking to work on this since I've seen some recent interest in my connector (MySQL branch).
Further explained on stackoverflow here:
https://stackoverflow.com/questions/64944320/3-issues-with-sqlgettypeinfo-for-custom-connector-powerbi

@CurtHagenlocher curious if you can give any input on this issue?
The only reason I ask is that I can see that you were the last to edit this document: https://github.com/Microsoft/DataConnectors/blob/master/docs/odbc.md#common-problems


reMarkableSync not downloading Template layer

Hi, got my rm2 today. Trying to import some notes with template layers I failed. The template layer is not downloaded, only the handwriting.
Works as designed or did I miss a step?

Hi Shrekmachine, that is currently working as designed as the template was always an image layer that's stored separately on the device and superimposed over the top.
I might look into getting the template image in future but it's not on the immediate scope of new features.

Thanks for sharing your thoughts and plans.
unfortunately for me that would be THE feature.
Thinking of meeting protocols an unstructured view and even the transformation into digital text is not helpful :(


vscode notebook: squashing cells content when simply scrolling up and down

Does this issue occur when all extensions are disabled?: Yes/No
no, as I require the extension to run notebooks in vscode

Version: 1.90.2 (Universal)
Commit: 5437499feb04f7a586f677b155b039bc2b3669eb
Date: 2024-06-18T22:37:41.291Z (5 days ago)
Electron: 29.4.0
ElectronBuildId: 9728852
Chromium: 122.0.6261.156
Node.js: 20.9.0
V8: 12.2.281.27-electron.0
OS: Darwin arm64 23.4.0
Steps to Reproduce:

create some vscode cells with python code and with markdown and print their output
scroll up and down a few times, with the results rendered

If a cell has more than 1 line it gets squashed, and the text gets hidden.

How it looks before scrolling:

How it looks after scrolling:

Also empty cells get squased when simply  scrolling up and down with the mouse

How it looks before scrolling:

How it looks after scrolling:

Of course this makes working with the integrated notebooks unthinkable.

@SebastianoF did this happen immediately after you open the notebook editor or it happens after you move the editor between editor groups?

Thanks for creating this issue! We figured it's missing some basic information or in some other way doesn't follow our issue reporting guidelines. Please take the time to review these and update the issue.
Happy Coding!

Thanks for creating this issue! We figured it's missing some basic information or in some other way doesn't follow our issue reporting guidelines. Please take the time to review these and update the issue.
Happy Coding!

I am experiencing the same problem. when I scroll up and down, the content being squashed by chance. it is very annoying as I cant see the code and have to scroll away and back to get the content.

@SebastianoF did this happen immediately after you open the notebook editor or it happens after you move the editor between editor groups?

it is fine when the notebook is first loaded. it usually happens when I go from the contents in the bottom of the notebook back to the early cells.

did this happen immediately after you open the notebook editor or it happens after you move the editor between editor groups?

@rebornix  Not sure I understand the question. It happens after opening the notebook, scrolling all the way down, then up again. I usually have the editors split into different groups, though it does not seem to change. Also it happens less when I have the integrated terminal closed, but it is in general is very erratic so it is difficult to say what triggers it.

I can add something here.

the problem is still here, and very annoying because you cant see your own codes.
I suspect this is related to the efforts I put to remove the distance between cells, and remove unnecessary gaps/info in cells to reduce the space between cells. But I cant figure out what exactly triggered this.

Thank you @yubin-ai
Do you have any advice about how to fix it in the short term?
What is the previous version that you recommend to install before this problem was introduced?
Also if it helps, I noticed empirically that it happens all the time on an 8GB RAM, a bit less on an 18GB and almost never on a 32GB.

@SebastianoF did you ever adjust the vs code notebook layout/space?
I did not track it but I believe 2023 versions do not have this issue.
The chance to have this issue reduced a lot when I set back the space between cells in the notebook to default.
I only use 32GB memory laptop and both locally and to ssh cloud. similar chance of this issue.

@SebastianoF did you ever adjust the vs code notebook layout/space?

I've been using the default spacing. Thanks for the hint, I will try a 2023 version for now. Hopefully it will be solved at some point.

Hi @rebornix !
Any further info needed on this issue?

After a few more attempt and trials on various versions, I found a stable solution from an unrelated thread.
When opening vscode from terminal run it with:
code --disable-gpu .

This workaround fixed the issue with all the VS code version and extensions I have tried, and hopefully it should be helping finding a bugfix!

thanks for finding that @SebastianoF.
As noted here, gpu can be permanently disabled by

Command Palette search for "Configure Runtime Arguments"
Set disable-hardware-acceleration: true
Restart

Sorry for the misleading informations above. Disabling the gpu worked only partially. Cells are still squashing, only less frequently. Also with no GPU I can not visualise the embedded kepler maps.
These two threads are also related to the issue:

https://github.com/microsoft/vscode/issues/200256
https://www.reddit.com/r/vscode/comments/1devafm/cells_collapsing_semirandomly_in_vscode_notebooks/

The mentioned trick seems (for now) to have solved the problem:
"notebook.showCellStatusBar": "visible"

@SebastianoF Thanks a lot for the update. I will try the "notebook.showCellStatusBar": "visible".
Mine was set at visible after execution and I believe it is one of the settings I did to reduce the space between the cells in notebooks as they are much bigger than jupyter notebook.
It looks it is working so far!


Added Cart Page

I have added the cart page with the matching theme and color.

@khushi-joshi-05  pls review


bug(bridge-ui-v2):  katla - fonts black on mobile

Describe the bug
When using the bridge in mobile wallets the font color is black making the words unreadable
Steps to reproduce
Steps to reproduce here.
Additional context
Additional context here.

Hi, thanks for the report. Pleae provide more information such as device, OS version, wallet etc. So it is easier to reproduce.

stale


Various coding improvements when moving to v0.6.0

Replace meshio/h5py with dolfinx.io.gmshio.read_from_msh to convert to XDMFFile
Replace str-paths with pathlib.Path
Update docker file to v0.6.0-r1

Will resolve #35


Cyberpunk 2077 installed from Heroic Randomly Freezes

Describe the bug
I'm using the ROG Ally Z1E and I bought Cyberpunk 2077 on Epic Games. I installed it through Heroic Launcher and added the shortcut to Steam. However, the game randomly freezes. Sometimes it happens during the intro, other times during gameplay. It's almost impossible to play for more than 20 minutes without a freeze. When it freezes, the ambient sound continues, but the graphics are stuck, including the performance overlay. Controller input doesn't affect anything either. The only way to fix it is to quit and reopen the game.
What did you expect to happen?
The game should not freeze.
Output of rpm-ostree status
bazzite-deck version 41.20241118.2

Hardware
ROG Ally RC71L_RC71L
Extra information or context
I use Proton Experimental in Heroic, and "Apply known fixes automatically" and "Use UMU as Proton runtime" are enabled.

I had this exact issue as well a couple days ago. Use the latest stable proton (9.0.3) latest GE and Experimental are currently broken for cp2077 as it seems. Do you play with mods by any chance?
https://github.com/ValveSoftware/Proton/issues/4450#issuecomment-2466502475
Maybe try GE-Proton9-14 as latest upstream Proton 9.0.3 was released on Sep19 and this GE version was released a couple days after.
I don't know for certain if that will work, maybe try a couple version older than 9-14 if you still have issues
You can install it with ProtonUpQt


Use url.PathEscape to escape the branchname

It is currently not possible to push a branch containing a % in it's name as it causes the internal protected branch checking api to return an error.
This code protects the branchname with url.PathEscape

Codecov Report

Merging #6304 into master will increase coverage by <.01%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master    #6304      +/-   ##
==========================================
+ Coverage   38.82%   38.82%   +<.01%
==========================================
  Files         359      359
  Lines       51100    51100
==========================================
+ Hits        19838    19842       +4
+ Misses      28391    28386       -5
- Partials     2871     2872       +1

Impacted Files
Coverage Δ

models/repo_list.go
66.84% <0%> (-1.06%)
:arrow_down:

routers/repo/view.go
42.07% <0%> (+0.99%)
:arrow_up:

models/unit.go
14.28% <0%> (+14.28%)
:arrow_up:

Continue to review full report at Codecov.

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


What config.xml should be to remove the default splash screen?

I want to not show any splash screen at all for my app.
Just .. w/e the OS decides to put on.
How do I achieve that in my config.xml on phonegap build?

just go build.phonegap. com and click on docs then splashscreen, you can find all info over there.

Not an issue. Close.


fail to build a query when lifting a scala3 enum with a Decoder

Version: 4.6.0
Module: quill-sql
Database: sqlite
Actual behavior
Scala 3 enum with a Decoder fails to build query
Models :
enum PostState {
  case DRAFT
  case LIVE
}

case class Post(
  title: String,
  state: PostState
)

Quill context :
case class Context(override val ds: DataSource) extends Quill.Sqlite(Literal, ds) {
  given Encoder[PostState] = encoder(Types.VARCHAR, (index, value, row) => row.setString(index, value.toString))
  given Decoder[PostState] = decoder((index, row, _) => PostState.valueOf(row.getString(index)))

  inline given SchemaMeta[Post] = schemaMeta("post")
  inline def posts              = query[Post]
}

Repository :
final case class Live(ctx: Context) extends PostRepository {
  import ctx.*
  import ctx.given

  override def byString(title: Option[String]): Task[List[Post]] = {
    run(posts.filter(p => lift(title).forall(s => s == p.title)))
    // Quill Query: SELECT p.title, p.state FROM post p WHERE ? IS NULL OR ? = p.title
  }

  override def byEnum(state: Option[PostState]): Task[List[Post]] = {
    run(posts.filter(p => lift(state).forall(s => s == p.state)))
    // ERROR:
    // The Co-Product element PostState.DRAFT was not a Case Class or Value Type. Value-level Co-Products are not supported. Please write a decoder for it's parent-type PostState.
  }
}

Steps to reproduce the behavior
Minimal code to reproduce is available at https://github.com/bicouy0/zio-protoquill-enum-query-fail
Workaround
Unknown
@getquill/maintainers

I just ran into the same thing, turned out it I didn't import ctx.* in my repository. In my case the encoding / decoding worked by just having a given MappedEncoding in both directions and an imported context.

Same issue here 🤔
Explained in Discord: https://discord.com/channels/629491597070827530/821565909139062845/1246119588408725614

I manage to make my query compile by changing it as following:
// before - doesn't compile
inline def insertOrganizationMembers(members: Iterable[(UserUuid, OrgUuid, OrgRoleDB)]) = {
  quote {
    liftQuery(members).foreach { case (userUuid, orgUuid, role) =>
      organizations_members
        .insert(
          _.user_uuid_fk -> userUuid,
          _.org_uuid_fk  -> orgUuid,
          _.role         -> role,
        )
        .onConflictIgnore
      }
    }
  }

// after - does compile
inline def insertOrganizationMembers(members: Iterable[(UserUuid, OrgUuid, OrgRoleDB)]) = {
  quote {
    liftQuery(members).foreach { t =>
      organizations_members
        .insert(
          _.user_uuid_fk -> t._1,
          _.org_uuid_fk  -> t._2,
          _.role         -> t._3,
        )
        .onConflictIgnore
      }
    }
  }

Perhaps unrelated, but I had a problem today where my custom encoder was not used unless it was named (ie given myEncoder: Encoder[PostState]... vs given Encoder[PostState]), and it was imported by name as well at the call site.


Rules name refinement

This issue for ongoing discussion for better name of the rules before it goes live.

missing-lingui-transformation - i think "transformation" is not the right word. Also "lingui" is already in the rule id (as plugin namespace lingui/, so should not be duplicated.

Proposition: unmarked-string
Proposition: unwrapped-string

i18n-only-identifiers - i don't like the i18n in the name because it may confuse people that this rule is applicable to i18n instance calls. But in fact it works  for t macro only.

Proposition: only-identifiers

Offer better naming for this rules, i don't really happy with what i'm came up.

Hello!
very exciting to have this eslint plugin!
I read the docs and TBH I'm not sure I understood what all the rules are about because the descriptions are sometimes quite short. It would be nice to explain in the readme (and also in the error messages), what the right approach is.
anyways, here are some suggestions for naming:
missing-lingui-transformation - no-raw-strings, no-unlocalized-strings, no-hardcoded-text
t-call-in-function - no-constant-translation, no-stale-translation
i18n-only-identifiers - prefer-named-constants, prefer-constants-in-interpolation, prefer-constants-in-text (as far as I can tell, t`hello ${func()}!` is valid but will be extracted as hello {0} which is harder to translate.
no-single-varibles-to-translate - missing-localizable-content, no-lonely-variable, nothing-to-translate,

@vonovak https://github.com/igorDolzh/eslint-plugin-lingui/pull/6 check the readme updates here

I like missing-lingui-transformation -> no-unlocalized-strings really self-explanatory!

i18n-only-identifiers - prefer-named-constants, prefer-constants-in-interpolation, prefer-constants-in-text

i think constant here is confusing
let userName = user.name;
t`Hello {userName}`;

I think identifier is more right word, or turn this upside-down no-expression-in-message

no-expression-in-message sounds best imho! 👍

Created a PR, changed named of rules which are have no doubts.
Didn't change no-single-varibles-to-translate because not sure about the options

@vonovak I like your suggestion for rule names

missing-lingui-transformation -> no-unlocalized-strings 👍
About this (t-call-in-function - no-constant-translation, no-stale-translation) I'm not sure, since this rule is for t only. Following the pattern no-${something} it could be renamed to no-t-outside-of-function something like that.
About this i18n-only-identifiers. Something like no-complex-interpolation maybe? I believe it is better to avoid having prefer since the level of severity of the rule could be adjusted outside of the rule name.
About no-single-varibles-to-translate at the moment, seems fine. If theoretically to consider to expand the rule to keep track that there is something to translate between Trans or t. I like missing-localisable-content or no-keys-without-text

What do you think?

@igorDolzh you a bit late 😃 We already merged renaming for
missing-lingui-transformation -> no-unlocalized-strings
i18n-only-identifiers -> no-expression-in-message

it could be renamed to no-t-outside-of-function

I like this one. Sounds pretty self-describing.

About no-single-varibles-to-translate at the moment, seems fine. If theoretically to consider to expand the rule to keep track that there is something to translate between Trans or t. I like missing-localisable-content or no-keys-without-text

I like missing-localisable-content but this naming is not consistent with other no-{something} rules. Not sure it should...
no-single-varibles-to-translate sounds quite well, actually. Because t`${one}${two}` is already something to translate (the translator could change the order in diffrent language if needed), and the rule should not complain here. So highlighting that there should not be a single variable is right thing.

how about renaming no-single-variables-to-translate to no-single-variable-to-translate? The singular here sounds a little better imho.

I think we've done here.


update this for rocm v2.3?

update this for rocm v2.3?

Since this is an experimental repo, updating it depends entirely on whether or not I have time to do it. At the moment, I am busy with other projects, so I have not had time to update it in the last few months.

@jlgreathouse if you do make a round of version number updates, feel free to ping me as I'll check if I can undo some of the tweaks on my PR for changes accepted to the relevant upstreams


Ungoogling the name?

Description
Allow for a shorter application name, synonymous with "ungoogled-chromium" but without the word "google".
Who's implementing?

[X] I'm willing to implement this feature myself

The problem
When the ungoogled-chromium browser is installed on the user's system, it (currently) does not make any attempt to identify itself as something distinct from regular Chromium. That is, the main executable is still named chromium, and while the Debian packaging does not add any GUI menu entries, the present approach would presumably be to add one for "Chromium" despite the different nature of the program.
In my effort to develop tooling to "ungoogle" a Debian Chromium package, I aimed to create ungoogled-chromium packages that can be installed concurrently with the regular chromium one. This required giving the application as installed a distinct identity.
The problem is, while "ungoogled-chromium" is a good name for the project---succinctly communicating its primary objective---it's somewhat awkward as a name for an application. Partly because it's a bit long... here is what it might look like in a Xubuntu application menu:

The other reason is a bit more subjective. I love the idea of ungoogled-chromium, because it allows one to use the Chromium browser with all its arguable technical merits, without making the Faustian bargain of giving Google telemetry on everything. It enables a user to expunge Google from one particular (yet significant) aspect of their digital existence.
And yet, every time they reach for this privacy-enhancing tool, they are reminded of its relation to Google---even if the relationship is in the negative. They see the word "google" in the application name, and even though all the mysterious requests to 1e100.net et al. are gone, this one last callout to the behemoth remains. Which is all the more unfortunate when base Chromium doesn't prominently assert its Google identity, making it feel like the more "vanilla" experience even though under the hood it's anything but.
Or to put it another way: The name "ungoogled-chromium" may be thought of by some folks as synonymous with "unf***ed-chromium". I won't begrudge anyone the sentiment. But even those folks may not want to see the word "f***" put before them regularly, not least on occasions when they aren't thinking about big-tech hegemony.
(My own views don't go quite that far, but I do find the name lacking in aesthetic appeal.)
Possible solutions
I would like to propose the following alternative name for the application (not the project!), to be considered synonymous with "ungoogled-chromium" but without reference to the Goog:
UnChromium
This name is used by a long-defunct Chromium-related project that can be safely discounted. I've come across a few places online where this name has organically been used to refer to ungoogled-chromium, suggesting an intuitive connection between the two. Searching for "unchromium" on DDG, amusingly, turns up ungoogled-chromium and related pages as the first several results. And I think it can be considered fitting that the difference between the two names is precisely the "googled" part.
I'm aware of the earlier discussions regarding the possibility of a name change. To be clear, this proposal has nothing to do with trademark legalities, only the subjective aspects of the name. (I'm assuming the legal concerns have been assuaged since the time those discussions took place.)
And I understand @Eloston's point about not wanting to rebrand the browser---since this is just Chromium minus the Google bits, not some whole new animal like Brave---and so deliberately went for a Chromium name tweak rather than throwing darts at a periodic table.
Alternatives
I've thought of other possible names (e.g. UgChromium, UndChromium), but this is the best I've got. I'm not married to "UnChromium"; it could be something different that looks nice, and likewise elides Google. But for all the reasons given above, I think this one's going to be hard to beat.
Additional context
If this proposal passes muster, then I would integrate the new name into the Debian package-conversion framework so that it can be seen by Debian users. I have at least two different contexts in mind:

The name visible in GUI menus, as in the example above;
The name of the .deb package, as seen by apt-get.

The first is the more important of the two, but consistency between the two is desirable. The "ungoogled-chromium" term would still show up in the package description and documentation, since those materials are oriented more toward "what is this?" and less toward day-to-day usage. Spelling out the precise relationship with Google in those contexts, I believe, remains necessary and appropriate.
How the new name is used elsewhere would be out of my hands, of course.

Please note that "Ungogled-Chromium Web Browser" is your invention. As far as I know, it goes under "Chromium" in other platforms. Only the version string page mentions it being ungoogled. And it is by design so.
On the other hand The Licence gives you broad freedom.

Please note that "Ungogled-Chromium Web Browser" is your invention. As far as I know, it goes under "Chromium" in other platforms. Only the version string page mentions it being ungoogled. And it is by design so.

If both regular Chromium and ungoogled-chromium are installed, however, two "Chromium Web Browser" menu entries won't do.

On the other hand The Licence gives you broad freedom.

My immediate intent is to use this in the Debian packaging (as that's the angle I'm working from), so I think seeking some buy-in from the project itself is the right thing to do.

If both regular Chromium and ungoogled-chromium are installed, however, two "Chromium Web Browser" menu entries won't do.

You should not be able to do so. They are mutually exclusive.

You should not be able to do so. They are mutually exclusive.

Something I'd like to see happen, eventually, is ungoogled-chromium entering the Debian package repositories. This will not only make it available to Debian users as a whole (without needing to install external packages nor set up external repos), but also ensure that it is kept up-to-date and supported to the same degree that Debian supports the regular Chromium package.
(I'd like this to happen for other distros too, but Debian/Ubuntu is what I use, so I can only hope others will see this example as one worth following.)
This will be a non-starter, however, if ungoogled-chromium can't be installed together with the regular one. There are at least three objections I can think of to this:

Cannot accommodate multiple users on a system (e.g. a terminal server) who wish to use both;

Cannot accommodate a single user who would like to try out ungoogled-chromium, without giving up the regular one;

Does not allow alternate use cases for the "other" browser packages (e.g. someone may browse with ungoogled-chromium, but still want to use regular chromium-shell for some project).

If such a restriction were in place, one of the very first bug reports for the package would be to remove it. I addressed the issue proactively in my tooling because I knew it would be untenable otherwise.

They use the same profile after all!

That's a whole 'nuther can of worms. Being able to install the two browsers side-by-side is different from actually running them side-by-side. There are arguments for and against having ungoogled-chromium use the same config location as the regular one. I don't feel strongly either way about that, and haven't felt the need to put together a patch that changes it. But I'm not ruling out that the Debian folks may feel differently, and that such a patch may come about in the future, if only for their packaging.


Service#direct_vms - compact to prevent API bug

When accessing /api/services/10000000000115?attributes=aggregate_all_vm_cpus, you can get  an API error - NoMethodError - "undefined method `cpu_total_cores' for nil:NilClass"
That happens because direct_vms can return [nil], which means all_vms will also return [nil].
So fixing direct_vms to prevent nils..
@kbrock you've been fixing at least one similar bug .. any thoughts about a more general approach?

Verified in OPS UI that this minor fix doesn't affect Services with VMs and with no VMs.


Mega arkade Tool Update Event

Let us update CLIs provided by arkade:

[ ] helm 3.6.3
[ ] kubectl 1.21
[ ] kubectx 0.9.4
[ ] kubens 0.9.4
[ ] kubeseal 0.16.0
[ ] inletsctl 0.8.14
[ ] openservicemesh 0.9.1
[ ] linkerd2 stable-2.10.2
[ ] kubebuilder v3.1.0
[ ] kustomize v4.2.0
[ ] doctl v1.63.1
[ ] k9s v0.24.15
[ ] popeye v0.9.7
[ ] civo v0.7.30
[ ] terraform 1.0.4
[ ] vagrant 2.2.18
[ ] packer 1.7.4
[ ] gh 1.14.0
[ ] pack v0.20.0
[ ] buildx v0.6.1
[ ] kops v1.21.0
[ ] krew 0.4.1
[ ] kube-bench v0.6.3
[ ] hugo v0.87.0
[ ] docker-compose 1.29.2
[ ] nats 0.0.25
[ ] argocd 2.0.5
[ ] nerdctl v0.11.0
[ ] istioctl 1.11.0
[ ] tkn v0.20.0
[ ] kim v0.1.0-beta.4
[ ] trivy v0.19.2
[ ] flux2 v0.16.2
[ ] polaris 4.0.7
[ ] influx v2.1.0 (repo change)
[ ] metal cli v0.6.0
[ ] kanctl 0.65.0
[ ] kubestr v0.4.18
[ ] k10multicluster , k10tools 4.0.9
[ ] tfsec v0.58.4

Are you a GitHub Sponsor (Yes/No?)
Check at https://github.com/sponsors/alexellis

[ ] Yes
[x] No

Hi @dirien it seems like you've been busy here.. are these not determined automatically, or are all of these tools ones which needed a specific URLTemplate?


Enhancement: Show tasks of Exchange resource

Currently tasks of Google and CardDAV ressources are shown. It would be nice if the same applied to Exchange tasks.

I just like to remind that this request is still open and the demand still exists. Are there any plans for this to be realized in the near future?

Stern reminder that you don't get to demand anything in opensource.

In case you simply don't like the word "demand": I'm not demanding anything. I just pointed out that there is demand for a synchronization with an Exchange server. (as in "need", "desire", "requirement")
After 2 years without an update I thought it's acceptable to ask whether there are any plans for this.

Hi OpenTasks team,
I support this request. I know that open source enthusiasts using MS products is unusual, but unfortunately it sometimes has to happen, usually related to employment. I have to sync to a shared Outlook calendar/to-do list from my Android phone and in the absence of an open source app for this I'm using Gmail's ability to sync Exchange tasks - it's an unholy alliance of two company's products I'd rather not have to use!
Cheers 🙂

I'm not opposed to this idea. In fact I'd like to support as many back-end systems as possible (including proprietary ones).
At present my time to work on OpenTasks is quite limited. That's why I focus on the low hanging fruits. Also, adding Exchange support requires knowledge of the protocol, which I don't have yet.
I'm happy to assist if someone wants to give it a shot, but I won't be able to implement this all by myself in the foreseeable future.

Hi @dmfs,
Thanks for reply and explaining. Personally I have don't have the skills to do this and I agree with you that it requires a good understanding of the protocol. There are a few example client implementations around but none I've found for Android. They may still be a useful starting point however.
If I suddenly find I have the skills and time to try this I will!
Cheers 🙂


invalid addon repo url makes apiserver crash

Describe the bug
invalid addon repo url makes apiserver crash
To Reproduce

launch VelaUX
go to Addons
click button "addon registries"
click button "new"
set "Type" to be GIthub
input one invalid URL(means that is not a git repo follows "Addon Format") to "URL" textbox
click button "submit"

Expected behavior
VelaUx should works as before, but apiserver pod is crashed by null point exception.
➜  ~ kubectl -n vela-system logs -f apiserver-7dc97f7558-kqs92
{"level":"info","ts":1641302139.5081124,"caller":"apiserver/main.go:108","msg":"KubeVela information: version: undefined, gitRevision: undefined"}
I0104 13:15:40.315824       1 utils.go:143] find cluster gateway service vela-system/kubevela-cluster-gateway-service:9443
{"level":"info","ts":1641302140.3392406,"caller":"rest/rest_server.go:251","msg":"HTTP APIs are being served on: <IP_ADDRESS>:8000, ctx: context.Background.WithCancel"}
I0104 13:15:40.339524       1 leaderelection.go:248] attempting to acquire leader lease vela-system/apiserver-lock...
I0104 13:15:40.342548       1 rest_server.go:150] new leader elected: f28b817d-f8e7-45a3-b713-dbff80c9f15e
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x18 pc=0x22b1528]

goroutine 231 [running]:
github.com/oam-dev/kubevela/pkg/addon.(*Registry).ListAddonMeta(0xc00071df20, 0xc000e13330, 0x8, 0xc000e90dc0)
	/workspace/pkg/addon/source.go:212 +0x68
github.com/oam-dev/kubevela/pkg/addon.(*Cache).discoverAndRefreshRegistry(0xc0003c4330)
	/workspace/pkg/addon/cache.go:213 +0x127
github.com/oam-dev/kubevela/pkg/addon.(*Cache).DiscoverAndRefreshLoop(0xc0003c4330, 0x8bb2c97000)
	/workspace/pkg/addon/cache.go:69 +0x6a
created by github.com/oam-dev/kubevela/pkg/apiserver/rest/usecase.NewAddonUsecase
	/workspace/pkg/apiserver/rest/usecase/addon.go:104 +0x1b7

Screenshots

KubeVela Version
v1.2.0-RC2
Cluster information

Additional context

@StevenLeiZhang Thanks for your report.This bug has been fixed by #3026 by test. Please check again with the code with master branch or next  1.20 release . Let me close this issue firstly, feel free we can reopen this issue if the bug still exist.

I have question about this
fmt.Errorf("git type repository only support github for now")
why is Vela only suport github? I want to  use one local private gitlab, this private gitlab also suport github openapi.

@StevenLeiZhang yes, we're planing to support gitlab, but we only tested github currently. You're very welcome to contribute if the gitlab is tested well. Thanks!


Question regarding the "Circle score"

Hi, I'm new to this field and trying to identify/verify the true eccDNA from my WGS data. Could you explain the "circle score" a little more? How it was calculated ? (equation?)
In the reference paper, you mentioned:
"a circular DNA mapping score, calculated by multiplying the length of the split read by its mapping probability, and summing over all the scores for the split reads supporting a circle"
,which I was not fully understand.
Many thanks!
Ko

The whole idea is to arrive to an additive scoring scheme that takes into account the amount of reads (more better), the length of the read (ore better) and the mapping probability (higher better)

The whole idea is to arrive to an additive scoring scheme that takes into account the amount of reads (more better), the length of the read (ore better) and the mapping probability (higher better)

Thank you! So you simply add the numbers together? Have you set a specific weight to any of the parameters in your equation? or given every parameter an equal weight when calculating  "circle score"?
(e.g., If the "length of the reads" is more important than the other parameter when indicating eccDNA, you give the "length of the reads" more weight than the other parameters when adding the score together to get the circle score)
Best,
Ko

Sorry for the late reply. In a very hacky manner. So that it was helpful for some collaborators. I have therefore not explore anything about it.
best,
Inigo


Added new reporting plugin that produces junit-like xml output.

Written for/tested with Jenkins, but may be useful for other CI servers too.
Plugin structure based on xml_tests_report.rb -- couldn't get Jenkins to recognise it's Cppunit-like output. Also made the following changes to xml_tests_report:

Moved xml_tests_report.rb into lib subdir to match new plugin directory layout and squash build warning.
Corrected mismatched tags ()

If anyone wants to bring this up to date and resolve the conflicts, I'd be happy to merge it. Otherwise, it's not worth sorting through this on my own at the moment.


BattleNet launchers not appearing in Steam Library

The BattleNet launcher doesn’t appear in my Steam Library after I reached the Jedi message and hit “Okay”. Steam restarts but the launcher is not there.
Any advise or fix for this?

@Smonkeh i just updated to 2.96, i suggest using that one..i fixed the vdf library not being called in the 2.95 which is exactly why you werent able to add them to library, please try this version out and get back to me to make sure its working properly. i would use the start fresh button before you try 2.96 "start fresh"

Thanks for the quick reply. I’ll try again and update you soon.

Hi Roy, I have confirmed that the new 2.96 works. Thank you so much!

@Smonkeh no worries brother!! I'm glad it works


Add deadman's switch

Fixes #137
A deadman's switch can now be added to any node within any task. This is accomplished via exposing the internal statistics per node to the TICKscript itself via the stats method.
The stats method emits the internal stats of a node at a given interval. The deaman's switch uses the collected stat to trigger an alert if it drops below a threshold.
The method deadman is available on all nodes and is a helper function to easily create a deadman's switch.
This:
 var data = stream.from()...
    // Trigger critical alert if the throughput drops below 100 events per 1s and checked every 10s.
    data.deadman(10s, 100.0)
    //Do normal processing of data
    data....

is equivalent to this:
 var data = stream.from()...
    // Trigger critical alert if the throughput drops below 100 events per 1s and checked every 10s.
    data.stats(10s)
          .derivative('collected')
              .nonNegative()
          .alert()
              .id('node \'stream0\' in task \'{{ .TaskName }}\'')
              .message('{{ .ID }} is dead: {{ index .Fields "collected" }} points/second')
              .crit(lamdba: "collected" <= 100.0)
    //Do normal processing of data
    data....

In addition to the deadman method you can globally configure all stream tasks to have deadman's switches.
[deadman]
  global = true
  interval = "10s"
  threshold = 100.0

The id and message fields can also be configured globally.

@gunnaraasen @rossmcdonald I know you both had some original input. How does the final result look?

@nathanielc Just to make sure, if I wanted to alert if throughput drops below 1 event every 10s, would that be the following?
data.deadman(10s, 0.1)

I can see this notation being a little confusing, since it's not obvious that it samples every second. Without looking at any documentation, I would assume that this:
data.deadman(10s, 100.0)

Means "alert when you receive less than 100 events in 10 seconds".

@rossmcdonald Correct. I was torn as well on which I liked.
With this one data.deadman(10s, 0.1) you can reason about it always in the units of seconds. So if you want to increase the frequency at which you check you only need change the interval. data.deadman(1s, 0.1)
For this one data.deadman(10s, 100.0) If you change the time you also have to remember to change the threshold or you just broke your deadman's switch.  data.deadman(1s, 10.0)

To be clear, I can easily do it either way, I just decided that once you know its always events/second it becomes easier to use.

I'll second @rossmcdonald's confusion on the arguments to the deadman function.
It would be nice if the rate interval in the deadman helper was configurable. This would make deadman checks over larger time periods, e.g. >15 min, easier and help add context for other people looking at the TICKscript after it's written. It's not immediately obvious that .deadman(5m, 0.1111) means check for a rate less than 10 events over the last 15 minutes every 5 minutes.
Also, what would be the recommendation for alerting on an absolute time since the last event? Say alerting only when a service hasn't sent any events in the last 10 minutes.

@gunnaraasen  So do you want a third argument, like
.deaman(5m, 10.0, 15m)

or is
.deadman(5m, 3.33)

good enough?

@gunnaraasen As for alerting on an absolute time since last event that is the same as a 0 threshold for that time period correct?
.deadman(10m, 0)

If you want both its doable(but not via the configuration)
var data = stream.from()...

data.deadman(10m, 0.0)
data.deadman(1h, 5.0)// using Ross's notation read as less than 5 events for the hour

// Do normal data fprocessing
data....

As an aside I am leaning towards Ross's notation since otherwise its a pain to calculate.

Regarding:

With this one data.deadman(10s, 0.1) you can reason about it always in the units of seconds.

I like the idea, but I think in practice it will just end up becoming confusing since it's not explicitly obvious from the function name. It also requires a little bit of mental arithmetic that I think may be a bit too cumbersome.

I like Ross' notation as well. Although switching the order of the arguments might be slightly more readable:
data.deadman(5.0, 1h) // Then reading left to right it would be 5 events / 1 hour

However, then it's unclear how often the rate checked? Does it default to checking once an hour?
Also, the 0 rate threshold works perfectly for checking the absolute time since the last event.

I also think that switching the parameters would help improve readability.


Not working without rest framework

Works for me, but the README should use 'jwt_auth' as the code location and shouldn't mention the nonexistent refresh view.
An example is https://github.com/chandler37/immaculater/commit/dbdef0599d8d980c3c2721a8b82921d5c2dbd475

https://github.com/webstack/django-jwt-auth


How to start? XD

Stop!  Use http://jsonlint.com/ to check.
Have you searched to see if there are other issues for the same issue? If so, comment on that issue instead.
Are you running master? We work on the dev branch and then add that functionality to master. Your issue may be fixed on dev and there is no need for this issue, just wait and it will eventually be merged to master.

Expected Behavior
Actual Behavior
Your config.json (remove your credentials and any other private info)
your config here

Steps to Reproduce
Other Information
OS:
Git Commit: (run 'git log -n 1 --pretty=format:"%H"' and paste it here)
Python Version: (run 'python -V' and paste it here)

please go to slack chat or see this url.
call @k4n30 to close this issue.


Apply Laravel Package Auto-Discovery

Should working flawlessly with Laravel 5.5 Package Auto Discovery feature

Thank you sooo much @ianmustafa  🧀 😄


[BUG] SyncCopyFromUriAsync() requires a SAS uri while StartCopyFromUriAsync() does not

Library name and version
Azure.Storage.Blobs 12.14.1
Describe the bug
We are trying to use SyncCopyFromUriAsync() as a replacement of StartCopyFromUriAsync() / WaitForCompletionAsync() pair.
(as a note: we do know about 256mb limit and our files are known to be less then 1 mb).
We have a working code like
	// Copy op: ok
	var sourceClient = containerClient.GetBlobClient("source.txt");
	var destinationClient = containerClient.GetBlobClient("destination.txt");
	//...
	var copyOp = await destinationClient.StartCopyFromUriAsync(sourceClient.Uri);
	await copyOp.WaitForCompletionAsync();

and it breaks if we do use SyncCopyFromUriAsync() instead:
	// Sync copy: throws CannotVerifyCopySource error
	var sourceClient = containerClient.GetBlobClient("source.txt");
	var destinationClient = containerClient.GetBlobClient("destination.txt");
	//...
	await destinationClient.SyncCopyFromUriAsync(sourceClient.Uri);

	// Sync copy with SAS: ok
	//await destinationClient.SyncCopyFromUriAsync(sourceClient.GenerateSasUri(BlobSasPermissions.Read, DateTimeOffset.UtcNow.AddMinutes(5)));

Expected behavior
We do expect the SyncCopyFromUriAsync() should mirror the StartCopyFromUriAsync() contract and should accept non-SAS uris for blobs from the same container.
Actual behavior
The SyncCopyFromUriAsync() throws RequestFailedException:
Azure.RequestFailedException : Server failed to authenticate the request. Please refer to the information in the www-authenticate header.
RequestId:5b205f18-901e-0049-5837-e9557d000000
Time:2022-10-26T12:36:25.0532752Z
Status: 401 (Server failed to authenticate the request. Please refer to the information in the www-authenticate header.)
ErrorCode: CannotVerifyCopySource

while trying to copy blob from the same container
Reproduction Steps
	public sealed class BlobStorageTroubleshootingTests1
	{
		private const string StorageConnectionString = "DefaultEndpointsProtocol=https;AccountName=...;AccountKey=...;EndpointSuffix=core.windows.net";

		[Test]
		public async Task TestSyncCopy_Ok()
		{
			var blobServiceClient = new BlobServiceClient(StorageConnectionString);
			var containerClient = blobServiceClient.GetBlobContainerClient("delete-me-" + Guid.NewGuid().ToString("N"));
			var sourceClient = containerClient.GetBlobClient("source.txt");
			var destinationClient = containerClient.GetBlobClient("destination.txt");

			var exists = await containerClient.ExistsAsync();
			if (!exists)
				await containerClient.CreateAsync();

			try
			{
				using var content = new MemoryStream(Encoding.UTF8.GetBytes("Test content"));

				await sourceClient.UploadAsync(content);

				// Sync copy: throws CannotVerifyCopySource error
				await destinationClient.SyncCopyFromUriAsync(sourceClient.Uri);

				// Sync copy with SAS: ok
				//await destinationClient.SyncCopyFromUriAsync(sourceClient.GenerateSasUri(BlobSasPermissions.Read, DateTimeOffset.UtcNow.AddMinutes(5)));

				using var download = (await destinationClient.DownloadStreamingAsync()).Value;
				var expectedText = await new StreamReader(download.Content).ReadToEndAsync();

				Assert.AreEqual(expectedText, "Test content");
			}
			finally
			{
				if (!exists)
					await containerClient.DeleteAsync();
			}
		}

		[Test]
		public async Task TestCopyOp_Ok()
		{
			var blobServiceClient = new BlobServiceClient(StorageConnectionString);
			var containerClient = blobServiceClient.GetBlobContainerClient("delete-me-" + Guid.NewGuid().ToString("N"));
			var sourceClient = containerClient.GetBlobClient("source.txt");
			var destinationClient = containerClient.GetBlobClient("destination.txt");

			var exists = await containerClient.ExistsAsync();
			if (!exists)
				await containerClient.CreateAsync();

			try
			{
				using var content = new MemoryStream(Encoding.UTF8.GetBytes("Test content"));

				await sourceClient.UploadAsync(content);

				// Copy op: ok
				var copyOp = await destinationClient.StartCopyFromUriAsync(sourceClient.Uri);
				await copyOp.WaitForCompletionAsync();

				using var download = (await destinationClient.DownloadStreamingAsync()).Value;
				var expectedText = await new StreamReader(download.Content).ReadToEndAsync();

				Assert.AreEqual(expectedText, "Test content");
			}
			finally
			{
				if (!exists)
					await containerClient.DeleteAsync();
			}
		}
	}

Environment
 OS Name:     Windows
 OS Version:  10.0.22000
 OS Platform: Windows
 RID:         win10-x64
 Base Path:   C:\Program Files\dotnet\sdk\6.0.402\

Host:
  Version:      6.0.10
  Architecture: x64
  Commit:       5a400c212a

.NET SDKs installed:
  3.1.424 [C:\Program Files\dotnet\sdk]
  6.0.203 [C:\Program Files\dotnet\sdk]
  6.0.305 [C:\Program Files\dotnet\sdk]
  6.0.402 [C:\Program Files\dotnet\sdk]

@ig-sinicyn Thanks for reaching out to us and reporting this issue. We are looking into this issue and we will provide an update.

@ig-sinicyn I looked at the backend logs for the below error that you had encountered with SyncCopyFromUriAsync():
Azure.RequestFailedException : Server failed to authenticate the request. Please refer to the information in the www-authenticate header.
RequestId:5b205f18-901e-0049-5837-e9557d000000
Time:2022-10-26T12:36:25.0532752Z
Status: 401 (Server failed to authenticate the request. Please refer to the information in the www-authenticate header.)
ErrorCode: CannotVerifyCopySource

The SyncCopyFromUriAsync function uses Copy Blob Rest API underneath. So this behavior seems to be by-design and the same has been documented.

The source for a Copy Blob From URL operation can be any committed block blob in any Azure storage account that's either public or authorized with a shared access signature.

More Info:

x-ms-copy-source:name
Required. Specifies the URL of the source blob. The value can be a URL of up to 2 kibibytes (KiB) in length that specifies a blob. The value should be URL-encoded as it would appear in a request URI. The source blob must either be public or be authorized via a shared access signature. If the source blob is public, no authorization is required to perform the operation.

So if you don't wish to provide the SAS token, try to make the Access Level on the container to public.
I tried to make the access level of container to public (from private) it worked without the SAS token.

Oh, I did miss the fact that StartCopyFromUriAsync() uses different Azxure rest API underneath.
Thasnks for the responmse and feel free to close the issue:)

@ig-sinicyn Thanks for getting back. We will now proceed with closure of this GitHub issue. If you need any further assistance on this issue in future, please feel free to reopen this thread. We would be happy to help.


drivers: i2c: Add SAM0 I2C driver

This adds a SERCOM I2C driver for SAM0 series chips.
Tested with a SAM D21 chip against a SSD1306 display and a MLX90393
sensor.  Only compile tested for SAM D20.
Signed-off-by: Derek Hageman<EMAIL_ADDRESS>

Codecov Report

Merging #14128 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master   #14128   +/-   ##
=======================================
  Coverage   52.68%   52.68%
=======================================
  Files         307      307
  Lines       45473    45473
  Branches    10530    10530
=======================================
  Hits        23956    23956
  Misses      16640    16640
  Partials     4877     4877

Continue to review full report at Codecov.

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

Unfortunately, I think pulling the definitions from dts_fixup.h may have been premature.  I'd thought you could just set an alias in the DTS (e.g. i2c-0 = &sercom3;) to get a stable define for the board's pinmux.c, but it looks like everything other than LED, SW, and PWM_LED are marked as deprecated by extract_dts_includes.py, unless they start with "DT_".
So it looks like you'd have to use the DT_ define with the address in it (e.g. DT_ATMEL_SAM0_I2C_42001400_BASE_ADDRESS), which is awkward or do a hack and name the alias something like dt-i2c-0 = &sercom3; which feels more like a bug than what's intended.

Note: I have a branch with DMA support here.  That depends on #14861 for DMA support and can be squashed if that's merged or as a separate PR later.

Any plans to address the CODEOWNER issue?

@galak: Who should I set it to?  I don't mind setting it to myself, but I'm not sure that's the best choice.  This applies to the other SAM0 PRs in general, too.

needs rebase

Rebase done.


Redefine technology

Description of the issue
Discussion in https://github.com/OpenEnergyPlatform/oekg/issues/43 has shown that our current definition of technology[^1] is not useful for the OEKG use case
[^1]: A Technology is an information content entity that specifies how to create an artificial object.
Ideas of solution
If you already have ideas for the solution describe them here
Workflow checklist

[ ] I discussed the issue with someone else than me before working on a solution
[ ] I already read the latest version of the workflow for this repository
[ ] The goal of this ontology is clear to me

I am aware that

[ ] every entry in the ontology should have a definition
[ ] classes should arise from concepts rather than from words

My proposal for a redefinition of technology is: A technology is a plan specification that describes how to combine artificial objects or other material entities and processes in a specific way.
From that I propose define energy technology: An energy technology is a technology that describes how to combine energy transformation units, energy transformations, energy carriers and energy in a specific way. Alternatively, we could label this as energy transformation technology.
This class could then be the anchor what is needed in https://github.com/OpenEnergyPlatform/oekg/issues/43.
To spell out some subclasses that are needed for the OEKG:

energy technology as proposed

power generation technology: A power generation technology is an energy technology that describes how to combine energy transformation units and energy carriers to generate electricity.

wind power technology: A wind power technology is a power generation technology that describes how to generate electricity using wind energy converting units (wind turbines).

offshore wind power technology: An offshore wind power technology is a wind power technology that describes how to generate electricity using wind energy converting units (wind turbines) in offshore wind farms.

power-to-fuel technology: A power to fuel technology is an energy technology that describes how to combine power-to-fuel system, electrical energy and portions of matter in power-to-fuel processes.

mobility technology: A mobility technology is a technology that describes how vehicles participate in transport.

electric mobility technology: An electric mobility is a technology that describes how electric vehicles participate in transport.

We instead define the following relations via new object properties:

technology 'describes process' some process': A relation between a technology and a process in which the technology describes how to combine the process with artificial objects or other material entities in a specific way.
technology 'describes artificial object' some 'artificial object': A relation between a technology and an artificial in which the technology describes how to combine the artificial object with other material entities and processes in a specific way.
technology 'describes participant' some 'material entity': A relation between a technology and an artificial in which the technology describes how to combine the material entity with other material entities and processes in a specific way.

And more specific for energy technology:

energy technology 'describes process' some 'energy transformation': A relation between an energy technology and an energy transformation in which the technology describes how to combine the energy transformation with energy transformation units and other material entities in a specific way.
energy technology 'describes artificial object' some 'energy transformation unit'': A relation between an energy technology and an energy transformation unit in which the energy technology describes how to combine the energy transformation unit with material entities and energy transformations in a specific way.
energy technology 'describes energy input' some energy: A relation between an energy technology and an energy in which the energy technology describes how the energy is input to the energy transformation described by the technology.
energy technology 'describes energy output' some energy: A relation between an energy technology and an energy in which the energy technology describes how the energy is output to the energy transformation described by the technology.
energy technology 'describes material input' some 'portion of matter': A relation between an energy technology and an energy in which the energy technology describes how the material entity is input to the energy transformation described by the technology.
energy technology 'describes material output' some 'portion of matter': A relation between an energy technology and an energy in which the energy technology describes how the material entity is output of the energy transformation described by the technology.

Sorry for this long comment but https://github.com/OpenEnergyPlatform/oekg/issues/43 sparked a lot of ideas which I wanted to keep.

An alternative approach to the specific object properties would be to have only one axiom that catches all.
For example for the wind offshore technology something like:
'is about' some 'wind energy converting unit' and ('part of' some 'offshore wind farm') and ('participates in' some 'wind energy transformation')
Or for electric mobility technology:
'is about' some 'electric vehicle' and 'participates in' some transport
This might also help solving the problem described in https://github.com/OpenEnergyPlatform/ontology/issues/1350#issuecomment-1573604989 as we then probably a lot of participates in axioms only within 'technology X' 'is about' Y 'participates in' some Z axioms, but not directly at Y.

Thanks @l-emele I like the proposals!
Since it is so long, I needed some time to answer.
I like the one-axiom-only approach. I added some brackets to the axiom:
'technology' 'is about' some ('artifictial object' and 'participates in' some process)

I had the idea of adding an elucidation to technology to say that the structure was built explicitly to depict the technologies used in energy modelling.
About heat technologies:
The axioms for geothermal and solar are near by:

geothermal heat/geothermal heat technology: 'is about' some ('geothermal heat plant' and 'participates in' some 'geothermal heat transfer') --> geothermal heat plant or unit or both?
solarthermal heat/solarthermal heat technology: 'is about' some ('solar heat plant' and 'participates in' some 'solar thermal energy transformation') --> solar heat plant or unit or both?

heat pump (technology) an the others are more tricky: 'is about' some ('electric heat pump' and 'participates in' some 'heat transfer')

The axiom like this seems a little too unspecific for heat pumps. I opened #1595
Also p2h and hybrid boiler technology would require such a process, see #1570

Regarding the plant versus unit question: I had the same question when implementing wind power technology and its subclasses. For wind power technology itself I have currently only the unit in the axiom:

'is about' some 'wind energy converting unit'  and ('participates in' some 'wind energy transformation')

But for offshore wind power technology versus onshore wind power technology I used additionally the plant to distinguish between those two classes:

'is about' some ('wind energy converting unit' and ('part of' some 'offshore wind farm')) and ('participates in' some 'wind energy transformation')
'is about' some ('wind energy converting unit' and ('part of' some 'onshore wind farm')) and ('participates in' some 'wind energy transformation')

heat pump (technology) an the others are more tricky: 'is about' some ('electric heat pump' and 'participates in' some 'heat transfer')

While in "normal" heat transfers, the thermal energy flows from the higher to the lower temperature. In contrast, in heat transfers involving heat pumps the thermal energy flows from lower to higher temperatures. Maybe we need additional subclasses of heat transfer with normal versus reversed heat flow.

For solar power technology I have to options to axiomatise the process part:

'participates in' some ('electricity generation process' and ('has energy input' some 'solar energy'))
'participates in' some ('solar energy transformation' and ('has physical output' some 'electrical energy'))

Both are equivalent, currently I use the first one.

Regarding the plant versus unit question: I had the same question when implementing wind power technology and its subclasses.

I noted: Given that energy technology has the axiom 'is about' some ('energy transformation unit' and ('participates in' some 'energy transformation')), the unit must be included in the subclasses, else the reasoner in Protégé shows errors.

I think it makes sense to finish #1527 soon. We are axiomatising the classes here that are being restructures there...

For the scenario bundles it is important to continue here rather soon. Missing is still

[ ] storage technologies
[ ] mobility technologies
[ ] non-energetic use for energy carriers
[ ] heat

From bilateral meeting with @l-emele
Storage technologies:

create X energy storage objects as equivalent class via X energy storage function
general energy storage technology
X energy storage technology

first level of inferred hierarchy into OEKG

Mobility technologies:

introduce mobility technology and electric vehicle mobility technology

CCS technology is being discussed in #1760

I opened seperate issues for non-energetic use for energy carriers and heat technologies and close here.


[Bug] Disabling Captions is not persisted in LocalStorage

Current Behavior:

When I disable captions, the captions: true flag is not updated to captions: false in the LocalStorage.
Expected Behavior:

The captions flag should be set to false if I disable captions.
Steps To Reproduce:

Set up the Storage feature.
Enable captions.
Delete all fields from LocalStorage
Disable captions.
See that nothing is persisted to LocalStorage.
Enable captions.
See that the player configuration is now persisted in LocalStorage but with captions: true.
Disable captions again.
See that the captions: true flag hasn't changed to false as expected.

Reproduction Link: How to create a repro?
Environment:
theme: default
"vidstack": "1.11.10"

Anything Else?

I believe the bug lies here: https://github.com/vidstack/player/blob/main/packages/vidstack/src/core/tracks/text/text-tracks.ts#L143
This updates the local storage only if the track.mode !== 'disabled', so only if it's enabled. That means that it never sets captions: false if a user disables the captions text track.


Link failures

The xxhash and xxhash-ffi packages both compile and expose the xxhash C library which can lead to link failures depending on the toolchain used. Here is an example of compiling and linking the benchmark with ghc-8.0.2, cabal-install-<IP_ADDRESS>, Cabal-<IP_ADDRESS>, gcc-8.2.0, binutils-2.31.1 (ld.bfd) in which the symbols from both packages clash.
Linking <<BUILD>>/xxhash-ffi-bench/xxhash-ffi-bench ...
/usr/bin/ld: <<BUILD>>/libHSxxhash-ffi-<IP_ADDRESS>-inplace.a(xxhash.o): in function `XXH32':
xxhash.c:(.text+0x10): multiple definition of `XXH32'; <<STORE>>/xxhash-0.0.2-<<HASH>>/lib/libHSxxhash-0.0.2-<<HASH>>.a(xxhash.o):xxhash.c:(.text+0x0): first defined here
/usr/bin/ld: <<BUILD>>/libHSxxhash-ffi-<IP_ADDRESS>-inplace.a(xxhash.o): in function `XXH32_update':
xxhash.c:(.text+0x1e0): multiple definition of `XXH32_update'; <<STORE>/xxhash-0.0.2-<<HASH>>/lib/libHSxxhash-0.0.2-<<HASH>>.a(xxhash.o):xxhash.c:(.text+0x1b0): first defined here
/usr/bin/ld: <<BUILD>>/libHSxxhash-ffi-<IP_ADDRESS>-inplace.a(xxhash.o): in function `XXH32_digest':
xxhash.c:(.text+0x3b0): multiple definition of `XXH32_digest'; <<STORE>>/xxhash-0.0.2-<<HASH>>/lib/libHSxxhash-0.0.2-<<HASH>>.a(xxhash.o):xxhash.c:(.text+0x440): first defined here
collect2: error: ld returned 1 exit status
`gcc' failed in phase `Linker'. (Exit code: 1)
cabal: Failed to build bench:xxhash-ffi-bench from xxhash-ffi-<IP_ADDRESS>.

Also starting with GHC-8.4 the runtime system includes a copy of xxhash which adds another clash:
Linking <<BUILD>>/xxhash-ffi-bench/xxhash-ffi-bench ...
/usr/bin/ld.gold: error: /opt/ghc/8.4.4/lib/ghc-8.4.4/rts/libHSrts_thr.a(xxhash.thr_o): multiple definition of 'XXH32'
/usr/bin/ld.gold: <<STORE>>/xxhash-0.0.2-<<HASH>>/lib/libHSxxhash-0.0.2-<<HASH>>.a(xxhash.o): previous definition here
/usr/bin/ld.gold: error: /opt/ghc/8.4.4/lib/ghc-8.4.4/rts/libHSrts_thr.a(xxhash.thr_o): multiple definition of 'XXH32_update'
/usr/bin/ld.gold: <<STORE>>/xxhash-0.0.2-<<HASH>>/lib/libHSxxhash-0.0.2-<<HASH>>.a(xxhash.o): previous definition here
/usr/bin/ld.gold: error: /opt/ghc/8.4.4/lib/ghc-8.4.4/rts/libHSrts_thr.a(xxhash.thr_o): multiple definition of 'XXH32_digest'
/usr/bin/ld.gold: <<STORE>>/xxhash-0.0.2-<<HASH>>/lib/libHSxxhash-0.0.2-<<HASH>>.a(xxhash.o): previous definition here
collect2: error: ld returned 1 exit status

We should use the 'namespace emulation' that the C library provides to rename the symbols. That unfortunately won't fix the benchmark with GHC>=8.4. Probably we should just drop the xxhash dep.
I'm also wondering if we could link against a system lib (libxxhash is in Ubuntu-18.10 and will be in Debian 10) or if that's completely impossible now. Linking with duplicates is a bit obscure.

Probably we should just drop the xxhash dep.

Agree, benchmarking is nice, linking is more important

I'm also wondering if we could link against a system lib (libxxhash is in Ubuntu-18.10 and will be in Debian 10) or if that's completely impossible now. Linking with duplicates is a bit obscure.

Complicated approach
I vote just prefixing all C functions with hs_xxhash_ffi_ or something similar.

Modern GHCs seems to improve their linking story; at least CI no longer suffers from name clashes.
I tried to set XXH_NAMESPACE, but it actually broke linking :)


Series markers rendered on wrong location when showing multiple charts

Description
With version 3.50.0 the series markers shown on hover are affected by other charts, causing them to render way off under certain conditions.
I checked with 3.49.0 and in that version it works as expected.
Steps to Reproduce

Add 2 charts, one area chart and one bar chart with at least 2 series
Hover over the area chart
Notice that the dots are not on the line

Expected Behavior
Dots should be on the line
Actual Behavior
Dots are rendered way off
Screenshots

Reproduction Link
https://jsfiddle.net/gLh60msx/

This is fixed with this commit and the fix will be shipped with v3.51.0


Stop sharing Google Analytics account with lunrjs.com

When this project was forked from lunr.js the index.html used for the homepage (and possibly others) copied the google analytics snippet.
Please remove all google analytics snippets that include the account number used by Lunr.

Its nearly been three months, any update? It'd be nice to not have to filter out elasticlunr from my google analytics...

I see as of this change you are taking a step back from this project, please be so kind as to remove the google analytics snippet that is sharing the same account number as lunr.js. The change should take you less time than the commit to ask for maintainers.