license is actually free as in freedom, rather than free as in 'free beer'

hi,
you state that your license is

observed is free (as in beer) software

but this implies 'freeware' rather than a free software license (such as MIT)
https://en.wikipedia.org/wiki/Gratis_versus_libre

Woops. Thanks for the catch.


I do not understand BltPixel's definition

The current spec has the following to say about the Blt buffer's pixel format (pp. 489)

Each software Blt buffer entry represents a pixel that is comprised of a 32-bit quantity. Byte zero of
the Blt buffer entry represents the Red component of the pixel. Byte one of the Blt buffer entry
represents the Green component of the pixel. Byte two of the Blt buffer entry represents the Blue
component of the pixel. Byte three of the Blt buffer entry is reserved and must be zero.

I would expect that definition to translate into this struct:
#[repr(C, packed)]
pub struct BltPixel {
    pub red: u8,    // "Byte zero represents the Red component"
    pub green: u8,  // "Byte one represents the Green component"
    pub blue: u8,   // "Byte two represents the Blue component"
    _reserved: u8,  // "Byte three is reserved and must be zero"
}

Or maybe this one, if I badly misunderstood UEFI's endianness:
#[repr(C, packed)]
pub struct BltPixel {
    _reserved: u8,  // "Byte three is reserved and must be zero"
    pub blue: u8,   // "Byte two represents the Blue component"
    pub green: u8,  // "Byte one represents the Green component"
    pub red: u8,    // "Byte zero represents the Red component"
}

However, what uefi-rs does is this:
#[repr(C, packed)]
pub struct BltPixel {
    pub blue: u8,   // "Byte two represents the Blue component"
    pub green: u8,  // "Byte one represents the Green component"
    pub red: u8,    // "Byte zero represents the Red component"
    _reserved: u8,  // "Byte three is reserved and must be zero"
}

There is no question that it works, and that the other interpretations don't (just gave them a try). But I don't understand why. It feels like there is a mismatch between what the spec says and what the implementation (here OVMF) is doing. Can you enlighten me?

I haven't even read that part of the spec.
I just scrolled down a few pages to the EFI_GRAPHICS_OUTPUT_PROTOCOL.Blt() section and found this:
typedef struct {
UINT8 Blue;
UINT8 Green;
UINT8 Red;
UINT8 Reserved;
} EFI_GRAPHICS_OUTPUT_BLT_PIXEL;

I'm a simple person, I see a structure definition, I copy it :)

But in all seriousness, BGRA is what modern GPUs use internally, due to the legacy of Windows' GDI, so it wouldn't even make sense to expose a buffer in RGBA or ABGR order.
I'm guessing either the UEFI spec got the wording wrong, or when they say "byte 0" they mean "the byte indicated by the first element of the EFI_PIXEL_BITMASK structure".

Yeah, my first a spec bug! :smile: Reported to the UEFI forum, thanks for the explanation.


[Creator Starter Kit] BUG: columns not appearing in Details List

When using the details list in tandem with a dataverse table, which has an additional column added from a different table, the new column that has been added, is not appearing when specified in the column items array.
To Reproduce
Steps to reproduce the behavior:

add a custom column within a custom page to a dataverse table
add the column to the fields
add the column to the column items
witness the lack of column

Expected behavior
The new column to be displayed
Screenshots

Additional context
I am using a lookup to find the column data in a different table in dataverse.

Hi,
Is there any sort of timeframe for when this might be looked at?
Thanks,

Hi,
I haven't thought there is formula can do like Filter() As Record.
I did similar to your way, but mine is working fine AddColumns(Filter(),"lookupname",LookUp()), the relationship is one-to-many.
I might help you if you could provide me an example, at least some samples for those tables. I will do my best

Oooo, maybe it is my own hubris that has failed me here.
There is no relationship between the tables, they both have lookups to the product table and I want to find a product inventory where the product is equal to the related product on the work order product table. Let me try without the As step (I thought it would work as its within the addColumns function)

Oooo, maybe it is my own hubris that has failed me here. There is no relationship between the tables, they both have lookups to the product table and I want to find a product inventory where the product is equal to the related product on the work order product table. Let me try without the As step (I thought it would work as its within the addColumns function)

Hi,
I haven't thought there is formula can do like Filter() As Record.
I did similar to your way, but mine is working fine AddColumns(Filter(),"lookupname",LookUp()), the relationship is one-to-many.
I might help you if you could provide me an example, at least some samples for those tables. I will do my best

My code is working as I got a response when using a monitor session...
{   "status": 200,   "duration": 62,   "dataSource": "Product Inventory",   "responseSize": 1034,   "controlName": "dtlProductList",   "propertyName": "Items",   "nodeId": 18,   "formulaData": {     "script": "AddColumns(\n    Filter(\n        'Work Order Products',\n        'Work Order'.'WO Number' = RecordItem.'WO Number'\n    ) As WOProduct,\n    \"QuantityinStock\",\n    LookUp(\n        'Product Inventory',\n        Product.Product = WOProduct.Product.Product\n    ).'Quantity Available'\n)",     "spanStart": 160,     "spanEnd": 254   },   "data": {     "context": {       "entityName": "dtlProductList",       "propertyName": "Items",       "id": 1935,       "nodeId": 18,       "diagnosticContext": {         "dataOperation": {           "protocol": "cds",           "operation": "getRows",           "dataSource": "Product Inventory",           "apiId": "CdsNative",           "table": "msdyn_productinventories",           "operationName": "CdsConnector.getRowsAsync"         },         "formula": "AddColumns(\n    Filter(\n        'Work Order Products',\n        'Work Order'.'WO Number' = RecordItem.'WO Number'\n    ) As WOProduct,\n    \"QuantityinStock\",\n    LookUp(\n        'Product Inventory',\n        Product.Product = WOProduct.Product.Product\n    ).'Quantity Available'\n)",         "span": {           "start": 160,           "end": 254         }       }     },     "request": {       "url": "https://guide-development.crm11.dynamics.com/api/data/v9.0/msdyn_productinventories?%24filter=msdyn_product%2Fproductid+eq+1fd55489-f429-ed11-9db2-002248414552&%24select=msdyn_productinventoryid%2Cmsdyn_qtyavailable%2Cmsdyn_product%2Cmsdyn_name%2Ccreatedon%2C_msdyn_product_value&%24top=1",       "method": "GET",       "headers": {         "Accept": "application/json",         "Prefer": "odata.continue-on-error",         "x-ms-user-agent": "PowerApps/3.23021.21 (Web AuthoringTool; AppName=f9fe0508-3f2a-479e-b676-56efbdc9a401)",         "x-ms-client-session-id": "b5103ba6-994c-4baa-b391-b98ab7cde6c4",         "x-ms-client-request-id": "c887a04b-89bb-4adf-a2bf-33c4623d42b8",         "Request-Id": "c887a04b-89bb-4adf-a2bf-33c4623d42b8",         "Client-Session-Id": "b5103ba6-994c-4baa-b391-b98ab7cde6c4",         "x-ms-app-id": "f9fe0508-3f2a-479e-b676-56efbdc9a401",         "Accept-Language": "en-GB",         "Cache-Control": "no-cache, no-store",         "Content-Type": "multipart/mixed;boundary=batch_e0f164b5-8791-4153-a037-6390bce7de73"       },       "body": ""     },     "response": {       "duration": 62,       "size": 1034,       "status": 200,       "headers": {         "Content-Type": "application/json; odata.metadata=minimal",         "OData-Version": 4,         "Preference-Applied": "odata.include-annotations=\"*\"",         "Cache-Control": "no-cache",         "content-encoding": "gzip",         "Content-Length": 648,         "expires": -1,         "odata-version": 4,         "req_id": "ad60d599-8b32-455e-b166-7c278268fe48"       },       "body": {<EMAIL_ADDRESS>"https://guide-development.crm11.dynamics.com/api/data/v9.0/$metadata#msdyn_productinventories(msdyn_productinventoryid,msdyn_qtyavailable,msdyn_product,msdyn_name,createdon,_msdyn_product_value)"<EMAIL_ADDRESS>-1<EMAIL_ADDRESS>false<EMAIL_ADDRESS>20962210,         "value": [           {<EMAIL_ADDRESS>"W/\"20962506\"",             "msdyn_productinventoryid": "0d0858e9-32b1-ed11-83ff-00224841b8de"<EMAIL_ADDRESS>5,             "msdyn_qtyavailable": 5,             "msdyn_name": null<EMAIL_ADDRESS>"20/02/2023 15:26",             "createdon": "2023-02-20T15:26:24Z"<EMAIL_ADDRESS>"120 Watt Amplifier 100v O/P"<EMAIL_ADDRESS>"msdyn_product"<EMAIL_ADDRESS>"product",             "_msdyn_product_value": "1fd55489-f429-ed11-9db2-002248414552"           }         ]       },       "responseType": "json"     },     "startTime": 1049997,     "name": "https://guide-development.crm11.dynamics.com/api/data/v9.0/$batch",     "fetchStart": 1049997,     "responseEnd": 1050054,     "nextHopProtocol": ""   } }

Hi,
This is an example and working fine for me. It's fine you can also do without a relationship between tables as long as another table is a unique record.
https://user-images.githubusercontent.com/5079423/220147264-c1bd2764-2ea5-4df5-ab77-6097a312813b.mov
OnSelect[Get Data]
ClearCollect(
    'Work Order Products',
    Table(
        {
            id: 1,
            work_order_id: 1001,
            product_name: "Widget A",
            quantity: 10
        },
        {
            id: 2,
            work_order_id: 1002,
            product_name: "Widget B",
            quantity: 5
        },
        {
            id: 3,
            work_order_id: 1003,
            product_name: "Widget C",
            quantity: 20
        },
        {
            id: 4,
            work_order_id: 1004,
            product_name: "Widget D",
            quantity: 5
        }
    )
);
ClearCollect(
    'Product Inventory',
    Table(
        {
            id: 1,
            product_name: "Widget A",
            quantity: 100,
            location: "A1"
        },
        {
            id: 2,
            product_name: "Widget B",
            quantity: 50,
            location: "B3"
        },
        {
            id: 3,
            product_name: "Widget C",
            quantity: 75,
            location: "A2"
        },
        {
            id: 4,
            product_name: "Widget D",
            quantity: 150,
            location: "B1"
        }
    )
)

OnSelect[Clear]
Clear('Work Order Products');
Clear('Product Inventory')

DetailsList.ColumnsItems
Table(
    {
        ColName: "product_name",
        ColDisplayName: "Product Name",
        ColWidth: 300
    },
    {
        ColName: "quantity",
        ColDisplayName: "Quantity",
        ColWidth: 100
    },
    {
        ColName: "QuantityinStock",
        ColDisplayName: "Quantity in Stock",
        ColWidth: 100
    }
)

DetailsList.Items
AddColumns(
    'Work Order Products' As Record,
    "QuantityinStock",
    LookUp(
        'Product Inventory',
        ThisRecord.product_name = Record.product_name
    ).quantity
)

You are correct in what you are saying and I really appreciate your efforts on finding a solution for this, however, the control is not rendering my new column.
My AddColumns is working as intended:

As per usual it is user error!
My column_items list was incorrect. I was using colName not ColName (capitalisation is key!)

How I did miss that lolz xD

How I did miss that lolz xD.
Ok so it solved

Yes it is solved, thank you so much for your time on this


v1.16 release sha256sum hashes incorrect

Hello,
The published sha256sum hashes for v1.16 on https://github.com/GoogleCloudPlatform/cloudsql-proxy/releases (@kurtisvg) do not match when I hash the binaries.
6e4df1e2b62e41b3c01818f75dd46a99cb0e9d385c3b6237281251e28cb38432  Downloads/cloud_sql_proxy.linux.amd64
9d543e4ac1df190d2f54399a7ff46f0b38d0f0a72a0fc69f6579e24ca50cdea9  Downloads/cloud_sql_proxy.linux.386
Can you please confirm the binaries are unaltered and safe to use?
Thanks,

Hey frots@ - thanks for bringing this to our attention.
We've verified that the hashes you've gotten are in fact correct, and match out records. We've updated the sha's on the releases page to their correct versions.
For the sake of transparency, what happened here was we use a script to trigger our releases and push the binaries to different locations. During this last release some updates to this script we made had failed, and we ran it 2-3 times while debugging. Currently, I manually copy the sha's generated as part of this script onto our releases page. However in this case, I copied the sha's from a different build than the one we published.
This build had a different sha because a dependency changed. We are working both to 1) Automated the releases page so I can't mess this up in the future, and 2) Do a better job of pinning our dependencies so that each tag of the build is completely reproducible.

Thanks for the prompt reply.


Fix fish shell integration when prompt function doesn't return anything

The current integration printf's the user's prompt function as if it was a format string.
However, as the documentation for fish's printf builtin says:
"       It will also return non-zero if no argument at all was given, in which case it will print nothing"
The result is that there are plenty of cases where the printf function will print nothing at all when the prompt function does not return anything.   This is true despite using command substitution to try to get the output as a string.
This is all AFAICT, it's tricky to figure out exactly what happens.
Put another way, this will work fine:
function fish_prompt; printf (__is_prompt_start); printf %s (is_user_prompt); printf (__is_prompt_end); end
This will also work fine:
function fish_prompt; printf (__is_prompt_start); is_user_prompt; printf (__is_prompt_end); end
What exists now:
function fish_prompt; printf (__is_prompt_start); printf (is_user_prompt); printf (__is_prompt_end); end will not always work.
It will result in displaying no user prompt in a large number of cases.
A screenshot is attached where you can see what happens. The printf returns and displays nothing.
both evaluation, and printf with %s + command substitution display the user prompt.
The same is technically true of the other two printfs, but for some reason they always seem to display output.
I wish i could say with certainty why this is.  However, one thing i can say with certainty - it will always be correct to simply execute the functions without printfs.
Internally, fish executes the prompt function in a subshell into a buffer and then displays it.
So we do that for the user prompt.  I am happy to do it with the other two functions as well.

The same is technically true of the other two printfs, but for some reason they always seem to display output. I wish i could say with certainty why this is. However, one thing i can say with certainty - it will always be correct to simply execute the functions without printfs. Internally, fish executes the prompt function in a subshell into a buffer and then displays it.

I think this is because the __is_prompt functions always have output. Lets remove all the printfs and just using function invocations for all 3, that sounds like a better option. Thanks for the PR and detailed write up!

The same is technically true of the other two printfs, but for some reason they always seem to display output. I wish i could say with certainty why this is. However, one thing i can say with certainty - it will always be correct to simply execute the functions without printfs. Internally, fish executes the prompt function in a subshell into a buffer and then displays it.

I think this is because the __is_prompt functions always have output. Lets remove all the printfs and just using function invocations for all 3, that sounds like a better option. Thanks for the PR and detailed write up!

done.


Can not set osdsdock api-endpoint using configuration file

Is this a BUG REPORT or FEATURE REQUEST?:

Uncomment only one, leave it on its own line:
/kind bug

What happened:
I used following configuration. (osdsdock api_endpoint is '<IP_ADDRESS>:50051')
But osdsdock used default api_endpoint configuration( '<IP_ADDRESS>:50050')
/etc/opensds/opensds.conf
[lvm]
name = lvm
description = LVM Test
driver_name = lvm
config_path = /etc/opensds/driver/lvm.yaml

[osdsapiserver]
api_endpoint = <IP_ADDRESS>:50040
auth_strategy = noauth
# If https is enabled, the default value of cert file
# is /opt/opensds-security/opensds/opensds-cert.pem,
# and key file is /opt/opensds-security/opensds/opensds-key.pem
https_enabled = False
beego_https_cert_file =
beego_https_key_file =

[osdslet]
api_endpoint = <IP_ADDRESS>:50049

[osdsdock]
api_endpoint = <IP_ADDRESS>:50051
# Specify which backends should be enabled, sample,ceph,cinder,lvm and so on.
enabled_backends = lvm

[database]
endpoint = <IP_ADDRESS>:62379,<IP_ADDRESS>:62380
driver = etcd

What you expected to happen:
Can set osdsdock api-endpoint using configration file
How to reproduce it (as minimally and precisely as possible):

Change  configuration for osdsdock api-endpoint
Start osdsdock

Anything else we need to know?:
I think cause of this issue is constants are specified in the following code.
https://github.com/opensds/opensds/blob/291b4ff7f4724ea7ebb6894e56274b2a22a0e44a/cmd/osdsdock/osdsdock.go#L56
Environment:

Hotpot(release/branch) version: development branch (1a13191a90cc38407e977240b2c550d23b10cf6b)
OS (e.g. from /etc/os-release):
Kernel (e.g. uname -a):
Install tools:
Others:

Yes, the reason why we set it as a static IP and address is from here, so I'm curious why you want to change the listen IP of osdsdock service, we are glad to set it as configurable if there are some use cases.

@leonwanghui  Thank you for your reply.
I want to start multiple osdsdock services in one server. So I want to change the listen port of osdsdock.
I think there are some use case. For example managing multiple storage, such as lvm, and ceph, in one server or starting both attacher and provisioner osdsdock service for using the server resources effectively.

@In your usecase, I suggest you deploy one osdsdock, but config enabled_backends with several backend types (such like enabled_backends=lvm,ceph).

@leonwanghui
Thank you for your suggestion! I was mistaken about the config enabeled_backends.
Please let me add information about another use case, it is according to the following doc(2.2.4 Configure Host-based replication).
https://github.com/opensds/opensds/blob/master/docs/readthedocs/installation/OpenSDS Bali POC Deployment.pdf

@xing-yang PTAL, thanks!

Hi @hirokikmr are you referring to the following section on host-based replication config setting?  Are you not able to add an attacher dock this way?
[osdsdock]
api_endpoint = <IP_ADDRESS>:50051
log_file = /var/log/opensds/osdsdock.log
bind_ip = <IP_ADDRESS>
dock_type = attacher

Hi @hirokikmr, any update on this issue? If not, please close it : )

@leonwanghui @xing-yang
I retried the configration.
When I set "dock_type" to "attacher", the api_endpoints of osdsdock is able to change.
I'm sorry for my lack of confirmation.
Thank you for your support!


Fixing the --release flag usage for javac (#2343)

Signed-off-by: Andriy Redko<EMAIL_ADDRESS>
Fixing the --release flag usage for javac
Fixing the --html5 flag usage for javadoc

Description
Bringing https://github.com/opensearch-project/OpenSearch/pull/2343 to main
Issues Resolved
Part of https://github.com/opensearch-project/job-scheduler/pull/130
Check List

[ ] New functionality includes testing.

[ ] All tests pass

[ ] New functionality has been documented.

[ ] New functionality has javadoc added

[X] Commits are signed per the DCO using --signoff

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

x   Gradle Check failure 1c7a2b8 Log 3047
Reports 3047

This is interesting:
 [1.3.0] Execution failed for task ':distribution:tools:java-version-checker:compileJava'.
 [1.3.0] > warning: source release 1.8 requires target release 1.8

Found the cause, https://github.com/opensearch-project/OpenSearch/pull/2354


Remove patron groups SUL-institution and SUL-Exception

Updated patron-groups.tsv and deleted the groups via the UIs.


OpenType Script Tag

The main intention of SBScriptLocator was to facilitate text shaping. Since text shaping is mostly done with an opentype layout engine, there should be a function to directly get the opentype tag of a script. A list of open type script tags is available at https://docs.microsoft.com/en-us/typography/opentype/spec/scripttags

Resolved in v2.1


gt_types after decomposition

Decomposing an heterozygous variant with two alts results in many "ref/." genotypes, which should probably be given a different gt_types than for "ref/alt" (1).
Also it is not clear in the docs what these numbers mean ("A compressed binary vector of numeric genotype “types” (e.g., 0, 1, 2) - Inferred from the VCF GT genotype tag.", but they don't mean the same as in the VCF). That description could be improved. I read somewhere in the code that '2' actually means 'unknown/unknown', which is hard to guess.

the 0, 1, 2, 3 for HOM_REF, HET, UNKNOWN, HOM_ALT should not be visible to the user. The user should always use the HOM_REF, HET, etc constants. So you shouldn't have to guess anything.
Again, I agree that the decomposition does introduce some subtleties with "HEMIZYGOTES" but we think it's a good trade off.
The gts displayed when you request them should match those from the VCF. Are you seeing otherwise?
Not sure if this answers your concern, let me know if I can clarify more.

Yes, the gts do match the VCF. The problem arose when I queried the database directly with sql statements, filtering over the gt_types column, as described in [1]. The result was a rare variant with wrong HET genotypes in half of the samples (actually 'hemizygotes'). I am not sure what this column is used for, but as it is,

it is wrong for a user to use it directly,
if it is used internally for API queries, it may cause the same kind of errors, so maybe worth signalling. I guess if you ask for HET through API you also get "hemizygotes" in the result, as it will search for '1' in that column.
Anyway the description [1] for that field could be improved.

[1] http://gemini.readthedocs.org/en/latest/content/database_schema.html

Actually it is a dup of https://github.com/arq5x/gemini/issues/510

I have a large enough data set that I have to deal with lots of hemizygous decomposed variants, and it has been a real headache. It looks like I could reliably distinguish hemizygotes from heterozygotes when gt_types==HET by using gt_alt_depths (0 is hemizygote, >0 is a true heterozygote). Unfortunately, it's unclear to me how I could do this within a GEMINI query, especially when I am using --family-wise to try to get variants that segregate among affected family members. Any suggestions?

Agreed, this is becoming more important as people get larger sample sizes. This is a weakness of how we do things now. I think it's possible using alt_depths, as you suggest, but the queries would get quite complex. we are thinking about how to address this but don't have a good solution as of yet. The thoughts are in #510;I think we will need a different internal representation.


node:events not found

Error caused by esm

@lucasgmagalhaes  Having the same issue. Can you explain how to solve this?

Hi @ErlanBazarov! The issue was caused by the esm library.

I just remove it and it started to work again!


Refactor APRBMBProver.advance_proof.

This PR refactors APRProver.advance_proof and APRBMCProver.advance_proof with the following goals:

Less code duplication between the two functions
Don't repeat IO-intensive computations inside the bounded model checker
Don't show Reached iteration bound 1 notices every step when using the bounded model checker.

This somewhat overlaps with: https://github.com/runtimeverification/pyk/pull/546, but that one can be updated.


v0.1.1

In this release, we have refreshed the dependency ranges and added explicit python 3.10 support.

Codecov Report

Merging #9 (826df41) into main (ba796bc) will decrease coverage by 0.28%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##             main       #9      +/-   ##
==========================================
- Coverage   97.77%   97.48%   -0.29%
==========================================
  Files           5        3       -2
  Lines         270      239      -31
==========================================
- Hits          264      233      -31
  Misses          6        6

Impacted Files
Coverage Δ

bayte/_meta.py
100.00% <100.00%> (ø)

bayte/ensemble.py
98.27% <100.00%> (-0.03%)
:arrow_down:

bayte/plots.py

bayte/__init__.py

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


Error when using parameter decorator in server middleware

Versions

nuxt:  v2.15.8
node:  v14.16.1

Reproduction

An error occurs when the parameter decorator is used in the server middleware.
I am using type-graphql module in the project, and below is the code that causes the error.

Additional Details

I'm not sure, but I think it's a problem related to jiti.
This is my jiti version.
└─┬<EMAIL_ADDRESS>  ├─┬<EMAIL_ADDRESS>  │ └──<EMAIL_ADDRESS>  └─┬<EMAIL_ADDRESS>    └──<EMAIL_ADDRESS>deduped

Steps to reproduce
import 'reflect-metadata'

import { Arg, Field, Int, Mutation, ObjectType, Query, Resolver } from 'type-graphql'
import { AutoIncrement, Column, DataType, IsInt, Length, Model, PrimaryKey, Table } from 'sequelize-typescript'

@Table
@ObjectType()
export class Department extends Model {
  @IsInt
  @Field(_type => Int)
  @PrimaryKey
  @AutoIncrement
  @Column(DataType.INTEGER)
  id: number

  @Length({ min: 1, max: 20 })
  @Field(_type => String)
  @Column(DataType.STRING)
  name: string
}

@Resolver(Department)
export class DepartmentResolver {
  @Mutation(_returns => Department)
  async add_department(
    @Arg('name', _type => String) name: string // <--- Here
  ): Promise<Department> {
    return await Department.create({ name })
  }
}

What is Expected?
It should work.
What is actually happening?
Displayed error.
Decorating class property failed.
Please ensure that proposal-class-properties is enabled and runs after the decorators transform.

I have the same issue, is there any news on this?

Versions
Nuxt:2.15.8
Node: 14.15.1
Typescript:4.0.8
Reproduction

Set up a local nuxt module @/modules/test.ts
Write simple code with usage of class decorators (example below)
Run the code.

What is expected?
It should work.
What is actually happening?
The following error.
Error: Decorating class property failed. Please ensure that proposal-class-properties is enabled and runs after the decorators transform.
Here is the code to reproduce the issue in a simply local nuxt module using typescript
`
import 'reflect-metadata'
import { Module } from '@nuxt/types'
import { Expose, plainToClass, classToPlain } from 'class-transformer'
class Category {
@Expose()
name: string
}
const module: Module = function () {
whiteList({
name: 'Wohnen',
blaMetaData: 'zasd',
})
}
function whiteList(messyCategory: any) {
const category = plainToClass(Category, messyCategory, {
excludeExtraneousValues: true,
})
return classToPlain(category)
}
export default module
`

@fatheaddrummer I was able to solve this problem by referring to the code in the jiti repo. but it's pretty old code, so I'm not sure if it will work.
This is my nuxt.config.js code
import jiti from 'jiti'
import { transformSync } from '@babel/core'

export default {

  ...

  createRequire: (jsFileName) => {
    return jiti(jsFileName, {
      debug: false,
      legacy: true,
      transform (opts) {
        const _opts = {
          babelrc: false,
          configFile: false,
          compact: false,
          retainLines: typeof opts.retainLines === 'boolean' ? opts.retainLines : true,
          filename: '',
          cwd: '/',
          ...opts.babel,
          plugins: [
            [require('@babel/plugin-transform-modules-commonjs'), { allowTopLevelThis: true }],
            [require('babel-plugin-dynamic-import-node'), { noInterop: true }],
            [require('babel-plugin-transform-import-meta')],
            [require('@babel/plugin-syntax-class-properties')]
          ]
        }

        const parameterDecorator = require('babel-plugin-parameter-decorator')
        if (opts.ts) {
          _opts.plugins.push([require('@babel/plugin-transform-typescript'), { allowDeclareFields: true, onlyRemoveTypeImports: true }])
          // `unshift` because this plugin must come before `@babel/plugin-syntax-class-properties`
          _opts.plugins.unshift([require('@babel/plugin-proposal-decorators'), { legacy: true }])
          _opts.plugins.unshift(require('babel-plugin-transform-typescript-metadata'))
          _opts.plugins.push(parameterDecorator)
        }

        if (opts.legacy) {
          _opts.plugins.push(require('@babel/plugin-proposal-nullish-coalescing-operator'))
          _opts.plugins.push(require('@babel/plugin-proposal-optional-chaining'))
        }

        // `babel-plugin-parameter-decorator` plugin must come after `@babel/plugin-proposal-class-properties`
        const decoratorIndex = _opts.plugins.indexOf(parameterDecorator)
        if (decoratorIndex !== -1) {
          _opts.plugins.splice(decoratorIndex + 1, 0, [require('@babel/plugin-proposal-class-properties'), { loose: true }])
        }

        if (opts.babel && Array.isArray(opts.babel.plugins)) {
          _opts.plugins?.push(...opts.babel.plugins)
        }

        try {
          return {
            code: transformSync(opts.source, _opts)?.code || ''
          }
        } catch (err) {
          return {
            error: err,
            code: 'exports.__JITI_ERROR__ = ' + JSON.stringify({
              filename: opts.filename,
              line: err.loc?.line || 0,
              column: err.loc?.column || 0,
              code: err.code?.replace('BABEL_', '').replace('PARSE_ERROR', 'ParseError'),
              message: err.message?.replace('/: ', '').replace(/\(.+\)\s*$/, '')
            })
          }
        }
      }
    })
  }
}

and I needed additional @babel/plugin-proposal-class-properties module installation.
Please forgive me for my poor English and I hope it was helpful.

I also have same problem.
If anyone knows some workaround, I would like you to share it.
versions

nuxt : 2.15.8
node : 16.14.2
yarn : 1.22.15

what I did

npx create-nuxt-app
created the file ./api/index.ts and ./api/sample.ts
add serverMiddleware: ['~~/api/'], to the nuxt.config.js
yarn dev and access to http://localhost:3000/sample

errors shown
Decorating class property failed. Please ensure that proposal-class-properties is enabled and runs after the decorators transform.

./api/index.ts
import express, { json, urlencoded } from 'express'
import { Sample } from './sample'

const app = express()
app.use(json())
app.use(urlencoded({ extended: true }))

app.get('/sample', (_request: express.Request, response: express.Response) => {
  console.log(new Sample())
  response.send({ message: 'OK' })
})

export default app

./api/sample.ts
const sampleDeco = (target: any, memberName: string) => {
  let currentValue: string = target[memberName]

  Object.defineProperty(target, memberName, {
    set: (newValue: string) => {
      currentValue = newValue
    },
    get: () => {
      return currentValue
    },
  })
}

export class Sample {
  @sampleDeco
  aaa?: string
}

facing the similar issue with typeorm, anyone has workaround ?

@JasonGaoG With my particular issue I ended up having to make new models that were just for the server middleware. Then I could drop json2typescript out of the files. It's not great since I have two sets of duplicate models in some spots but it worked.

We are approaching the Nuxt 2 EOL date (June 30, 2024) - see this article for more information. This is advance warning that I'm going to close this issue then, as it's currently marked as a Nuxt 2 related bug.
If it's a critical or security issue, please do comment and let me know, in case it is possible to address it before the EOL date.
If it's a an issue you think is relevant for Nuxt 3, please feel free to open a fresh issue (or just comment here so I can update labels, etc.). 🙏
Thank you for your understanding and for your contribution to Nuxt. ❤

It's the day, at last. Nuxt 2 is now marked end-of-life.
My apologies we never got round to resolving this bug in the 2.x branch, but we do have to draw a line somewhere. Again, if you think this is still relevant for Nuxt going forward, please feel free to open a fresh issue (or just comment here so I can update labels, etc.). 🙏


Build with new build system

I'm experimenting with a Package.swift using the new build system. Interestingly, it generates static libraries by default but without any lib prefix so the library becomes Upsurge.a. A swiftmodule is also generated and as the Makefile has shown, the two files should be droppable into an end project.
I'm trying to build on Linux which of course will have issues with import Accelerate but these can now be wrapped in #if !os(Linux)  C style.
The -module-name must be Upsurge but the only way I can get that at present is to have an Upsurge subdir inserted below Source.
And obviously if we can get a build happening here, then it all directly applies to HDF5Kit with a sysmodule definition for the hdf5 C library.

Already on HDF5Kit :) https://github.com/aleph7/HDF5Kit/tree/swift-build

Awesome!


Add filter to git hook (dev qol)

Currently the git hook takes every change you have and starts the filter from there and bypasses the "all" filter.
This changes it so the files from the git hook are filtered through "all" first.
I considered adding the filter at https://github.com/microsoft/vscode/blob/master/build/gulpfile.hygiene.js#L332 instead, but this seems like a more targeted fix.

Actually, since one can also invoke gulpfile.hygiene.js as a standalone script, it would be better to have the fix up there instead, such that files passed in such a way also run through the all filter. What do you think?

I was also thinking that, but I wasn't sure if there was a scenario where we would want to just hygiene exactly what the caller passed (i.e it was intentional to pass in a file not listed by the all filter). But I generally agree that it would make more sense just to filter everything that goes through hygiene.

@joaomoreno I've updated it to filter everything passed into the hygiene task, let me know what you think.

Excellent, thanks! :fireworks:


Mishandled callback field in sub-message inside oneof

If a oneof contains a sub-message that has a string field, the encode callback is called twice, and the decode callback is never called. Modified the "simple" example to demonstrate.
simple.proto:
// A very simple protocol definition, consisting of only
// one message.

syntax = "proto2";

message SimpleMessage {
    optional string lucky_number = 1;
}

message Response {
  oneof response {
   SimpleMessage simpleMessage = 1;
  }
}

simple.c:
#include <stdio.h>
#include <pb_encode.h>
#include <pb_decode.h>
#include "simple.pb.h"

bool encode_string(pb_ostream_t *stream, const pb_field_t *field, void * const *arg)
{
    printf("encode_string...\n");

    char *str = "Hello world!";

    if (!pb_encode_tag_for_field(stream, field))
        return false;

    return pb_encode_string(stream, (uint8_t*)str, strlen(str));
}

bool decode_string(pb_istream_t *stream, const pb_field_t *field, void **arg)
{
    printf("decode_string...\n");

    uint8_t buffer[1024] = {0};

    /* We could read block-by-block to avoid the large buffer... */
    if (stream->bytes_left > sizeof(buffer) - 1)
        return false;

    if (!pb_read(stream, buffer, stream->bytes_left))
        return false;

    /* Print the string, in format comparable with protoc --decode.
     * Format comes from the arg defined in main().
     */
    printf((char*)*arg, buffer);
    return true;
}

int main()
{
    /* This is the buffer where we will store our message. */
    uint8_t buffer[128];
    size_t message_length;
    bool status;

    /* Encode our message */
    {
        /* Allocate space on the stack to store the message data.
         *
         * Nanopb generates simple struct definitions for all the messages.
         * - check out the contents of simple.pb.h!
         * It is a good idea to always initialize your structures
         * so that you do not have garbage data from RAM in there.
         */
        Response message = Response_init_zero;
        message.which_response = Response_simpleMessage_tag;

        /* Create a stream that will write to our buffer. */
        pb_ostream_t stream = pb_ostream_from_buffer(buffer, sizeof(buffer));

        /* Fill in the callback */
        message.response.simpleMessage.lucky_number.funcs.encode = &encode_string;

        /* Now we are ready to encode the message! */
        status = pb_encode(&stream, Response_fields, &message);
        message_length = stream.bytes_written;

        /* Then just check for any errors.. */
        if (!status)
        {
            printf("Encoding failed: %s\n", PB_GET_ERROR(&stream));
            return 1;
        }
    }

    /* Now we could transmit the message over network, store it in a file or
     * wrap it to a pigeon's leg.
     */

    /* But because we are lazy, we will just decode it immediately. */

    {
        /* Allocate space for the decoded message. */
        Response message = Response_init_zero;
        message.which_response = Response_simpleMessage_tag;

        /* Create a stream that reads from the buffer. */
        pb_istream_t stream = pb_istream_from_buffer(buffer, message_length);

        /* Fill in the callback and arg */
        message.response.simpleMessage.lucky_number.funcs.decode = &decode_string;
        message.response.simpleMessage.lucky_number.arg = "stringvalue: \"%s\"\n";

        /* Now we are ready to decode the message. */
        status = pb_decode(&stream, Response_fields, &message);

        /* Check for errors... */
        if (!status)
        {
            printf("Decoding failed: %s\n", PB_GET_ERROR(&stream));
            return 1;
        }
    }

    return 0;
}

This is more of a documentation bug, but comes up very often lately. I do not see a good way to implement callbacks inside oneofs, but you can see e.g. here for workarounds:
https://groups.google.com/forum/#!topic/nanopb/WLO6AYO6QI0
In issue #148 it was considered whether the generator should error-out in this situation, but it seems more sensible that non-callback fields can still be used even if the message contains callbacks.

OK, for now I was able to get it working using the technique described in examples/using_union_messages. Code's just a little clunkier this way.

I can think of an implementation that could work using a lookup table, and would have a cost of one pointer per PB_FIELD but would remove pb_callback_t's from the decoded structs. It would also have the caveat that the decoded object couldn't move in memory, otherwise it would require re-assigning of all it's callbacks.
The jist would be use the address of the decoded message container of the callback_t to lookup a encode/arg and decode/arg. the basic struct would have those 5 pointers (address of containing message plus the normal callback_t fields). You could generate some macros to create a lookup table of size whatever and add/remove handles to/from it.
Seems like a lot of buts/caveats though, and I'm relatively confident I'm missing something big/obvious. Tricky problem.

While we are comparing approaches, I'll mention one that I've been thinking about:

When generator detects callbacks inside oneof, it will generate a "setup_oneof" callback field on the top level.

This setup_oneof will be called when the type of the oneof has been resolved. It will get as arguments the field descriptor, data pointer and a free arg field.

The setup_oneof function will set all callback fields in the message to be decoded, like:
bool setup_oneof(const pb_field_t *field, void *data, void *arg)
{
if (field->tag == MyMessage_oneof1_tag)
{
MySubMessage *submsg = data;
submsg->callback1.func = &whatever;
....
}
}

The second approach I've sometimes thought about is defining callbacks at generator time, e.g.
repeated int32 myfield = 1 [(nanopb).callback = myfieldcallback];

But that still leaves the issue of passing context to the callback, so does not really solve this issue.

I like your first approach. Do you have a function for fully checking if a submessage/message contains a callback at any depth? I'm guessing that information is owned by the fields based on their types + options.
What if there are options defined that cause a message with a oneof to sometimes have callbacks? E.G. the oneof is in message bar, so bar.my_oneof, and my_oneof has a string, and something like this happens in your .options:
foo1.bar.my_oneof.my_string max_size:16
And then there is a foo2 that contains bar but doesn't specify the string max size. I guess its a harmless field when there are no callbacks anywhere within the oneof. Now that I think about it this could happen already in nanopb without oneofs so there must be rules for the situation where a submessage is used in more than one location and has different option in both. Does the whole message become a pb_callback_t if has non-deterministic size fields?
You say in step 3 it could set the callbacks before decode, but for simplicity and uniform usage should it also set the encode callbacks/args before encode? There could be something messy/inflexible about it in the encode case.

Callbacks in encoding oneofs should work currently already,
so I think this is needed for decoder only. Not sure if there
might be some use for it in encoder or not.
The generator does not currently have such recursive check,
but it does have information about all the messages so it could
be implemented. In some multiple-file cases there can be problems,
but when #116 is finally resolved even those go away.

foo1.bar.my_oneof.my_string max_size:16

I don't think this is allowed by the syntax. It is always
PackageName.MessageName.fieldname, where PackageName and MessageName
may have multiple parts but only as far as they are nested message
definitions.

Yea, that makes more sense. I was combining types/field_instances in my thinking for a second.

@PetteriAimonen I am experimenting with your excellent nanopb using a oneof with callbacks. It seems that my code is encoding correctly, setting the right single callback and arg via the union, however decoding is not working completely. A callback is never called, because I do not know how to set it, after the type is decoded. I can not find the mentioned  setup_oneof func, has it been implemented? Or is another way available?

@Jeroen88 This issue is still open, there is no setup_oneof() so far.
The easiest option currently is to set (nanopb).no_unions = true which will generate a separate field for each oneof entry and supports callbacks.

Looking at the example it appears to me that
ListFilesResponse_callback

Is a fixed function name given through the fileproto.options:
ListFilesResponse.file  type:FT_CALLBACK, callback_datatype:"void*"

Please consider following: we received a full message (encoded), which contains a repeated fields:
message Message {
  message KeyValue {
    int32 key = 1;
    int32 value = 2;
  }
  message Request {
    repeated KeyValue params = 10 [(nanopb).type=FT_CALLBACK,(nanopb).callback_datatyp="void*"]
  }
  oneof payload {
    Request         write = 100;
    Response      writeRsp = 200;
  }
}

We now want to validate the kv-pairs. therefore I would like to decode the message and use a callback that just validates each kv-entry.
When validating succeeds, I want to decode again, this time with a callback that performs the actual write actions.
I would then need to put the desired action (validating/writing) into the stream state, I guess?

Hmm yeah, easiest would be global variable, but that is of course often not desirable. Without oneofs, you could use callback_datatype="struct {bool validate_only; void* data; }", but that is again a problem here. Stream state works if you are already using a custom stream.
Perhaps one way would be if there was a way to add extra non-protobuf fields to the generated struct. For now it could be simulated by adding bool validate_only = 9999; to the Message. Then that can be accessed as ((Message*)((char*)field->message - offsetof(Message, payload.write)))->validate_only. The pointer arithmetic could be made simpler by adding a container_of(field->message, Message, payload.write) macro like in Linux kernel.
Perhaps the original setup_oneof() callback might be useful also, though even then one would have to pass the information through many steps.

I just stick back to
message Message {
  option (nanopb_msgopt).no_unions = true;
....

Like this callbacks work for my use case (validate, read/write, generate reply, ride pony).
 It's getting pretty narrow in there...

Ok.
I'm not sure I understand what you mean by things getting narrow, but if there is anything specific on the nanopb side that is important to your usecase, I'm interested to hear.

I just have a small stack size (narrow).
I'm not familiar with nanopb internals, and on the first sight the suggestions by you don't appeal to me (I wouldn't be surprised if on a second look your suggestions would be a minblowing, positive experience).
Our usecase is a bit specific:

we receive a websocket message containing a protobuffer encoded payload
the payload (raw data) is stored on heap or on a filesystem, depending on the payload size announced in the websocket frame

The payload is the analyzed

The raw data is decoded with no callbacks to find out what's inside the oneof field 'payload'
The corresponding handler, eg. writeReq is called, with the received, raw data
writeReq decodes the raw data multiple time:
3.1) the repeated KeyValue is decoded with a validator callback
3.2) the validation status is stored in the stream state
3.3) when validation succeeds, the repeated KeyValue is decoded with a writer callback
3.3) I've yet to find out how to build response holding a repeated KeyValue with all written parameters as confirmation

I tried to test the option from git master ((nanopb).type=FT_CALLBACK), however the library changes of *.c and *.h files were a bit too dramatic for me, and also my usecase requires a bit of special handling, where the fixed, single callback adds more complexity.
Maybe I'm doing something wrong, and there would be a more elegant approach.

Wanted to check if there is any progress or plans for this issue or is using_union_messages still the best pattern to use?
@PetteriAimonen I like the setup_oneof callback idea. I was thinking it might be easier to just pass a substream to the callback and let the user handle the entire oneof message.
bool decode_my_union(pb_istream_s* stream, const pb_field_t* field, void* parent_struct, void** arg) {
  // User can check parent_struct.which_payload and continue to decode
}

I ended up adding an option for message-level callback (like the setup_oneof idea) also.
There is a test case / example that demonstrates the use of both: https://github.com/nanopb/nanopb/tree/master/tests/oneof_callback


Include language highlighting for other renderers than pandoc

In info string the code snippet does not get highlighted on GitHub or VS code because they don't understand {.python #bla}, can we change entangled and filter to also accept a infostring that works also for GitHub and VScode

This is not so easy to do. Do you have a suggestion for a syntax that works for both Github and Entangled?

GitHub and VS Code both use string before first space in info string as the language of the code block. See https://github.com/microsoft/vscode/blob/master/src/vs/base/common/marked/marked.js#L933
So for GitHub and VS Code would be fine with

python #bla / cpp file=src/cgi-newtonraphson.cpp
python {#bla} / cpp {file=src/cgi-newtonraphson.cpp}
python {.python #bla} / cpp {.cpp file=src/cgi-newtonraphson.cpp}

I like option 1 best, but not sure if you can make entangled handle them.

For my guide I used docsify to render the Markdown. Docsify normally uses the whole infostring as language, but it can be extended to parse the infostring see https://github.com/NLESC-JCER/cpp2wasm/blob/master/index.html#L29

Ok, I tried to work with MkDocs, which is based on Python-markdown and found a syntax that would work for that:
```cpp file="hello.cpp"

and
```cpp id="print-hello"

I can add a config option to have entangled parse with custom regexes. That would fix this problem once and for all.


feat: introduce DOC503 for checking specific raised exceptions

Closes #158
Compare any raise statements in function bodies to docstring Raises sections and ensures they match. Exceptions specified in a docstring are kept as a sorted list, so duplicate lines will throw DOC503 as well.
Had to introduce a new walker, walk.walk_dfs, but I did add tests for it.
This feature does NOT do any resolution of errors, so something like the following:
try:
    1 / 0
except:
    raise

will not identify any specific exceptions thrown. Similarly, except Exception: raise will expect Exception to be included in the docstring. I think both of those cases are already caught as style violations by certain ruff rules (probably under BLE or TRY?), so it might not be much of a problem.

While this checks names of exceptions it doesn't check order(?) like your issue title mentions, but i'm not entirely sure what was meant by that.
Completely open to feedback / changes, let me know if there's anything that could be cleaned up. In particular, there's one bit I don't love: in visitor.py, i had to do this to parse a common convention when using rest-style docstrings:
elif doc.style == 'sphinx' and raises.description:
    # :raises: Exception: -> 'Exception'
    splitDesc = raises.description.split(':')
    if len(splitDesc) > 1 and ' ' not in splitDesc[0].strip():
        exc = splitDesc[0].strip()
        docRaises.append(exc)

This bit parses docstring lines like :raises: Exception:, which seem to be somewhat common in sphinx docstrings but I don't think are technically allowed by the spec[1][2]? docstring_parser doesn't currently parse those words into type_name. Not sure if this bit of code should be moved into docstring_parser_fork, moved into its own function (I wasn't really sure where else to put it), or if you'd prefer to just not support this line format.

[1] https://sphinx-rtd-tutorial.readthedocs.io/en/latest/docstrings.html
[2] https://thomas-cokelaer.info/tutorials/sphinx/docstring_python.html

*couple leftover comments, fixed + squashed.

Interestingly, if you have tox installed with python3.8-.11 vs python3.12, flake8-misc will give slightly different results complaining about ISC001 (implicitly concatenated string on older versions, but not 3.12). fixed (and squashed, again).

ah darn, did the visitor walking a bit naively and am not quite getting the right value (OSError) from a testcase like below. will update.
    try:
        pass
    except OSError as e:
        if e.args[0] == 2 and e.filename:
            fp = None
        else:
            raise

Thank you for helping implement this feature!  I'm taking a look at it, and it should take me a day or two.

Hi @Amar1729 , sorry for taking so long to get to this.  I've been busy with other things last month.  Everything looks good now, so I'll merge and publish.

@jsh9 no worries, I get it. thanks for coming back around to it!


Issues with a dot in the uid "."

Hi, thank you very much for the plugin. It works very well for me, runnung again an Open-Ldap-Server. I have only two issues:
One issue is that is does not work with users with an dot  in the uid. Filter is uid=%s
uids without a dot work well.
If I take the filter mail=%s, I can login with the mailaddress.

Using %1$s instead of %s fixed it.


Yaml files split + DB health checks

Yaml files are now split into several folders: common, development, and production, with files in the common folder loading always and the other folder loading in specific environments
Added DBs (SQL DB and MongoDB) health checks, so other containers dependent on it wait until the DBs are set up
Extended the shape importer to support local files
Split one house footprints into several chunks for easier digestion into the DB in development environments (added simple python script for that in the scripts folder of data pipeline)
Improved logging of the data pipeline
Fixed volumes (and MongoDB) not working properly in the ubuntu environments. The data will not have to be downloaded every time anymore :) )

I only see one issue with the removal of the Environment variable as Metadata server

Reverted my changes, and fixed the behavior in the docker compose file

The branch was renamed.


Register Http Object Store

To register remote files like http, we need to add the HTTP object store, basically with the following steps:
Add the feature in the Cargo.toml
object_store = { version = "0.9.0", features = ["aws", "gcp", "http"] }

Then add the store.rs from arrow-datafusion-python
https://github.com/apache/datafusion-python/blob/main/src/store.rs
Then finally register a Http store

@mesejo I think that only datafusion-cli has the ability to use external http/https tables
https://datafusion.apache.org/user-guide/cli/datasources.html#http-s


plugins are not killed correctly on windows

Been doing some testing here. I used KMR and sTracker specifically, and ran plugins with a build using the new plugin launch logic (c424d8f62e6b7978ae9a91891889713931299706)

if you only use KMR, the plugin will be stopped correctly with no issues.

if you only use sTracker, it gets messy. Apparently, all of this happens because sTracker for Windows actually runs 2 instances of stracker.exe.  If you restart the server, the Manager will launch a new instance of stracker that will completely fail to run.

There is also another thing I don't understand, you can see here in the logs the Manager tries to kill the PID 13568, but there was never an sTracker instance that got assigned PID # 13568...
time="2019-05-30T17:27:18+02:00" level=error msg="Initial attempt at killing windows process (process.Kill) failed" error="TerminateProcess: Accesso negato."
time="2019-05-30T17:27:18+02:00" level=error msg="Initial attempt at killing windows process (process.Kill) failed" error="TerminateProcess: Accesso negato."
 Here is the log

time="2019-05-30T17:20:27+02:00" level=error msg="Initial attempt at killing windows process (process.Kill) failed" error="TerminateProcess: Accesso negato."
time="2019-05-30T17:20:27+02:00" level=error msg="Initial attempt at killing windows process (process.Kill) failed" error="TerminateProcess: Accesso negato."


Updated capitalization in Endpoint docs.

According to the changelog, there were slight changes made to the capitalization of newHttpHeaderFields. I've updated the docs to reflect the change.
Solves #961

Codecov Report

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

@@           Coverage Diff           @@
##           master     #962   +/-   ##
=======================================
  Coverage   73.72%   73.72%
=======================================
  Files          22       22
  Lines         723      723
=======================================
  Hits          533      533
  Misses        190      190

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 e0924cd...bd5f218. Read the comment docs.

Thanks a lot for contributing to Moya! I've invited you to join the Moya GitHub organization – no pressure to accept! If you'd like more information on what that means, check out our contributor guidelines and feel free to reach out with any questions.


Refactor Hierarchy does not obey stubs with content

Please select the area your Bug applys to. (Multiple selections are Possible)

[ ] Onboard. Initial vault setup and import/export pods
[ ] Create. Note creation, lookup, snippets and templates
[ ] Retrieve. Backlinks, references, graph view
[x] Structure. Refactoring, multi-vault and schemas
[ ] Publish. Sharing your repo with the world
[ ] Misc (Choose this if your not sure)

Describe the bug
I have some notes that are marked stub, but now have content in them (I'm unsure how this situation organically arose, but it's a common occurrence for me). When I want to refactor the hierarchy, every note in the hierarchy correctly has its name changed, but the notes marked as stub: true remain as they were before.
To Reproduce
Steps to reproduce the behavior:

create a hierarchy
despite having some content, mark one of the notes as stub: true
attempt to refactor hierarchy, and notice if the stub note remains unchanged

Expected behavior
All patterns matching the hierarchy should be changed, regardless of stub status.
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information)

OS: [e.g. iOS] MacOs
Browser [e.g. chrome, safari] Chrome
Version [e.g. 22] 0.64.0

This PR doesn't directly address this issue, but when I tested it seems to have resolved what you are experiencing here.
@Tycholiz can you give it a try and let us know if it works?
In the very near future I am planning to introduce some convenience features to detect notes that are created and exists in the file system but still has the stub frontmatter property set to true (there is no practical reason for a note that exists in the file system to be a stub note; especially if the note has a body.)
This will allow us to introduce a doctor command that bulk removes all stub properties in the workspace, or suggest code actions to users when those notes are open.


Export query was not executed successfully

Describe the bug
I am trying to reproduce the catalogue export for OMOP CDM v6, by removing analysis ids that use fields and tables not existent in the CDM v6.
The error it gives is  Export query was not executed successfully with no further explanation
To Reproduce
Steps to reproduce the behavior:

See code:

run_catalogue_export <- function(dbms,
                            connectionString,
                            jdbcDriverFolder,
                            user,
                            password,
                            outputFolder,
                            cdmDatabaseSchema,
                            databaseInfoConfigFilePath
){
    # Read the yaml file
    data <- yaml::read_yaml(databaseInfoConfigFilePath)

    # Access the values in the file
    databaseName <- data$databaseName

    parsed_uri <- urltools::url_parse(connectionString)
    server <- paste0(parsed_uri$domain, "/", parsed_uri$path)
    port <- as.integer(parsed_uri$port)

    connectionDetails <- DatabaseConnector::createConnectionDetails(dbms = dbms,
                                                user = user,
                                                password = password,
                                                server = server,
                                                port = port,
                                                pathToDriver = jdbcDriverFolder)

    df <- CatalogueExport::getAnalysisDetails()
    analysis_ids <- df$ANALYSIS_ID
    filtered_ids <- analysis_ids[!(analysis_ids %in% c(920, 1020))]

    CatalogueExport::catalogueExport(connectionDetails,
                    cdmDatabaseSchema = cdmDatabaseSchema,
                    resultsDatabaseSchema = cdmDatabaseSchema,
                    vocabDatabaseSchema = cdmDatabaseSchema,
                    numThreads = 1,
                    sourceName = databaseName,
                    outputFolder = file.path(getwd(), outputFolder),
                    cdmVersion = data$cdmVersion,
                    analysisIds=filtered_ids)
}

See error
log.txt

Expected behavior
Should be exporting the file cataloge_results.csv

CatalogueExport does not support OMOP CDM v6


bug: comple_vnext fails because resource group doesn't exist

Is there an existing issue for this?

[X] I have searched the existing issues

Bootstrap or Starter Module Deployment? (Required)
starter_module
ALZ-PowerShell-Module Version (Required)
1.1.6
alz-terraform-accelerator Version (Required)
1.1.2
Starter Module (Required)
complete_vnext
Input arguments of the ALZ-PowerShell-Module (Required)
{
  "allow_storage_access_from_my_ip": "true",
  "apply_approvers"<EMAIL_ADDRESS>  "azure_devops_authentication_scheme": "WorkloadIdentityFederation",
  "azure_devops_create_project": "true",
  "azure_devops_organization_name": "Bliss-Infrastructure",
  "azure_devops_personal_access_token": "***",
  "azure_devops_project_name": "BlissLzAccelerator",
  "azure_devops_use_organisation_legacy_url": "false",
  "bootstrap_location": "uksouth",
  "bootstrap_subscription_id": "**f8738ede218f",
  "environment_name": "prd",
  "postfix_number": 1,
  "root_parent_management_group_display_name": "Tenant Root Group",
  "service_name": "blisslz",
  "starter_module": "complete_vnext",
  "use_private_networking": "true",
  "use_self_hosted_agents": "true",
  "use_separate_repository_for_pipeline_templates": "true"
}

{
  "configuration_file_path": "",
  "default_location": "uksouth",
  "default_postfix": "blisslz",
  "root_parent_management_group_id": "",
  "subscription_id_connectivity": "**f8738ede218f",
  "subscription_id_identity": "**f8738ede218f",
  "subscription_id_management": "**f8738ede218f"
}

Contents of the configuration file used for the complete starter module. (Optional)
No response
Debug Output/Panic Output (Optional)
module.management_groups_layer_1["root"].alz_policy_role_assignments.this: Creating...
╷
│ Error: Client Error
│
│   with module.management_groups_layer_1["root"].alz_policy_role_assignments.this,
│   on .terraform/modules/management_groups_layer_1/main.tf line 196, in resource "alz_policy_role_assignments" "this":
│  196: resource "alz_policy_role_assignments" "this" {
│
│ Unable to create role assignment, got error: PUT
│ https://management.azure.com/subscriptions/ac44928a-0ab8-4fa3-8131-f8738ede218f/resourceGroups/rg-management-blisslz/providers/Microsoft.OperationalInsights/workspaces/law-blisslz/providers/Microsoft.Authorization/roleAssignments/238c9154-867e-5ef1-9e95-41b841e6ada9
│ --------------------------------------------------------------------------------
│ RESPONSE 404: 404 Not Found
│ ERROR CODE: ResourceGroupNotFound
│ --------------------------------------------------------------------------------
│ {
│   "error": {
│     "code": "ResourceGroupNotFound",
│     "message": "Resource group 'rg-management-blisslz' could not be found."
│   }
│ }
│ --------------------------------------------------------------------------------
│
╵
##[error]Script failed with exit code: 1

Expected Behaviour (Required)
Resource Group should be created before it's trying to be referenced

Suspect this is because the modules are taken in by name looking at the plan rather than referencing the resource group module

Actual Behaviour (Required)
Errors on a different module as the resource group hasn't been created yet
Steps to Reproduce (Optional)
Run the accelerator CI/CD  step 2 for actual provisioning to Azure after the bootstrap has been performed.
Important Factoids (Optional)
No response
References (Optional)
No response

Thanks for trying out the complete_vnext starter module, looks like a dependency mismatch here. We may need to deploy the management module before the archetypes.


ctrl + mouse wheel not working as expected

Expected behavior

mouse wheel: go up and down the timeline
ctrl + mouse wheel: zoom in and out

Observed behavior
Hitting ctrl changes the behavior, so that mouse wheel after a ctrl keypress zooms in and out, whether or not the ctrl is pressed. Hitting another key (even ctrl itself sometimes) goes back to ctrl-less behavior (up and down)

I can't zoom with Ctrl + mouse wheel at all now, it only scrolls up and down?

I can't zoom with Ctrl + mouse wheel at all now, it only scrolls up and down?

This https://github.com/theia-ide/theia-trace-extension/pull/134 fixes that. The changes are not completely merged. Hence we see this issue. Once the trace extension gets merged, that should be fixed.

This seems to be fixed now?


Mast: Watch techprofgyan.com

Mast requests the watch of the watch_keyword techprofgyan\.com. See the MS search here and the Stack Exchange search in text, in URLs, and in code.

techprofgyan\.com has been seen in 3 true positives, 0 false positives, and 0 NAAs.

Approved by Daniil in Charcoal HQ


How to use allow_threads with existing stream to avoid dead lock?

Recently, I encountered a same issue mentioned here related to dead lock https://github.com/PyO3/pyo3/pull/3540#issuecomment-1789623562
Here I use the par_stream crate to provide a parallel async stream implementation and wrap that with pyo3-async. The par_map returns a flume RecvStream which internally has a lock for the queue.
#[pymodule]
fn snake(_py: Python<'_>, m: &PyModule) -> PyResult<()> {
    m.add_function(wrap_pyfunction!(parallel_stream, m)?)?;
    Ok(())
}

fn tokio() -> &'static tokio::runtime::Runtime {
    use std::sync::OnceLock;
    static RT: OnceLock<tokio::runtime::Runtime> = OnceLock::new();
    RT.get_or_init(|| tokio::runtime::Runtime::new().unwrap())
}

fn fib(n: u64) -> u64 {
    match n {
        0 => 0,
        1 => 1,
        _ => fib(n - 1) + fib(n - 2),
    }
}

fn map() -> impl Stream<Item = PyResult<u64>> + Send {
    let _guard = tokio().enter();
    futures::stream::iter(0..100).par_map(None, |i| move || Ok(fib(i)))
}

#[pyfunction]
fn parallel_stream() -> pyo3_async::asyncio::AsyncGenerator {
    pyo3_async::asyncio::AsyncGenerator::from_stream(map())
}

Now it has a dead lock and hangs in Python.
import snake
import asyncio

async def fn():
    async for i in snake.parallel_stream():
        print(i)

asyncio.run(fn())

I have no idea where to add allow_thread here, just adding to parallel_stream seems not work.
BTW, if I change to use a tokio mpsc channel like this:
fn map() -> impl Stream<Item = PyResult<u64>> + Send {
    let (tx, mut rx) = tokio::sync::mpsc::channel(100);
    tokio().spawn(async move {
        futures::stream::iter(0..1000)
            .par_map(
                ParParams {
                    num_workers: 32,
                    buf_size: Some(10),
                },
                |_| move || Ok(fib(45)),
            )
            .for_each(|item| {
                let tx = tx.clone();
                async move {
                    let _ = tx.send(item).await;
                }
            })
            .await;
    });

    stream! {
        while let Some(item) = rx.recv().await {
            yield item;
        }
    }

It works well and no dead lock occurs. I'm not quite sure the essential difference.

Have you tried pyo3_async::asyncio::AsyncGenerator::from_stream(AllowThreads(map()))?
I've just released the version 0.3.2, because AllowThreads was bugged. Anyway, as you know, the crate is deprecated, so I invite you to use the PyO3 branches I mentioned in #2. I know there is no Stream support planned for now in PyO3, but I should add it soon in a new PR.

It works well and no dead lock occurs. I'm not quite sure the essential difference.

As written in the stack traces you shown, flume uses a mutex, while tokio::sync::mpsc don't.
Your deadlock seems to be the following:

Thread T1 acquires mutex M1 (asyncio thread run with the GIL)
Thread T2 acquires mutex M2 (background fib task is done and send its result)
Thread T2 tries to acquire mutex M1 and wait (background task try to wakeup the asyncio thread)
Thread T1 tries to acquire mutex M2 and wait (maybe asyncio thread try to pop a previous task result from the queue).
deadlock

I've looked at flume implementation, and indeed, the channel lock is held for the wakeup (I don't understand why honestly).
By using a intermediate tokio task with a mpsc, the flume channel doesn't wakeup the async generator __next__ coroutine but the tokio task, so it doesn't need to acquire the GIL.
Your use case is interesting though, because you're the second one I will  to make a feedback on the async support in PyO3, and both of us encountered a deadlock. So it may indicate that the issue may be more common as I expected and should require a dedicated documentation. I will talk with PyO3 maintainers about that.

Thanks for your detailed reply. I will have a try with PyO3 master.


Can we use a builtin tag to recurse self-reference component ?

What problem does this feature solve?
Now vue using filename to assert if need to recursive components themselves.
selfname is inferred from filename
https://github.com/vuejs/vue-next/blob/64d4681e4b9d88e17cd1515014866d43d0424d14/packages/compiler-core/src/transforms/transformElement.ts#L266-L273
This way may has these pitfalls:

Will cause some misunderstanding because it prevent user-need-component resolving like #2821
Will break recurse when changing the filename without reading code.

If we use a builtin tag:

The first pitfall will not appear because user cant register a component named a builtin tag
Changing filename will no longer affect recurse because the recursively self-reference component mechanism is self-consistent.

What does the proposed API look like?
Use a builtin tag instead of filename assertion, tag name maybe:

self
_self
more...

@yyx990803 @posva @edison1105

I would say in practice, naming a component the same in different folders is a bad practice (https://v3.vuejs.org/style-guide/#tightly-coupled-component-names-strongly-recommended and all the naming recommendations).
In Vue 2, we used to need a name on the recursive component. Not needing it anymore looks like an improvement but brings the mentioned problems.
What I find problematic is that giving the outer component a name different that its filename does not prevent it to refer to itself on the template:
<template>

OUTER COMPONENT

  <Foo />
</template>

<Foo/> will render this component infinitely

At the very least a console warning would be nice. This would be a very difficult bug to fix in a larger app.

ping @HcySunYang @posva @yyx990803

While it might be a bad practice to name multiple components with the same name, it can indeed be difficult to fix such issues with big codebases (took us some time to find this issue).
And there may be valid use-cases to name components with the same name. E.g. having a views directory and a models directory without having to postfix each component filename with "...View" or  "...Model" The directories should be enough to act as a namespace for the components.

Even with moderately sized code-base this suddenly popped up in a few places for us after trying vue/next. Webpack hot-reload took the initial blame, as it seemed the file itself was not being properly loaded (parent component being loaded in place of the child component with the same file-name).
For us, the use case was the self-contained components displayed as separate pages. For example, there is Privacy Policy dialog box under "components", and then there is Privacy Policy page, under "pages". Both file names make sense as just PrivacyPolicy.vue, yet including a "component" on the "page" causes unexpected recursion. The same applies to other simple "footer" pages like T&C, About, Contact.

@luwuer Can you draft an RFC?  If you don't have time, I can do this instead

Since the inferred filename is actually causing breakage, I adjusted its priority in abd129d8 and it is now used as a fallback only when normal resolution fails.
The issue with adding another built-in tag is that it could technically be a breaking change. I think with the fix in abd129d8, it is no longer strictly necessary. If we do want something like that, <component self/> maybe a safer option here.


[AB3: Tracing Code] Add VSCode debugging instructions

We can add VSCode instructions with HTML tabs to supplement current existing IntelliJ instructions.

@UdhayaShan1 I don't want to start officially supporting multiple IDEs. However, I'm fine to add to here  an unofficial 'community document' for students to share VS instructions. If you wish, you can send a PR to get it started by providing VS debugger info.

Thanks Prof


the mobile terminal logs out and the service is interrupted

@windmemory

Need More Information
Sorry, you did not follow the ISSUE Template, and there's not enough information about your problem.
In order to help us to find the problem out, you should provide all the detail information about the issue. Please make sure you are following the ISSUE Template, answer all the question, and the more important: provide the steps to reproduce the problem.
I'll close this issue. Please re-submit a new issue to provide the information that needed.


Properly catch connection loss or timeouts

Some requests HTTP requests are not wrapped in a try/except as they should, to catch any timeouts or connection losses. Furthermore, the variable TIMEOUT_SECONDS in aiidalab_optimade.utils should be used throughout.

Fixed in #42


Prevent empty work items due to failed attachment import.

Added try-catch around each attachment import. When the import fails, the containing work item will still be imported correctly. Example reason of failure: DevOps server can limit the maximum attachment file upload size.
Without this change, all remaining code in Agent.ImportRevision() would be skipped. Because the attachments are in the first revision of the work item, the created work item is then left empty. Importing the following revisions would then trigger another work item to be created, which would not contain title, description and all other fields that were defined only in the first revision.
See Issue #638

It's my way of safely adding stuff to code that I don't know: if I used the
Logger.Log() in a wrong way (e.g. causing a null-ref exception or
whatever), I want the program to behave exactly as before. Thus, not
throwing the exception that I caused, but the original exception.
The code has proven to work fine for me, so indeed, if you're confident as
well that Logger.Log() won't throw then you can remove the inner try-catch.
Regards,
Brecht
On Thu, 1 Dec 2022, 12:17 Alexander Hjelm, @.***> wrote:

@.**** requested changes on this pull request.
In src/WorkItemMigrator/WorkItemImport/WitClient/WitClientUtils.cs
https://github.com/solidify/jira-azuredevops-migrator/pull/640#discussion_r1036988790
:

               try

               {

                   Logger.Log(ex, $"Failed to import attachment '{attachment.ToString()}'.");

               }

               catch (Exception)

               {

                   throw ex; // yes, the ex from the nesting catch block

               }

I'm not a huge fan of nested try-catch block. Why is this needed? What
exception can be thrown from this line? Logger.Log(ex, $"Failed to import
attachment '{attachment.ToString()}'.")
@bameije https://github.com/bameije
—
Reply to this email directly, view it on GitHub
https://github.com/solidify/jira-azuredevops-migrator/pull/640#pullrequestreview-1200806239,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AELKOFWRIBHNXHRBWJTL7E3WLCCOJANCNFSM6AAAAAASOPQDGE
.
You are receiving this because you were mentioned.Message ID:
@.***>


ERROR:  While executing gem

ERROR:  While executing gem ... (Errno::EPERM)
Operation not permitted @ chmod_internal - /var/lib/gems/2.3.0/gems/ruby-ll-2.1.2/.yardopts

something wrong with your ruby installation, not dryrun related


Error while installing Inference Examples

I have installed the Kaito add on to AKS. when running the phi-2 example I get an error saying
Error from server (InternalError): error when creating "examples/inference/kaito_workspace_phi-2.yaml": Internal error occurred: failed calling webhook "validation.workspace.kaito.sh": failed to call webhook: Post "https://workspace.workspace.svc:9443/?timeout=10s": service "workspace" not found
Output from the svc command is as follows
~/dev/projects/msft/kaito main ❯ kubectl get svc -A                                                                                13:32:36 NAMESPACE         NAME                               TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)             AGE default           kubernetes                         ClusterIP   <IP_ADDRESS>      <none>        443/TCP             65m kaito-workspace   workspace                          ClusterIP   <IP_ADDRESS>    <none>        8080/TCP,9443/TCP   20m kube-system       ama-metrics-ksm                    ClusterIP   <IP_ADDRESS>   <none>        8080/TCP            58m kube-system       azure-wi-webhook-webhook-service   ClusterIP   <IP_ADDRESS>    <none>        443/TCP             17m kube-system       kube-dns                           ClusterIP   <IP_ADDRESS>     <none>        53/UDP,53/TCP       65m kube-system       metrics-server                     ClusterIP   <IP_ADDRESS>   <none>        443/TCP             65m
Output of kubectl get Pods -A is this
NAMESPACE         NAME                                                   READY   STATUS             RESTARTS        AGE gpu-provisioner   gpu-provisioner-6fb5dfcb6b-l657r                       1/1     Running            3 (18m ago)     18m kaito-workspace   workspace-578f7f9b97-z9nkp                             0/1     CrashLoopBackOff   9 (2m51s ago)   25m kube-system       ama-metrics-575c7c7c87-xzfth                           2/2     Running            0               63m kube-system       ama-metrics-ksm-d9c6f475b-7652s                        1/1     Running            0               63m kube-system       ama-metrics-node-s29zq                                 2/2     Running            0               63m kube-system       azure-ip-masq-agent-4gfw6                              1/1     Running            0               67m kube-system       azure-wi-webhook-controller-manager-6dc49dfffd-5qpwf   1/1     Running            0               22m kube-system       azure-wi-webhook-controller-manager-6dc49dfffd-rqfwj   1/1     Running            0               22m kube-system       cloud-node-manager-5ngrx                               1/1     Running            0               67m kube-system       coredns-7459659b97-92m4b                               1/1     Running            0               70m kube-system       coredns-7459659b97-ssmwn                               1/1     Running            0               66m kube-system       coredns-autoscaler-7c88465478-cwtpl                    1/1     Running            0               70m kube-system       csi-azuredisk-node-j5qt2                               3/3     Running            0               67m kube-system       csi-azurefile-node-hcn8b                               3/3     Running            0               67m kube-system       konnectivity-agent-57f5549bdc-hh8hp                    1/1     Running            0               22m kube-system       konnectivity-agent-57f5549bdc-pbf5z                    1/1     Running            0               22m kube-system       kube-proxy-tqgjq                                       1/1     Running            0               67m kube-system       metrics-server-7fd45bf99d-q5qrj                        2/2     Running            0               66m kube-system       metrics-server-7fd45bf99d-v2v8v                        2/2     Running            0               66m
logs from the workspace pods are as follows
2024-04-05T17:34:45Z	INFO	controller-runtime.metrics	Metrics server is starting to listen	{"addr": ":8080"} I0405 17:34:45.590174       1 main.go:122] "starting webhook reconcilers" 2024/04/05 17:34:45 Registering 1 clients 2024/04/05 17:34:45 Registering 2 informer factories 2024/04/05 17:34:45 Registering 2 informers 2024/04/05 17:34:45 Registering 2 controllers I0405 17:34:47.591241       1 main.go:142] "starting manager" 2024-04-05T17:34:47Z	INFO	Starting server	{"kind": "health probe", "addr": "[::]:8081"} W0405 17:34:47.593569       1 reflector.go:533] pkg/mod/k8s.io/client-go@v0.27.7/tools/cache/reflector.go:231: failed to list *v1.Pod: pods is forbidden: User "system:serviceaccount:kaito-workspace:workspace-sa" cannot list resource "pods" in API group "" at the cluster scope E0405 17:34:47.593619       1 reflector.go:148] pkg/mod/k8s.io/client-go@v0.27.7/tools/cache/reflector.go:231: Failed to watch *v1.Pod: failed to list *v1.Pod: pods is forbidden: User "system:serviceaccount:kaito-workspace:workspace-sa" cannot list resource "pods" in API group "" at the cluster scope W0405 17:34:48.983035       1 reflector.go:533] pkg/mod/k8s.io/client-go@v0.27.7/tools/cache/reflector.go:231: failed to list *v1.Pod: pods is forbidden: User "system:serviceaccount:kaito-workspace:workspace-sa" cannot list resource "pods" in API group "" at the cluster scope E0405 17:34:48.983075       1 reflector.go:148] pkg/mod/k8s.io/client-go@v0.27.7/tools/cache/reflector.go:231: Failed to watch *v1.Pod: failed to list *v1.Pod: pods is forbidden: User "system:serviceaccount:kaito-workspace:workspace-sa" cannot list resource "pods" in API group "" at the cluster scope 2024/04/05 17:34:50 Error reading/parsing logging configuration: timed out waiting for the condition: configmaps "config-logging" is forbidden: User "system:serviceaccount:kaito-workspace:workspace-sa" cannot get resource "configmaps" in API group "" in the namespace "kaito-workspace"

That worked


Where is this live? I want a screenshot? Tell me more about the Data? This looks amazing.

Just another civic data hacker here. Just found your project and it looks great. The issue tracker is especially well-populated!
I'm too lazy to install this myself without seeing what it is that even loads once it's installed. Is this live somewhere? Are there screenshots so I can see what the data looks like once it's loaded? If it's mostly just data, is the data explained somewhere?

Hello!
I don't have a live version of it running anywhere, though someone else might. Mainly that's because we are a long way from perfecting the many filters, transformations and corrections necessary to make the raw data presentable. And we don't want to put anything online that we don't believe is 100% accurate.
However, if you were to spin it up you would see the beginnings of a user interface aimed at serving power users. It is similar to other campaign finance sites, but more emphasis is placed on bulk downloads an more complex slicing and dicing than the standard click and search.
You can see some screenshots in this blog post we put out for the initial release.
I think ultimately we might split this application in half, separating the data transformations and cleanup from the user interface. But for now they live together.
That work, and a whole hell of a lot of documentation, will be the focus of a lead developer we are currently hiring thanks to a grant from the Knight News Challenge.

Well wait. Let me leave this open until you tell me if I actually answered your question!

Yeah, that's more or less what I was looking for, thanks.
Job looks like it'd be a fun one. We got some of that Knight money too though, so we have our own things going on over at freelawproject.
Thanks for the response. We may send you an email to get in touch for some other stuff too.

Great!


ubuntu 22.04 lts

Hi Nikolay,
Thank you for the great template.
I was wondering if you have an idea why changing family from "ubuntu-2004-lts" to "ubuntu-2204-lts" breaks it? With the new version the VM is up, but SSH cannot connect...
Thank you.

I have checked the terraform specification, and it works perfectly fine with the 22.04 version.

Great! Could you share the changes you made to get the result, please? I changed 2004 to 2204 in data statement (for family and resource name as well as in disk_id reference.  The VM seems to be built, but deployment stuck on ssh connection. It tries in circle and finally failed on timeout. Teh VM has 2 cores and 8GB RAM with 50% fraction.
here is the final cycle before failure:
yandex_compute_instance.xrdp-vm (remote-exec): Connecting to remote host via SSH...
yandex_compute_instance.xrdp-vm (remote-exec):   Host: x.x.x.x
yandex_compute_instance.xrdp-vm (remote-exec):   User: yc-user
yandex_compute_instance.xrdp-vm (remote-exec):   Password: false
yandex_compute_instance.xrdp-vm (remote-exec):   Private key: true
yandex_compute_instance.xrdp-vm (remote-exec):   Certificate: false
yandex_compute_instance.xrdp-vm (remote-exec):   SSH Agent: false
yandex_compute_instance.xrdp-vm (remote-exec):   Checking Host Key: false
Error: timeout - last error: SSH authentication failed (yc-user@x.x.x.x.:22): ssh: handshake failed: ssh: unable to authenticate, attempted methods [none publickey], no supported methods remain
Thank you,
Alex

Thank you for the update, Nikolay. I must be doing something wrong - I see the changed file in your repo (server.tf), replace the old one in my terraform folder and tried the deployment. Getting exactly the same issue as before - it times out on SSH connection for some reason. Works  perfectly fine with Ubuntu 2004 as you set it originally. But with the new server.tf with settings for 2204 it goes cycles trying to SSH and finally fails on timeout:
yandex_compute_instance.xrdp-vm (remote-exec): Connecting to remote host via SSH...
yandex_compute_instance.xrdp-vm (remote-exec):   Host: x.x.x.x
yandex_compute_instance.xrdp-vm (remote-exec):   User: yc-user
yandex_compute_instance.xrdp-vm (remote-exec):   Password: false
yandex_compute_instance.xrdp-vm (remote-exec):   Private key: true
yandex_compute_instance.xrdp-vm (remote-exec):   Certificate: false
yandex_compute_instance.xrdp-vm (remote-exec):   SSH Agent: false
yandex_compute_instance.xrdp-vm (remote-exec):   Checking Host Key: false
yandex_compute_instance.xrdp-vm: Still creating... [5m30s elapsed]
yandex_compute_instance.xrdp-vm: Still creating... [5m40s elapsed]
Error: timeout - last error: SSH authentication failed (yc-user@x.x.x.x:22): ssh: handshake failed: ssh: unable to authenticate, attempted methods [none publickey], no supported methods remain


Asyncio Listing and Inventory Report Integration

@martindurant
I've completed the integration of the inventory report service and asyncio listing logic based on our discussions.
The overview of the logic is as follows:
For listing, the user can optionally pass in a inventory_report_info argument as part of the kwargs.
If the argument is not passed in, then the listing logic is exactly the same as previously, thus it is backward compatible with existing implementation.
If the argument is passed in, the high-level is as follows:

Validate whether inventory_report_info has the correct fields included to fetch the inventory report.
Fetch the inventory report configuration.
Parse the inventory report configuration to validate and extract the inventory report location.
Does listing on the inventory report metadata.
Use the metadata to fetch the latest inventory report(s).
Parse the inventory report content and extract objects metadata.
If the user wants to directly use the inventory report for listing, then return the objects metadata.
If the user wants to retrieve the most up-to-date listing, then use the object names from the inventory report to divide up workload for each coroutine fast listing.

The listing performance is ~10x from my own experiments.
Latency for 1 - 6 should be trivial since:

Fetching the inventory report is very fast, a single call.
Performing listing on inventory is very fast, most likely a single call (5000 inventory reports metadata on a single page).
Downloading inventory report is relatively past (inventory reports with 1M objects is ~40MB).

In addition, if the user chooses to use the inventory report content directly for listing results, the speedup can be >100x.
Comments have been added throughout the implementation, and there are comprehensive test cases covering each method in the InventoryReport class.
Would really appreciate it if any of you has any feedback, so that we can have this awesome feature integrated!

Also, is README changes in a separate commit or PR?

Everything passes, so that's a good start :)
I will start looking at this later today - there is quite a lot! Sorry for being slow getting here, got hit by covid.

Everything passes, so that's a good start :)
I will start looking at this later today - there is quite a lot! Sorry for being slow getting here, got hit by covid.

Also, are README changes in a separate commit or PR?

I am thinking of adding a README change, and maybe a blog post on how to use the inventory report, once the PR is officially merged (in order to finalize all the details).

Yes, we certainly need prose "howto" documentation around this, in our own docs source. I would recommend any blog focus on the process of development and speedup for your example case rather that a how-to-use piece. Of course, the two can link to one-another.
I don't mind if the docs lag behind this PR, effectively making the new feature experimental. In fact, calling it an experimental feature isn't a bad idea, since we don't have a good feel of the set of use cases it might be pulled into, and there may be some that behave badly.

Yes, we certainly need prose "howto" documentation around this, in our own docs source. I would recommend any blog focus on the process of development and speedup for your example case rather that a how-to-use piece. Of course, the two can link to one-another.

Sounds good, I will write up a prose (internally) and a blog (shared externally) once all the changes are finalized for this PR. Meanwhile, should I add a couple comments on top of the inventory report logic, indicating this is currently experimental?

Update: I fixed the typos that Bernard has pointed out in the latest commit @Magichan33.

should I add a couple comments on top of the inventory report logic, indicating this is currently experimental?

Yes, I think so

should I add a couple comments on top of the inventory report logic, indicating this is currently experimental?

Yes, I think so

Sounds good, just updated that.

👍


Yakuza 6 wont start

Tried with patches and without and same rezult. It just hangs in task manager with 20mb. Can't try with older versions since you delete them.

You need to give more context. Which version of the game are you using, how did you install RMM, what does your game folder look like after installing it, etc.
There are no functional differences between latest version and RMM versions before 2.0. You can still use the CLI mode by running RMM from the command line with the --cli argument.

Upd20210607. Ryu Mod Manager v2.1 not cli. files in game; mods, RyuModManager.exe, YakuzaParless.asi, YakuzaParless.ini. YakuzaParless.mlo is generated only in cmd but game still no load. Same rezult with no mods. Never got this issue with other Yakuza games.

You still didn't give enough context. Please go to the modding discord for help.
https://discord.gg/yakuzamodding

I beg you! Give me a archive with older versions. I've tried to compile source code in visual studio, but i get errors and warnings since i never used that program. I'm not a programmer, and i don't want to. Thanks!

The old releases were removed for a reason, and they're not coming back. There is no functional differences between 1.7 and 2.0. As I said, go to the modding discord and ask for help there. GitHub issues are for reporting bugs anyway, not for tech support.


separating sov-state into two crates (an API crate and an implementation crate)

That would signficantly speed up CI, since we could stop importing RocksDB everywhere

I think it is already happend with introduction of sov-modules-core


Build depending on external library "linbox" fails with "multiple definition" errors

For a project of mine, I need to work with the linbox library. After not managing to get it to work with cxx, I did a minimal test using the cxx-demo: I added
#include <linbox/matrix/dense-matrix.h>

to the imports of blobstore.h. Subsequently running cargo build fails in the linker stage with a large number of multiple definition errors, such as the following:
[...]/ld: [...]/demo/target/debug/build/demo-d1dc2d9abadacf19/out/libcxxbridge-demo.a(blobstore.o): in function 'LinBox::nroot(double, long, double)':
/usr/include/linbox/util/commentator.inl:57: multiple definition of 'LinBox::nroot(double, long, double)'; [...]/demo/target/debug/build/demo-d1dc2d9abadacf19/out/libcxxbridge-demo.a(main.rs.o):/usr/include/linbox/util/commentator.inl:57: first defined here

The problem seems to be that various definitions are included both in blobstore.o and main.rs.o (at least that's what I gleaned; I am however not very experienced with neither C++ nor Rust).
Maybe this has to do with linbox being organized mostly as header files including .inl files instead of things being separated into separate source files?
I'd be happy about any suggestions about how to fix or circumvent this issue.

This is a linbox bug — commentator.h inappropriately includes commentator.inl, which compiles duplicate non-inline functions into every translation unit that transitively includes commentator.h. This is an ODR violation (undefined behavior).

This is a linbox bug — commentator.h inappropriately includes commentator.inl, which compiles duplicate non-inline functions into every translation unit that transitively includes commentator.h. This is an ODR violation (undefined behavior).

Ok, thanks. That's what I feared. Do you know of any work-around that would allow me to circumvent this?

Ok, thanks. That's what I feared. Do you know of any work-around that would allow me to circumvent this?

I think linbox just explicitly doesn't support your use case. https://github.com/linbox-team/linbox/issues/82 has relevant discussion. They insist on 1 global translation unit which implicitly assumes 1 language. I'll go ahead and close this since you would need to follow up with them.

I think linbox just explicitly doesn't support your use case. https://github.com/linbox-team/linbox/issues/82 has relevant discussion. They insist on 1 global translation unit which implicitly assumes 1 language. I'll go ahead and close this since you would need to follow up with them.

Ah, that's unfortunate. Thanks for the help!

Ah, that's unfortunate. Thanks for the help!


Support for CommandBox env vars

Includes the following changes

Casing of module settings which appears in tab complete of "config set" command
Inject entire module settings struct so moduel setting changes at runtime take immediate effect
printOnLoad controls all debugging output
Fixed broken link in readme
listen to new preCommandParamProcess interception point in CommandBox 4.5 to load env vars before every command into that command's environment context only.
New service method to encapsulte, and make reusable, the logic for loading env vars into the CLI instance.

This module wil fall back to doing nothing (much) new on current versions of CommandBox, but new features will automatically take affect once the user upgrades to CommandBox 4.5.

Yes, let's add the verbose flag in with this PR.

@elpete Ok, done!  My previous notes about backwards compat changes apply.

printOnLoad - will notify you any time an .env file is read.
verbse - will additional print out each var loaded, but only if printOnLoad is also enabled.


Release v0.9.3

prepare release 0.9.3

A preview package of this pull request has been released to NPM with the tag prep-v0.9.3.
You can try it out by running the following command:
$ npm install<EMAIL_ADDRESS>
or by updating your package.json to:
{
  "@bigtest/interactor": "prep-v0.9.3"
}

Once the branch associated with this tag is deleted (usually once the PR is merged or closed), it will no longer be available. However, it currently references<EMAIL_ADDRESS>which will be available to install forever.

  Generated by :no_entry_sign: dangerJS against ed12323ae1145e6762928d808f70746abae3a989


Here's a new site I'd like you to consider blocking

Here's a new site I'd like you to consider blocking:
www.instagram.com
(please include any other relevant details)

Just applied a change that should hopefully fix it.


Search function behavior

We just upgraded to ReDoc 1.11.0 and found a couple of new fancy features, such as search, and multiple instances on one page. Thanks a lot.
We tried out the Search function and found out some issues about it:

If a search term partially matches the initial several letters of a tag heading, the text after the highlighted match begins with a capital letter. For example, if you search "sto", the Store heading is highlighted and changes to StoRe.

Some search results are not highlighted. If you search "status", the search result in "Update an existing pet", "Find pet by ID", and "Find pet by tags", etc are not highlighted.

The returned item doesn't contain the search keyword. If you search "inventories", the search result "Add a new pet to the store" actually doesn't contain this keyword.

Some items that contain the search keyword are not listed.

Could you please help look into it?

@jenniferwang2000 thanks for detailed description.
I will look into it ASAP. Most likely at the end of the next week.

Thank you!

Should be not an issue with<EMAIL_ADDRESS>