[BUG]: jsonb type on postgres implement incorrectly

What version of drizzle-orm are you using?
0.29.0
What version of drizzle-kit are you using?
0.20.1
Describe the Bug

create tbl01 in the postgres db
run this code

import { sql } from "drizzle-orm"
import { jsonb, pgTable, text } from "drizzle-orm/pg-core"
import { drizzle } from "drizzle-orm/postgres-js"
import postgres from "postgres"

const tbl01 = pgTable("tbl01", {
  id: text("id").primaryKey().notNull(),
  jsonb_col: jsonb("jsonb_col").notNull(),
})

// CREATE TABLE IF NOT EXISTS public.tbl01
// (
//     id text NOT NULL,
//     jsonb_col jsonb NOT NULL,
//     CONSTRAINT tbl01_pkey PRIMARY KEY (id)
// )

const dbClient = postgres("postgres://postgres:adm1n@winhost:5432/my-data")
const db = drizzle(dbClient, { schema: { tbl01 } })

console.log("INSERT INTO tbl01")
console.log(
  await db
    .insert(tbl01)
    .values({ id: "id01", jsonb_col: { field01: 100, field02: "string 100" } })
    .returning()
)

console.log("SELECT QUERY FROM tbl01")
console.log(
  await db
    .select({
      id: tbl01.id,
      jsonb_col: tbl01.jsonb_col,
      field01: sql`${tbl01.jsonb_col}->>'field01'`, // incorrect: return null, it should be "100"
      field02: sql`${tbl01.jsonb_col}->>'field02'`, // incorrect: return null, it should be "string 100"
    })
    .from(tbl01)
)

console.log("FIND MANY FROM tbl01")
console.log(
  await db.query.tbl01.findMany({
    columns: {
      id: true,
      jsonb_col: true,
      // how i add field01 and field02 in here ??
    },
  })
)

Expected behavior
jsonb type incorrectly save data as json string, so we cannot query data field using ->> operator in the postgres.
Environment & setup
No response

is this accepted bug, or i implemented incorrectly ?
i already try to create customType  jsonb, but still cannot create jsonb data that i can access with ->> operator in postgres.

Hello @primadi,
Regarding your second question :
console.log(
  await db.query.tbl01.findMany({
    columns: {
      id: true,
      jsonb_col: true,
      // how i add field01 and field02 in here ??
    },
  })
)

You can add an extras key to the findMany object:
console.log(
  await database.query.tbl01.findMany({
    columns: {
      id        : true,
      jsonb_col : true,
      // how i add field01 and field02 in here ??
    },
    extras: {
        field01: sql<number>`${table01.jsonb_col}->>'field01'`.as('field01'), // incorrect: return null, it should be "100"
    }
  })
)

Though I'm having the same issue regarding the jsonb accessing keys...

I attempted this directly in Postgres and I couldn't get I to work without drizzle involved.
Can you provide the SQL commands that you're trying to use? I'm just not super familiar with jsonb, and I'm trying to investigate this.

Hi @Angelelz
select id, jsonb_col, jsonb_col->>'field01' as field01 from tbl01

it incorrectly return null on field01, it should be 100 with above data..
but if we remove double apostrophe (") in front and end of jsonb_col, it will return result correctly.
Thank you.

@thomas-ndlss it works for second question. thanks.

I just ran the following query in both a local PG database and in supabase console and all I get is null. Please correct any mistake I might have:
CREATE TABLE IF NOT EXISTS public.tbl01
(
    id text NOT NULL primary key,
    jsonb_col jsonb NOT NULL
);

insert into "tbl01" ("id", "jsonb_col") values ('id01', '"{\"field01\":100,\"field02\":\"string 100\"}"') returning "id", "jsonb_col";

select id, jsonb_col, jsonb_col->>'field01' as field01, jsonb_path_exists(jsonb_col, '$.field01') from "tbl01";

Hi @Angelelz ,
this is the correct insert :
insert into "tbl01" ("id", "jsonb_col") values ('id02', '{"field01":100,"field02":"string 100"}') returning "id", "jsonb_col";

with the correct insert, it will return the correct result for this query :
select id, jsonb_col, jsonb_col->>'field01' as field01, jsonb_path_exists(jsonb_col, '$.field01') from "tbl01";

field01: 100
jsonb_path_exists: true

So the problem is actually on insert. I thought that if you didn't have valid json, the database wouldn't let you insert it?
I just tested this and you're right. Now can you run this quick test?
Try inserting the json like this:
console.log(
  await db
    .insert(tbl01)
    .values({ id: "id01", jsonb_col: JSON.stringify({ field01: 100, field02: "string 100" }) })
    .returning()
)

console.log(
  await db
    .insert(tbl01)
    .values({ id: "id01", jsonb_col: JSON.stringify({ field01: 100, field02: "string 100" }) })
    .returning()
)

it produces data in jsonb_col:
"\"{\\\"field01\\\":100,\\\"field02\\\":\\\"string 100\\\"}\""

field01: null
jsonb_path_exists: false

i try:
console.log(
  await db
    .insert(tbl01)
    .values({
      id: "id02",
      jsonb_col: sql`'${JSON.stringify({
        field01: 100,
        field02: "string 100",
      })}'`,
    })
    .returning()
)

but it produce error:
PostgresError: invalid input syntax for type json
 code: "22P02"

I had a similar issue. To get around the issue I created a customJsonb type where JSON.stringify is skipped:
const customJsonb = <TData>(name: string) =>
	customType<{ data: TData; driverData: string }>({
		dataType() {
			return 'jsonb';
		},
		toDriver(value: TData) {
			return value;
		}
	})(name);

Drizzle throws a typescript error in the editor but it works and all the JSON functions work, ->> as well.
I did some more checking in the logs of my server and see that Drizzle submits the following parameter with the jsonb type provided by Drizzle: $10 = '"{\"foo\":\"bar\"}"'. With the customJsonb above, this is: $10 = '{"foo": "bar"}'. I hope the Drizzle team can address this bug

@cbasje  your solution is worked, thanks. I hope Drizzle team can fixed this.

There might be an error in your code @primadi I've changed the ->> to -> to get the real values. 💡  and this is my result:
[
  {
    id: 8,
    jsonb_col: { field01: 100, field02: 'string 100' },
    field01: 100,
    field02: 'string 100'
  }
]

with
drizzle-kit: v0.20.4
drizzle-orm: v0.29.0
Here's my full code:
await db.insert(tbl01).values({
		name: 'Some insert',
		metaData: { field01: 100, field02: 'string 100' },
	});

const c = await db
	.select({
		id: tbl01.id,
		jsonb_col: tbl01.metaData,
		field01: sql`${tbl01.metaData}->'field01'`, // 100
		field02: sql`${tbl01.metaData}->'field02'`, // "string 100"
	})
	.from(tbl01)
	.where(eq(tbl01.id, 8));

console.log(c);

I've wrote a helper function to deal with nested Jsonb  fields in a type-safe way. Maybe it can be helpful for someone.
type NestedKeyOf<ObjectType> = {
  [Key in keyof ObjectType & (number | string)]: ObjectType[Key] extends Array<infer ArrayType>
    ? `${Key}.${number}` | `${Key}` | (ArrayType extends object ? `${Key}.${number}.${NestedKeyOf<ArrayType>}` : never)
    : ObjectType[Key] extends object
    ? `${Key}.${NestedKeyOf<ObjectType[Key]>}` | `${Key}`
    : `${Key}`;
}[keyof ObjectType & (number | string)];

type AtPath<T, Path extends string> = Path extends `${infer Key}.${infer Rest}`
  ? Key extends keyof T
    ? Rest extends NestedKeyOf<T[Key]>
      ? AtPath<T[Key], Rest>
      : never
    : Key extends `${number}`
    ? T extends Array<infer ArrayType>
      ? ArrayType extends object
        ? AtPath<ArrayType, Rest>
        : never
      : never
    : never
  : Path extends keyof T
  ? T[Path]
  : never;

function jsonbField<T extends PgColumn<ColumnBaseConfig<"json", "PgJsonb">>, P extends NestedKeyOf<T["_"]["data"]>>(column: T, path: P) {
  const pathParts = path.split(".");
  let concatenatedSql = "";

  pathParts.forEach((part, index) => {
    if (index === pathParts.length - 1) {
      concatenatedSql += ` -> '${part}'`;
      return;
    }
    concatenatedSql += `-> '${part}'`;
  });

  return new SQL<AtPath<T["_"]["data"], P>>([column, new StringChunk(concatenatedSql)]);
}

You can use it like this:
  const data = await dominioDb
    .select({
      someNestedField: jsonbField(someTable.jsonbData, "data.some.nested.field"),
    })
    .from(someTable)

All the arguments will be type safe.
(this assumes that you defined the type of the jsonb field in the schema declaration using the $type function.

It was merged and fixed by patching a client you are providing to drizzle.

It's important that you do not use a driver client outside of Drizzle because we apply some mapping patches to it. In the upcoming updates, Drizzle will create its own clients and expose them. Additionally, we will have an updated mapping strategy, so we won't patch the clients you provide to Drizzle

It is available in drizzle-orm@beta and will remain in beta for some time (possibly a few days) before being released as the latest version
Before latest I will prepare a guide on how to fix an existing database and will reuse and mention some of the comments from this issue and a PR I've merged

Should be fixed in<EMAIL_ADDRESS>Please check release notes before updating


On OpenBSD use pledge to drop privileges.

With suggestions by Doug Hogan and the initial work by Michael McConville.
OpenBSD has added a new interface: pledge which allows an application to drop privileges that are not needed. As ag is an application that searches a whole variety of files this should improve security, when unleashing ag on a set of unknown files.

Ooh! Thanks!


recreating the clusters in v4.11 is not showing graphics

Hi nick,
In v4.11 scene view when i tries to recreate the cluster by removing all the graphics and adding them back is not working.The graphics are not adding .unless i zoom in and zoom out then the graphic is coming back to the map.

Hi @pyalam, could you please share more details or even a not working version to inspect it?
Which branch code are you using to do so?

Hi @pyalam, sounds like you just need to call draw() on the layer after you add the graphics back in. Hard to tell without an example or code snippet though.


Add support for all surface types

I'm a bit surprised that this issue didn't exist yet, unless I suck at searching.
The goal is to semantically support all surface types ala CylinderOnAxis so you can do things like cylinder.radius =....
The goal is to support all of Table 5.1 from the 6.3 manual:

Given how similar all of these surfaces are implemented I wonder if we could use meta-programming to have python write these classes.

Implement #354 at the same time as this.


feature: Added About Page UI

Added UI for About Page with description about the Project, Features and Deep-Learning Models.
Closes #51

Hello @shubhrad1,
I checked your PR, but I don't see any "About" button to navigate to the About section. Where have you made the changes? How can I see them on the website?

If you can share Screenshot or video, that would be great.

@shubhrad1,
Can you remove

the above part and add

the above one in the feature section. Remove the above one from deep learning models.
Thanks

Also, please add a navbar icon about in the home page.

@shubhrad1 music visualization won't be a part of deep learning models, it should be a feature


Request Limit

This isn't an issue really, well, hopefully not yet. Is there a request limit to the Robinhood API?

The only way to know is to try.  If you test this and get rejected or blocked please let the rest of us know.

I suspect there is or will be limitations in the API at some point, it is not sustainable or reasonable for us to expect them to keep this wide open.  As more of us use it regularly I would expect to see some limits hit.  We should be reasonable in our queries and not overburden their services if we are using this.  Do you really need second-level granularity?  Make the best choices for your use cases, but in many cases you don't need to sample that much and may even be hurting your algorithms if you are.
Back in the early days of the Internet this was called being a good netizen, respect the resources of the 'net.

I keep getting a 403 error and the code I had in my other issue that I opened was working perfectly fine.  I didn't start getting the 403 until after I was doing some higher testing to retrieve data on the frequency of once per 2 minutes.  Now I'm not sure if Robinhood has blocked me or what; based on what @ciresnave had stated in the other post, I suspect I might have been blocked somehow.  I can still log in on the site and through my phone; but I can't do anything through the code anymore.

@aseylys we’re you able to test for API limits? If so, what were the results? Obviously there is no officially posted limits as Robinhood’s API is unofficial.

@jasonleehodges, I actually was able to test the API, quiet extensively.
My App basically makes 2 calls per ticker symbol. One for the quote and one for the instrument. I then put it on an update of what I figured Robinhood's update time is (~3 seconds). I've run that for 25 tickets for an entire day without any issue.
I figure if you mimic behavior of the RH app well enough they don't mind the calls. But if you're updating every second for multiple tickets you'll probably run into an issue. Nobody should have to update every second anyways, that's just over kill.

Wow, cool - thanks for sharing @aseylys!

I used the robinhood API to call every minute hoping it would run all day. Started at 616am and got stopped at 804am.

How many and what kind of calls were you making every minute?

@jasonleehodges  1 company. Pulling last_trade_price.

I'm going to run it again tomorrow and see what happens.

Were you using any headers or proxies in your request?
RH is pretty tight on headless requests.

Embarrassed to say, but I was most likely not using a header because I don't know what you mean by a headless request.

This is what I put in front of my requests, it's the same one that's being used in this library.
from six.moves.urllib.request import getproxies
headers = {
    "Accept": "*/*",
    "Accept-Encoding": "gzip, deflate",
    "Accept-Language": "en;q=1, fr;q=0.9, de;q=0.8, ja;q=0.7, nl;q=0.6, it;q=0.5",
    "Content-Type": "application/x-www-form-urlencoded; charset=utf-8",
    "X-Robinhood-API-Version": "1.0.0",
    "Connection": "keep-alive",
    "User-Agent": "Robinhood/823 (iPhone; iOS 7.1.2; Scale/2.00)"
}
proxies = getproxies()

resp = requests.get(
    url,
    data = payload,
    headers = headers,
    proxies = proxies
).json()

@aseylys Thank you so much.
I'm going to try to get that working tonight.

Thank you again for you help. I'm gonna try it again today and see how it works.

IT WORKED. You da best.

I ran a test, and it seems it will cut you off after you request order history more than 60 times in a minute. Anything other Robinhood requests you want me to check?

any more info on rate limits? I've been ok pulling book data once a minute for one symbol, am now wanting to do several tickers


Tensorflow GPU r0.7 compilation => gcc:  language cuda not recognized

Hi,
I am facing an issue while compiling tensorflow-r0.7 on centos6 with gcc-4.9.3(Configured with: ./configure --prefix=/home/soft/gcc-4.9.3)+cuda 7.0 + cudnn <IP_ADDRESS>:
____[72 / 801] Compiling tensorflow/core/kernels/cwise_op_gpu_real.cu.cc ERROR: /home/user/TENSOR_GPU/tensorflow/tensorflow/core/BUILD:334:1: C++ compilation of rule '//tensorflow/core:gpu_kernels' failed: gcc failed: error executing command    (cd /home/user/.cache/bazel/_bazel_jca142469/fc6103a815c76da222bbe3b7c887440a/tensorflow && \   exec env - \     PATH=/home/soft/cuda-7.0/bin:/home/apps/BINUTILS/2.25/gnu/bin:/home/soft/intel2015/composer_xe_2015.3.187/mkl/bin:/home/soft/gcc-4.9.3/bin:/home/user/TENSOR_GPU/jdk1.8.0_92/jre/bin:/home/user/TENSOR_GPU/jdk1.8.0_92/bin:/home/apps/PROTOBUF/2.6.1/gnu/include:/home/apps/PROTOBUF/2.6.1/gnu/bin:/home/apps/Caffe/CaffeDependencies/include:/home/soft/cuda-6.5/bin:/usr/lib64/qt-3.3/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/opt/pbs/default/bin:/opt/pbs/default/sbin:/opt/pbs/default/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/ibutils/bin:/home/apps/MATLAB/R2014b/bin:/home/user/bin \   /home/soft/gcc-4.9.3/bin/gcc -U_FORTIFY_SOURCE '-D_FORTIFY_SOURCE=1' -fstack-protector -fPIE -Wall -Wunused-but-set-parameter -Wno-free-nonheap-object -fno-omit-frame-pointer -g0 -O2 -DNDEBUG -ffunction-sections -fdata-sections '-std=c++11' -iquote . -iquote bazel-out/local_linux-opt/genfiles -iquote external/bazel_tools -iquote bazel-out/local_linux-opt/genfiles/external/bazel_tools -iquote external/jpeg_archive -iquote bazel-out/local_linux-opt/genfiles/external/jpeg_archive -iquote external/png_archive -iquote bazel-out/local_linux-opt/genfiles/external/png_archive -iquote external/re2 -iquote bazel-out/local_linux-opt/genfiles/external/re2 -iquote external/eigen_archive -iquote bazel-out/local_linux-opt/genfiles/external/eigen_archive -isystem third_party/gpus/cuda/include -isystem bazel-out/local_linux-opt/genfiles/third_party/gpus/cuda/include -isystem external/bazel_tools/tools/cpp/gcc3 -isystem google/protobuf/src -isystem bazel-out/local_linux-opt/genfiles/google/protobuf/src -isystem external/jpeg_archive/jpeg-9a -isystem bazel-out/local_linux-opt/genfiles/external/jpeg_archive/jpeg-9a -isystem external/png_archive/libpng-1.2.53 -isystem bazel-out/local_linux-opt/genfiles/external/png_archive/libpng-1.2.53 -isystem external/re2 -isystem bazel-out/local_linux-opt/genfiles/external/re2 -isystem third_party/eigen3 -isystem bazel-out/local_linux-opt/genfiles/third_party/eigen3 -isystem external/eigen_archive/eigen-eigen-c5e90d9e764e -isystem bazel-out/local_linux-opt/genfiles/external/eigen_archive/eigen-eigen-c5e90d9e764e -isystem third_party/gpus/cuda -isystem bazel-out/local_linux-opt/genfiles/third_party/gpus/cuda -x cuda '-DGOOGLE_CUDA=1' -no-canonical-prefixes -Wno-builtin-macro-redefined '-D__DATE__="redacted"' '-D__TIMESTAMP__="redacted"' '-D__TIME__="redacted"' -fno-canonical-system-headers '-frandom-seed=bazel-out/local_linux-opt/bin/tensorflow/core/_objs/gpu_kernels/tensorflow/core/kernels/cwise_op_gpu_equal_to.cu.pic.o' -MD -MF bazel-out/local_linux-opt/bin/tensorflow/core/_objs/gpu_kernels/tensorflow/core/kernels/cwise_op_gpu_equal_to.cu.pic.d -fPIC -c tensorflow/core/kernels/cwise_op_gpu_equal_to.cu.cc -o bazel-out/local_linux-opt/bin/tensorflow/core/_objs/gpu_kernels/tensorflow/core/kernels/cwise_op_gpu_equal_to.cu.pic.o): com.google.devtools.build.lib.shell.BadExitStatusException: Process exited with status 1. gcc: error: language cuda not recognized
also in  gcc man page, i can't locate cuda as a possible value of language switch:
-x language
Specify explicitly the language for the following input files (rather than letting the compiler choose a default based on the file name suffix).  This option applies to all following input files until the next -x option.  Possible values for language are:
c  c-header  c-cpp-output  c++  c++-header  c++-cpp-output  objective-c  objective-c-header  objective-c-cpp-output objective-c++ objective-c++-header objective-c++-cpp-output assembler  assembler-with-cpp ada  f77  f77-cpp-input f95  f95-cpp-input  java
Any help/hint will be very useful.
Eagerly awaiting your replies..

within tensorflow/tensorflow.bzl, if i set
cuda_copts = ["-x", "c++", "-DGOOGLE_CUDA=1",
" "] + cuda_copts
my compilation proceeds , but as expected (due to cuda constructs like threadIdx.x) the compilation fails.
usually i have seen:
nvcc -ccbin "gcc" -Xcompiler -fPIC
but the -x cuda syntax appears a bit weird!! what am i missing  here??

The problem is that file should not be sent to gcc. It could be a bazel misconfiguration somewhere.
The correct sequence is as follows. You can follow it and see where things went wrong.

bazel.rc has this line "build:cuda --crosstool_top=@tf//third_party/gpus/crosstool". So under "--config=cuda" third_party/gpus/crosstool should be used instead of the default.
third_party/gpus/crosstool should have this line "tool_path { name: "gcc" path: "clang/bin/crosstool_wrapper_driver_is_not_gcc" }", which instructs the bazel to use that as the compiler instead of gcc. It understands the "-x cuda" option and knows which compiler to use.

Hi,
initial compilation With crosstool_wrapper_driver_is_not_gcc, i was getting errors (mentioned below) like  error: unrecognized command line option "-std=c++11", so i manually replaced the same with gcc. I had modified the third_party/gpus/crosstool/CROSSTOOL as per rdipietro's comment for my gcc 4.9.3 (7 Mar) at : https://github.com/bazelbuild/bazel/issues/760.
The replacement was:
tool_path { name: "gcc" path: "clang/bin/crosstool_wrapper_driver_is_not_gcc" } ===>  tool_path { name: "gcc" path: "/home/soft/gcc-4.9.3/bin/gcc" }.
You may like to have a look at the CROSSTOOL file which i am currently using.  Please suggest modifications if any.
error log:
____Building... ____[1 / 139] Compiling external/re2/util/valgrind.cc ____[1 / 303] Compiling external/re2/util/stringprintf.cc [for host] ____[1 / 324] Compiling external/re2/re2/dfa.cc [for host] ERROR: /home/user/.cache/bazel/_bazel_jca142469/fc6103a815c76da222bbe3b7c887440a/external/re2/BUILD:9:1: C++ compilation of rule '@re2//:re2' failed: crosstool_wrapper_driver_is_not_gcc failed: error executing command   (cd /home/user/.cache/bazel/_bazel_jca142469/fc6103a815c76da222bbe3b7c887440a/tensorflow && \   exec env - \     PATH=/home/soft/cuda-7.0/bin:/home/apps/BINUTILS/2.25/gnu/bin:/home/soft/intel2015/composer_xe_2015.3.187/mkl/bin:/home/soft/gcc-4.9.3/bin:/home/user/TENSOR_GPU/jdk1.8.0_92/jre/bin:/home/user/TENSOR_GPU/jdk1.8.0_92/bin:/home/apps/PROTOBUF/2.6.1/gnu/include:/home/apps/PROTOBUF/2.6.1/gnu/bin:/home/apps/Caffe/CaffeDependencies/include:/home/soft/cuda-6.5/bin:/usr/lib64/qt-3.3/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/opt/pbs/default/bin:/opt/pbs/default/sbin:/opt/pbs/default/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/ibutils/bin:/home/apps/MATLAB/R2014b/bin:/home/user/bin \   third_party/gpus/crosstool/clang/bin/crosstool_wrapper_driver_is_not_gcc -U_FORTIFY_SOURCE '-D_FORTIFY_SOURCE=1' -fstack-protector -fPIE -Wall -Wunused-but-set-parameter -Wno-free-nonheap-object -fno-omit-frame-pointer -g0 -O2 -DNDEBUG -ffunction-sections -fdata-sections '-std=c++11' -iquote external/re2 -iquote bazel-out/local_linux-opt/genfiles/external/re2 -iquote external/bazel_tools -iquote bazel-out/local_linux-opt/genfiles/external/bazel_tools -isystem external/re2 -isystem bazel-out/local_linux-opt/genfiles/external/re2 -isystem external/bazel_tools/tools/cpp/gcc3 -no-canonical-prefixes -Wno-builtin-macro-redefined '-D__DATE__="redacted"' '-D__TIMESTAMP__="redacted"' '-D__TIME__="redacted"' -fno-canonical-system-headers '-frandom-seed=bazel-out/local_linux-opt/bin/external/re2/_objs/re2/external/re2/re2/set.pic.o' -MD -MF bazel-out/local_linux-opt/bin/external/re2/_objs/re2/external/re2/re2/set.pic.d -fPIC -c external/re2/re2/set.cc -o bazel-out/local_linux-opt/bin/external/re2/_objs/re2/external/re2/re2/set.pic.o): com.google.devtools.build.lib.shell.BadExitStatusException: Process exited with status 1. gcc: unrecognized option '-no-canonical-prefixes' cc1plus: error: unrecognized command line option "-std=c++11" cc1plus: error: unrecognized command line option "-fno-canonical-system-headers" cc1plus: warning: unrecognized command line option "-Wno-free-nonheap-object" ____Building complete. Target //tensorflow/tools/pip_package:build_pip_package failed to build ____Elapsed time: 2.826s, Critical Path: 2.08s

Hi,
i got past the** cc1plus: error: unrecognized command line option "-std=c++11"** error by making the compiler settings in : third_party/gpus/crosstool/clang/bin/crosstool_wrapper_driver_is_not_gcc as:
import pipes
print (sys.version)
CURRENT_DIR = os.path.dirname(sys.argv[0])
CPU_COMPILER = ('/home/soft/gcc-4.9.3/bin/gcc')
NVCC_PATH = ('/home/soft/cuda-7.0/bin/nvcc')
GCC_HOST_COMPILER_PATH = ('/home/soft/gcc-4.9.3/bin/gcc')
LLVM_HOST_COMPILER_PATH = ('/home/soft/gcc-4.9.3/bin/gcc')
PREFIX_DIR = os.path.dirname(GCC_HOST_COMPILER_PATH)
but now i am getting errors  : ImportError: No module named argparse, even though argeparse-1.4.0 is available as python module.
[user@gpulogin01 ~/TENSOR_GPU/tensorflow]
$ python
Python 2.7.10 (default, May  5 2016, 17:12:28)
[GCC 4.9.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from argparse import ArgumentParser
>>>
>>>

I guess it is using the /usr/bin/python instead of ~/TENSOR_GPU/jdk1.8.0_92/bin/python
can you suggest the file where i can make python compiler path setting?
$ bazel build --verbose_failures -c opt --config=cuda //tensorflow/tools/pip_package:build_pip_package 2>&1|tee tensorflow_build.log
WARNING: Sandboxed execution is not supported on your system and thus hermeticity of actions cannot be guaranteed. See http://bazel.io/docs/bazel-user-manual.html#sandboxing for more information. You can turn off this warning via --ignore_unsupported_sandboxing.
____Loading...
____Found 1 target...
____Building...
____[1 / 7] Linking google/protobuf/libprotobuf_lite.a [for host]
____[1 / 42] Compiling google/protobuf/src/google/protobuf/compiler/java/java_primitive_field_lite.cc [for host]
____[1 / 481] Linking external/re2/libre2.pic.a
ERROR: /home/user/TENSOR_GPU/tensorflow/google/protobuf/BUILD:520:1: Linking of rule '//google/protobuf:internal/_api_implementation.so' failed: crosstool_wrapper_driver_is_not_gcc failed: error executing command
  (cd /home/user/.cache/bazel/_bazel_user/fc6103a815c76da222bbe3b7c887440a/tensorflow && \
  exec env - \
  third_party/gpus/crosstool/clang/bin/crosstool_wrapper_driver_is_not_gcc -shared -o bazel-out/local_linux-opt/bin/google/protobuf/internal/_api_implementation.so -Wl,-whole-archive bazel-out/local_linux-opt/bin/google/protobuf/_objs/internal/_api_implementation.so/google/protobuf/python/google/protobuf/internal/api_implementation.pic.o -Wl,-no-whole-archive -lstdc++ -B/usr/bin/ -Wl,-R/home/soft/gcc-4.9.3/lib64 -Wl,-z,relro,-z,now -no-canonical-prefixes -pass-exit-codes '-Wl,--build-id=md5' '-Wl,--hash-style=gnu' -Wl,--gc-sections): com.google.devtools.build.lib.shell.BadExitStatusException: Process exited with status 1.
Traceback (most recent call last):
  File "third_party/gpus/crosstool/clang/bin/crosstool_wrapper_driver_is_not_gcc", line 39, in <module>
    from argparse import ArgumentParser
ImportError: No module named argparse
Target //tensorflow/tools/pip_package:build_pip_package failed to build
____Elapsed time: 0.598s, Critical Path: 0.16s

Hi ,
after adding cxx_builtin_include_directory: "/home/soft/cuda-7.0/include/" in crosstool
& adding default interpreter as: /home/user/TENSOR_GPU/jdk1.8.0_92/bin/python
I got past previous error, and now i am stuck at:
____From Compiling tensorflow/core/kernels/cwise_op_equal_to.cc: 2.7.10 (default, May  5 2016, 17:12:28) [GCC 4.9.3] In file included from ./tensorflow/core/platform/default/logging.h:23:0,                  from ./tensorflow/core/platform/logging.h:24,                  from ./tensorflow/core/lib/core/status.h:24,                  from ./tensorflow/core/framework/op_def_builder.h:25,                  from ./tensorflow/core/framework/op.h:23,                  from ./tensorflow/core/kernels/cwise_ops_common.h:25,                  from tensorflow/core/kernels/cwise_op_equal_to.cc:16: ./tensorflow/core/platform/default/logging.h: In instantiation of 'std::string* tensorflow::internal::Check_EQImpl(const T1&, const T2&, const char*) [with T1 = long unsigned int; T2 = int; std::string = std::basic_string<char>]': ./tensorflow/core/kernels/cwise_ops_common.h:55:5:   required from 'static Eigen::array<long int, NDIMS> tensorflow::BinaryOpShared::ToIndexArray(const Vec&) [with int NDIMS = 2; tensorflow::BCast::Vec = tensorflow::gtl::InlinedVector<long long int, 4>]' ./tensorflow/core/kernels/cwise_ops_common.h:110:7:   required from 'void tensorflow::BinaryOp<Device, Functor>::Compute(tensorflow::OpKernelContext*) [with Device = Eigen::GpuDevice; Functor = tensorflow::functor::equal_to<long long int>]' tensorflow/core/kernels/cwise_op_equal_to.cc:37:1:   required from here ./tensorflow/core/platform/default/logging.h:194:25: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]                          == )  // Compilation error with CHECK_EQ(NULL, x)?                          ^ ./tensorflow/core/platform/macros.h:54:28: note: in definition of macro 'TF_PREDICT_TRUE'  #define TF_PREDICT_TRUE(x) x                             ^ ./tensorflow/core/platform/default/logging.h:193:1: note: in expansion of macro 'TF_DEFINE_CHECK_OP_IMPL'  TF_DEFINE_CHECK_OP_IMPL(Check_EQ,  ^ ____From Compiling tensorflow/core/kernels/l2loss_op_gpu.cu.cc: 2.7.10 (default, May  5 2016, 17:12:28) [GCC 4.9.3] gcc: error trying to exec 'as': execvp: No such file or directory ERROR: /home/user/TENSOR_GPU/tensorflow/tensorflow/core/BUILD:334:1: output 'tensorflow/core/_objs/gpu_kernels/tensorflow/core/kernels/l2loss_op_gpu.cu.pic.o' was not created. ERROR: /home/user/TENSOR_GPU/tensorflow/tensorflow/core/BUILD:334:1: not all outputs were created. Target //tensorflow/tools/pip_package:build_pip_package failed to build ____Elapsed time: 35.525s, Critical Path: 34.98s

Unfortunately we don't officially support CentOS. We'll do our best to support installation on unsupported platforms, but in this case, it's unclear what we can do. If it turns out there is a problem that can be fixed with changes to TensorFlow, we're happy to accept a PR.

I built the latest Tensorflow (github master branch) with GPU support on a supercomputing center (CentOS 6.7 with gcc 4.9.2). I pointed out some of environment variables settings that are necessary for a success built. You can refer to my protocol:
http://biophysics.med.jhmi.edu/~yliu120/tensorflow.html
Tensorflow can be built with almost all Linux distributions with gcc >= 4.8 (usually libstdc++ comes with gcc 4.8). You just need to set the correct ENVs.


Local video track is not published on Chrome 74

I use livekit docker method to build my own service, and use javascript sdk to implement audio and video chatting between cell phones, most of the devices have no problem, only some of the phones have problems, the local video of these phones and the other phone video display are not a problem. But the other phone, which is communicating with him, can't receive the video screen, just like the local video screen of the phones with the problem can't be sent out, what could be the problem? What can I try?  There is no error message in the browser console, but the server found the following error message.
2023-05-08T02:40:38.347Z ERROR livekit supervisor/participant_supervisor.go:142 supervisor error on publication {"room": "room1683513603197 ", "roomID": "RM_CgXzUTbuajSw", "participant": "6119B8ABE206421A8DC78ECDCB40B79B", "pID": "PA_hA2bPhWGvMy8", "remote": false, "trackID": "TR _VCGULpvGnbBnGU", "error": "publish time out"}
github.com/livekit/livekit-server/pkg/rtc/supervisor.(*ParticipantSupervisor).checkPublications
        /workspace/pkg/rtc/supervisor/participant_supervisor.go:142
github.com/livekit/livekit-server/pkg/rtc/supervisor.(*ParticipantSupervisor).checkState
        /workspace/pkg/rtc/supervisor/participant_supervisor.go:131

Javascript SDK version : 1.7.1
Livkit Server version : 1.3.4
Chrome version 74.0.3729.186 is causing this problem, can it be solved if I don't upgrade my browser?

IThank you for your reply, the browser kernel is quite old, but the current situation is due to some uncontrollable factors, I can not upgrade the browser kernel.
I looked at it, the current code is using vp8.

does https://meet.livekit.io work from your browser?

Local audio track issue

@lukasIO  @davidzhao
Thank you for your reply, If I use https://meet.livekit.io to test, it will report an error:
react-dom.production.min.js:189 TypeError: Failed to construct 'IntersectionObserver': member root is not of type Element.
In fact, I also encountered this problem in my code, the error is caused by inconsistent implementation of IntersectionObserver in different versions of chrome, which I replaced using polyfill. (I'm not sure if this is causing the problem)
Feature: IntersectionObserver Document Root
polyfill : Remove lines 19 to 34
You can try to download a corresponding version of chome to test the problem. (Use a high version of chrome and a low version of chrome for the meeting.)
Chromium History Versions Download

Thank you for your reply.
My English is not very good, so I may not have described it clearly,  chrome74 could see the local and remote video, but the newer versions of chrome can't see the remote video(published from chrome74).
I've tried setting adaptiveStream to false, but the problem still persists.

thanks!
I understood your description just fine, only wanted to make sure that I am looking at the right thing :)
I confirmed what you described on chrome v74 and also confirmed that #703 fixes the issue. Once the next livekit-client version gets released, the fix will be part of it.

Thanks !  I'm looking forward to the next version. :)


Re the readme bit on your front page.

I originally wrote it. I was wrong and it does want 22050Hz input files, but outputs at 24000Hz. So you may want to change it to the below (I changed it on Reddit already, have revised it below for you! & thanks for linking my post).
Also, people need to update their TTS https://github.com/oobabooga/text-generation-webui/issues/4723#issuecomment-1826120220
The 2.0.3 model sounds rubbish by the way... so people will want to stick with the 2.0.2 model
Thanks!
Some suggestions on making good samples

Keep them about 7-9 seconds long. Longer isn't necessarily better.

Make sure the audio is down sampled to a Mono, 22050Hz 16 Bit wav file. You will slow down processing by a large % and it seems cause poor quality results otherwise (based on a few tests). 24000Hz is the quality it outputs at anyway!

Using the latest version of Audacity, select your clip and Tracks > Resample to 22050Hz, then Tracks > Mix > Stereo to Mono. and then File > Export Audio, saving it as a WAV of 22050Hz

-If you need to do any audio cleaning, do it before you compress it down to the above settings (Mono, 22050Hz, 16 Bit).

Ensure the clip you use doesn't have background noises or music on e.g. lots of movies have quiet music when many of the actors are talking. Bad quality audio will have hiss that needs clearing up. The AI will pick this up, even if we don't, and to some degree, use > it in the simulated voice to some extent, so clean audio is key!

Try make your clip one of nice flowing speech, like the included example files. No big pauses, gaps or other sounds. Preferably one that the person you are trying to copy will show a little vocal range. Example files are in \text-generation- >webui\extensions\coqui_tts\voices

Make sure the clip doesn't start or end with breathy sounds (breathing in/out etc).

Using AI generated audio clips may introduce unwanted sounds as its already a copy/simulation of a voice, though, this would need testing.

Thanks again , I took some samples of your code and modeldowloader.py.
https://github.com/oobabooga/text-generation-webui/issues/4712#issuecomment-1825593734
You can update xtts-api-server
pip install --upgrade xtts-api-server
Now model 2.0.2 will be downloaded by default and TTS version will also be checked at startup.
Added a new flag, -ms [repo,local]
Which indicates in what format you want to use xtts
local - will download the model version 2.0.2 in the folder models.
repo - will download the latest version of the model.
The default is local, so you don't need to set the flag additionally.

Hey! Thanks for your replies etc :) You clearly know how to code (I'm not a coder, other than to have bit of a play).
They definitely do have a different sound. In the code I am working on for Text-Gen-WebUI, I was going to give everyone the choice in the interface as to which method they want to use. Its a work in progress and Ill be dumping updates to the code as I go.  Thanks for the pointer to your code! That's just what I was looking for today! :)
I might be implementing a config file of some kind to store all the (variables/base/model to use and download) settings people use and other things. Ill let you know as/when I've got some tidy code to look at. I will be posting it back in the same place.
I also use SillyTavern, so thanks for getting XTTS working on there. The low VRAM method I have implemented in my code is very useful for people with very little VRAM to spare (less than 2GB when their LLM is loaded in) https://github.com/oobabooga/text-generation-webui/issues/4712#issuecomment-1825309021. Very simply, all that does is:

When the XTTS engine starts up, don't load the model into memory.
When you generate TTS, it loads the model into VRAM, which forces a few layers of your LLM model to unload from VRAM temporarily.
This allows the whole TTS model to have enough space to load into your VRAM, which speeds up processing by a factor of 4-5 for people who have less than 2GB of VRAM free after loading their LLM. (see my images on the link I gave above)
It then unloads the TTS model and the layers of your LLM load back into VRAM within 1-2 seconds, so hardly causes any slowdown for your LLM.

You might like to implement something like that in your code as an option for people. I suspect, because you are already running in your own separate python environment from the one that the LLM is loaded into, it would be nothing more than doing a load and unload of the model as/when TTS is requested/finished.

I spotted something in both our codebases.... In yours its here:
tts_func.py
    def api_generation(self,text,speaker_wav,language,output_file):
        self.model.tts_to_file(
                text=text,
                speaker_wav=speaker_wav,
                language=language,
                file_path=output_file  # Assuming tts_to_file takes 'file_path' as an argument.
        )

split_sentences=True
https://tts.readthedocs.io/en/latest/models/xtts.html#single-reference
You may have chosen to leave it off. But you know the bit where if it reads a really long paragraph, by the end of the paragraph, it starts to sound strange OR you see the "this message is over to 250 character limit", this is what works around that. It also means you use more VRAM when processing TTS if you have it Disabled...... though I suspect if its enabled, it may take a bit longer to generate TTS.
Sorry if you've worked around it another way, I spotted in my own code and thought Id check yours for you too, but I haven't read through all your code! :)

The tts_to_file is a method for the API, inside this method there is already a mechanism for splitting sentences.

Split_sentences is needed if you create a config and synthesize locally
https://github.com/daswer123/xtts-api-server/blob/4505c79ad00e5ed9c8469d00b07bb0968c1ea83a/xtts_api_server/tts_funcs.py#L203C36-L203C36

I thought that too, however, I haven't yet tested this. I have however seen the warning message a few times about my messages being too long, and best I could understand, forcing that setting on may resolve it. I need to go back and read some more!
Ill let you know if find out anything! :)
Thanks again!

Looks like they have updated TTS engine to v0.21.2 and v0.21.3 https://github.com/coqui-ai/TTS/discussions/3340
The v0.21.2 has updates for text splitting within the engine.

Great info, definitely worth upgrading the requirements to >=0.21.2

hi @daswer123 the xtts api works great
I made a automation script that installs and setup all requirements for XTTS i use it together with sillytavern  and here is the script i made
https://github.com/SillyTavern/SillyTavern-Launcher/blob/4889ecb717a25b0744a88074c0f1f43535f173d9/installer.bat#L213

Hi, glad to hear that my project is useful, you have a good project too :)

@daswer123 Hey! Hope you are well! Not sure these can be included with the software, I don't know what level of creative commons they are, but, if you want another 40 voices https://www.file.io/YeR7/download/3RR3Nzx6acnO
Some of them are mixed quality, but generally they work ok.

@daswer123 Changed the link to here, turns out that link only let 1x person download them https://filebin.net/t97nd69ac7qm2rsf

@erew123 Hi, thanks for sharing, I've added the information to the README


node tests: Use in memory badger in unit tests

does this help with the tests too? 🤔

Codecov Report

:exclamation: No coverage uploaded for pull request base (hlib/add-ipfs-cli@a55bf10). Click here to learn what that means.
The diff coverage is n/a.

@@                 Coverage Diff                  @@
##             hlib/add-ipfs-cli     #347   +/-   ##
====================================================
  Coverage                     ?   62.06%
====================================================
  Files                        ?      263
  Lines                        ?    22971
  Branches                     ?        0
====================================================
  Hits                         ?    14257
  Misses                       ?     7207
  Partials                     ?     1507


Conflict error on AWS cache test

http://jenkins.cgcloud.info/job/toil-pull-requests/1514/testReport/src.toil.test.src.jobCacheTest/AwsJobStoreCacheTest/testRemoveLocalImmutablyReadFile/

@JakeNarkizian, I edited the description. Please don't use 'see' as the anchor for all your links. That's unorthodox and not very readable.

I think this can be fixed with a retry during bucket creation.


ERROR: Allow BAM files as input to pipeline.

I tried to run variant2 analysis from bam files and got an error like https://github.com/chapmanb/bcbio-nextgen/issues/1419
after I follow the command
bcbio_conda install pybedtools gemini metasv bcbio-nextgen -c bioconda
bcbio_conda install -f bedtools -c bioconda
bcbio_nextgen.py upgrade -u development --tools
there is another error like
File "/peterhouse/tools/bcbio/anaconda/lib/python2.7/site-packages/joblib/parallel.py", line 72, in call
return [func(*args, **kwargs) for func, args, kwargs in self.items]
File "/peterhouse/tools/bcbio/anaconda/lib/python2.7/site-packages/bcbio/utils.py", line 51, in wrapper
return apply(f, *args, **kwargs)
File "/peterhouse/tools/bcbio/anaconda/lib/python2.7/site-packages/bcbio/distributed/multitasks.py", line 76, in postprocess_alignment
return sample.postprocess_alignment(*args)
File "/peterhouse/tools/bcbio/anaconda/lib/python2.7/site-packages/bcbio/pipeline/sample.py", line 186, in postprocess_alignment
covinfo = callable.sample_callable_bed(bam_file_ready, ref_file, data)
File "/peterhouse/tools/bcbio/anaconda/lib/python2.7/site-packages/bcbio/bam/callable.py", line 37, in sample_callable_bed
coverage_file, callable_bed, highdepth_bed, median_cov = coverage.calculate(bam_file, data)
File "/peterhouse/tools/bcbio/anaconda/lib/python2.7/site-packages/bcbio/variation/coverage.py", line 105, in calculate
do.run(cmd, "Calculate coverage: %s" % dd.get_sample_name(data))
File "/peterhouse/tools/bcbio/anaconda/lib/python2.7/site-packages/bcbio/provenance/do.py", line 21, in run
_do_run(cmd, checks, log_stdout)
File "/peterhouse/tools/bcbio/anaconda/lib/python2.7/site-packages/bcbio/provenance/do.py", line 75, in _do_run
stderr=subprocess.STDOUT, close_fds=True)
File "/peterhouse/tools/bcbio/anaconda/lib/python2.7/subprocess.py", line 710, in init
errread, errwrite)
File "/peterhouse/tools/bcbio/anaconda/lib/python2.7/subprocess.py", line 1335, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
and after I run test script
======================================================================
ERROR: Allow BAM files as input to pipeline.
Traceback (most recent call last):
File "/peterhouse/lchen/csardas/test_suite/bcbio-nextgen/tests/test_automated_analysis.py", line 312, in test_5_bam
subprocess.check_call(cl)
File "/peterhouse/tools/bcbio/anaconda/lib/python2.7/subprocess.py", line 540, in check_call
raise CalledProcessError(retcode, cmd)
CalledProcessError: Command '['bcbio_nextgen.py', '/peterhouse/lchen/csardas/test_suite/bcbio-nextgen/tests/test_automated_output/bcbio_system.yaml', '/peterhouse/lchen/csardas/test_suite/bcbio-nextgen/tests/data/automated/run_info-bam.yaml']' returned non-zero exit status 1

Ran 12 tests in 110.706s
FAILED (errors=2)
How can I fix this bug?

Sorry about the issue, it looks like your installation does not have goleft in the PATH, leading to the error. A couple of things to check:

Is /peterhouse/tools/bcbio/anaconda/bin/goleft present? If not, then something was problematic about your install/upgrade and you might need to re-run. It should install this as part of bcbio_nextgen.py upgrade.
If it is present, have you set your PATH to include the directory containing bcbio_nextgen.py? This is the bin directory in the path you specified as --tooldir during the initial install. You should be able to type goleft on the command line and find the executable.

Hope updating or fixing your path resolves the issue.

hi,
goleft is at the place
$ /peterhouse/tools/bcbio/anaconda/bin/goleft
goleft Version: 0.1.6
depth : parallelize calls to samtools in user-defined windows

and PATH setting is correct
$ which bcbio_nextgen.py
/peterhouse/tools/bin/bcbio_nextgen.py

$ which goleft
/peterhouse/tools/bin/goleft

Thanks for following up. It looks like everything is correct so I'm confused as to why it's not finding goleft on the PATH when running. There is nothing fancy going on inside bcbio here. Is it possible the environment you're running the tests is different than when you're checking it on the command line? Sorry to not have better ideas but hope retrying with the setup PATH as above will work.

My colleague was tried to upgrade system python from 2.6.6 to 2.7.3 last week and the work was not success. (well.....). Now I tried to restore original version by reinstall the rpm. (provided by CentOS 6.4)
bcbio process is now hanged on such point:
is it possible to fix? or any clue about which package/library may broken and I should take a look to restore original one
I did try re-install bcbio, that's not work.
  File "/peterhouse/tools/bin/bcbio_nextgen.py", line 230, in <module>
    main(**kwargs)
  File "/peterhouse/tools/bin/bcbio_nextgen.py", line 43, in main
    run_main(**kwargs)
  File "/peterhouse/tools/bcbio/anaconda/lib/python2.7/site-packages/bcbio/pipeline/main.py", line 43, in run_main
    fc_dir, run_info_yaml)
  File "/peterhouse/tools/bcbio/anaconda/lib/python2.7/site-packages/bcbio/pipeline/main.py", line 87, in _run_toplevel
    for xs in pipeline(config, run_info_yaml, parallel, dirs, samples):
  File "/peterhouse/tools/bcbio/anaconda/lib/python2.7/site-packages/bcbio/pipeline/main.py", line 134, in variant2pipeline
    samples = run_parallel("postprocess_alignment", samples)
  File "/peterhouse/tools/bcbio/anaconda/lib/python2.7/site-packages/bcbio/distributed/multi.py", line 28, in run_parallel
    return run_multicore(fn, items, config, parallel=parallel)
  File "/peterhouse/tools/bcbio/anaconda/lib/python2.7/site-packages/bcbio/distributed/multi.py", line 86, in run_multicore
    for data in joblib.Parallel(parallel["num_jobs"])(joblib.delayed(fn)(x) for x in items):
  File "/peterhouse/tools/bcbio/anaconda/lib/python2.7/site-packages/joblib/parallel.py", line 800, in __call__
    while self.dispatch_one_batch(iterator):
  File "/peterhouse/tools/bcbio/anaconda/lib/python2.7/site-packages/joblib/parallel.py", line 658, in dispatch_one_batch
    self._dispatch(tasks)
  File "/peterhouse/tools/bcbio/anaconda/lib/python2.7/site-packages/joblib/parallel.py", line 566, in _dispatch
    job = ImmediateComputeBatch(batch)
  File "/peterhouse/tools/bcbio/anaconda/lib/python2.7/site-packages/joblib/parallel.py", line 180, in __init__
    self.results = batch()
  File "/peterhouse/tools/bcbio/anaconda/lib/python2.7/site-packages/joblib/parallel.py", line 72, in __call__
    return [func(*args, **kwargs) for func, args, kwargs in self.items]
  File "/peterhouse/tools/bcbio/anaconda/lib/python2.7/site-packages/bcbio/utils.py", line 51, in wrapper
    return apply(f, *args, **kwargs)
  File "/peterhouse/tools/bcbio/anaconda/lib/python2.7/site-packages/bcbio/distributed/multitasks.py", line 76, in postprocess_alignment
    return sample.postprocess_alignment(*args)
  File "/peterhouse/tools/bcbio/anaconda/lib/python2.7/site-packages/bcbio/pipeline/sample.py", line 186, in postprocess_alignment
    covinfo = callable.sample_callable_bed(bam_file_ready, ref_file, data)
  File "/peterhouse/tools/bcbio/anaconda/lib/python2.7/site-packages/bcbio/bam/callable.py", line 37, in sample_callable_bed
    coverage_file, callable_bed, highdepth_bed, median_cov = coverage.calculate(bam_file, data)
  File "/peterhouse/tools/bcbio/anaconda/lib/python2.7/site-packages/bcbio/variation/coverage.py", line 105, in calculate
    do.run(cmd, "Calculate coverage: %s" % dd.get_sample_name(data))
  File "/peterhouse/tools/bcbio/anaconda/lib/python2.7/site-packages/bcbio/provenance/do.py", line 21, in run
    _do_run(cmd, checks, log_stdout)
  File "/peterhouse/tools/bcbio/anaconda/lib/python2.7/site-packages/bcbio/provenance/do.py", line 75, in _do_run
    stderr=subprocess.STDOUT, close_fds=True)
  File "/peterhouse/tools/bcbio/anaconda/lib/python2.7/subprocess.py", line 710, in __init__
    errread, errwrite)
  File "/peterhouse/tools/bcbio/anaconda/lib/python2.7/subprocess.py", line 1335, in _execute_child
    raise child_exception
OSError: [Errno 2] No such file or directory

Hi @csardas,
bcbio should be totally independent of the system python, it uses its own version of python. This error looks like goleft didn't get installed with your installation, if you do a tools update it should fix this error.

hi, the problem is solved. Thanks for suggestions.
I made two mistakes on this issue.
I tested with an old test script that use older version database (https://github.com/chapmanb/bcbio-nextgen/commit/07f492cf149635dda755c655397de09fdba53903)
and some users do use different PATH setting


Configurable signal handling in the interpreter thread

I'm having problems with handling ctrl-c (SIGINT) with Hint - my interpreter thread stops working. I spotted this in the documentation for runInterpreter
NB. The underlying ghc will overwrite certain signal handlers
(SIGINT, SIGHUP, SIGTERM, SIGQUIT on Posix systems, Ctrl-C handler on Windows).
In future versions of hint, this might be controlled by the user.

I'm using this for a music performance tonight, and it's a bit of a problem if everything stops working on ctrl-c. Is there a way of getting hint to ignore SIGINT?

You're using a Haskell interpreter to play music?
My knowledge of signal handling in Haskell is non-existent, I'm afraid. Happy to review and merge a patch to make this configurable, though.

In Haskell, the default behaviour of ctrl-c is to send the UserInterrupt exception to the main thread. It is possible to observe this behaviour by catching the exception before it causes the program to terminate:
import Control.Concurrent
import Control.Exception

sleepVerbosely :: String -> IO ()
sleepVerbosely threadName = do
  r <- try $ do
    putStrLn $ threadName ++ " sleeps for 5 seconds..."
    threadDelay 5000000
  putStrLn ""
  case r :: Either SomeException () of
    Left _ -> putStrLn $ threadName ++ " was interrupted by an exception"
    Right () -> putStrLn $ threadName ++ " slept for 5 seconds"

-- > main
-- main sleeps for 5 seconds...
-- ^C
-- main was interrupted by an exception
main :: IO ()
main = sleepVerbosely "main"

Catching the exception allows the program to stay alive despite the user's wishes, so by default, if the user types ctrl-c a second time, it abruptly terminate the program without using the exception mechanism:
-- > main
-- main sleeps for 5 seconds...
-- ^C
-- main was interrupted by an exception
-- main again sleeps for 5 seconds...
-- ^C
main :: IO ()
main = do
  sleepVerbosely "main"
  sleepVerbosely "main again"

There are reports that it's the shell which does this, not the default interrupt handler, but I get the same result if I use raiseSignal twice instead of typing ctrl-c twice, so it does look like this is the work of the default handler. Especially since, as you point out, we can make both hitting ctrl-c and hitting ctrl-c twice do nothing by setting the interrupt handler to Ignore:
import System.Posix.Signals

-- > main
-- main sleeps for 5 seconds...
-- ^C
-- main slept for 5 seconds
-- main again sleeps for 5 seconds...
-- ^C
-- main again slept for 5 seconds
main :: IO ()
main = do
  _ <- installHandler sigINT Ignore Nothing
  sleepVerbosely "main"
  sleepVerbosely "main again"

Instead of Ignore, we can also install our own interrupt handler. For example, if we type an expression which takes too long to compute in ghci, we can use ctrl-c to interrupt it and go back to the ghci prompt. And from there, if we type another slow expression, we would like to be able interrupt it again, we don't want ctrl-c to terminate the entire ghci session!
handleCtrlC :: IO ()
handleCtrlC = do
  childThreadId <- myThreadId
  let interruptChild :: IO ()
      interruptChild = throwTo childThreadId UserInterrupt
  _ <- installHandler sigINT (Catch interruptChild) Nothing
  pure ()

-- > main
-- main sleeps for 5 seconds...
-- ^C
-- main was interrupted by an exception
-- main again sleeps for 5 seconds...
-- ^C
-- main again was interrupted by an exception
main :: IO ()
main = do
  handleCtrlC
  sleepVerbosely "main"
  sleepVerbosely "main again"

hint uses runGhcT, which calls withSignalHandlers , which does basically the same thing as my handleCtrlC. That's what the comment about how "the underlying ghc will overwrite certain signal handlers" means.

Now, you mentioned that your interpreter thread stopped working. By default, child threads are not sent any exception when ctrl-c is pressed:
-- > main
-- child sleeps for 5 seconds...
-- main sleeps for 5 seconds...
-- ^C
-- main was interrupted by an exception
-- main again sleeps for 5 seconds...
-- child slept for 5 seconds
-- main again slept for 5 seconds
main :: IO ()
main = do
  _ <- forkIO $ do
    sleepVerbosely "child"
  threadDelay 1000000
  sleepVerbosely "main"
  sleepVerbosely "main again"

But what if we did want the exception to be thrown to the child thread instead of to the main thread? We can achieve this by overwriting the interrupt handler:
-- > main
-- child sleeps for 5 seconds...
-- main sleeps for 5 seconds...
-- ^C
-- child was interrupted by an exception
-- main slept for 5 seconds
main :: IO ()
main = do
  _ <- forkIO $ do
    handleCtrlC
    sleepVerbosely "child"
  threadDelay 1000000
  sleepVerbosely "main"

In your case, you are attempting to disable ctrl-c by setting the interrupt handler to Ignore, but then you spawn an "interpreter thread" which overwrites this Ignore by setting up its own interrupt handler:
-- > main
-- child sleeps for 5 seconds...
-- main sleeps for 5 seconds...
-- ^C
-- child was interrupted by an exception
-- main slept for 5 seconds
main :: IO ()
main = do
  _ <- installHandler sigINT Ignore Nothing
  _ <- forkIO $ do
    handleCtrlC
    sleepVerbosely "child"
  threadDelay 1000000
  sleepVerbosely "main"

@yaxu, that's the behaviour you see, right? You set the interrupt handler to Ignore, and your main thread is unaffected by ctrl-c, but the child thread still dies. However, the reason the main thread is unaffected by ctrl-c is not because you set the interrupt handler to Ignore, it's because the child thread overwrites the ctrl-c handler.
With hint as currently written, there is no way for you to prevent hint from overwriting the interrupt handler. But there is an easy workaround: you can overwrite it again!
-- > main
-- child sleeps for 5 seconds...
-- main sleeps for 5 seconds...
-- ^C
-- child slept for 5 seconds
-- main slept for 5 seconds
main :: IO ()
main = do
  _ <- installHandler sigINT Ignore Nothing
  _ <- forkIO $ do
    handleCtrlC
    _ <- installHandler sigINT Ignore Nothing
    sleepVerbosely "child"
  threadDelay 1000000
  sleepVerbosely "main"

This workaround seems to work fine in this toy model of the problem, let's now make sure it also works with the real hint. First, let's make sure we can reproduce the problem:
interpretVerbosely :: IO () -> IO ()
interpretVerbosely body = do
  r <- runInterpreter $ do
    liftIO body
  putStrLn ""
  case r :: Either InterpreterError () of
    Left e -> putStrLn $ "interpreter failed with: " ++ show e
    Right () -> putStrLn $ "interpreter succeeded"

-- > main
-- child sleeps for 5 seconds...
-- main sleeps for 5 seconds...
-- ^C
-- child was interrupted by an exception
-- interpreter succeeded
-- main slept for 5 seconds
main :: IO ()
main = do
  _ <- installHandler sigINT Ignore Nothing
  _ <- forkIO $ interpretVerbosely $ do
    sleepVerbosely "child"
  threadDelay 1000000
  sleepVerbosely "main"

And finally, let's confirm that the workaround works with the real hint:
-- > main
-- child sleeps for 5 seconds...
-- main sleeps for 5 seconds...
-- ^C
-- child slept for 5 seconds
-- interpreter succeeded
-- main slept for 5 seconds
main :: IO ()
main = do
  _ <- installHandler sigINT Ignore Nothing
  _ <- forkIO $ interpretVerbosely $ do
    _ <- installHandler sigINT Ignore Nothing
    sleepVerbosely "child"
  threadDelay 1000000
  sleepVerbosely "main"

Success!

For ghci, it makes a lot of sense to allow the user to interrupt the computation with ctrl-c. But for hint, we don't know whether the caller is using hint to implement a repl or something else. And if they are implementing a repl, installing this interrupt handler by default is not sufficient: they will also have to catch the UserInterrupt exception and restore their repl's prompt. So I think the default behaviour of runInterpreter should be to not mess with the interrupt handler, and then we could expose a repl-friendly wrapper which would attach the interrupt handler, catch the UserInterrupt and return an Either. What do you think, @mvdan ?

Thanks very much @gelisam, quite possibly the clearest and most thorough response I've had to a technical question! This does explain the behaviour I've been seeing very well. Thanks very much for the workaround!

@gelisam I agree that we shouldn't mess with the interrupt handler by default. Feel free to send a patch :)


[SMALLFIX]Use static imports for standard test utilities

#177: Use static imports for standard test utilities in alluxio.client.block.stream.NettyPacketWriterTest and resolve some errors.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/19164/
Test PASSed.


Partial port to Darwin

Use #if SYSTEM_DARWIN preprocessing to select actual layout and alignment for system
structures and global constant definitions:

jmp_buf, dirent, fcntl, stdio, sys_mman, sys_stat, sys_utsname, unistd,
pthread

The big challenge by still using the existing libc is of the differences between architectures. Especially in differences normally solved by macro macro in header files.  For example __stdinp / stdin. Ideally this should be solved at some level
and hidden inside the library, but in C2 this is not possible I think. To make it a big simpler, maybe we could generate
arch_stdin() and implement that in an arch specif way? The bootstrap.c could then include some arch header and always use arch_stdin(). I think that way the code stays maintainable, but is is a big challenge.
Do you see any other way?
I think overall the patch is definitely an improvement. In the 2nd commit you change DARWIN_ARM64 to SYSTEM_DARWIN. Do you think this patch will also work on x86_64 based Macs?

merged.


Some difference

Thank you very much for sharing. First I used your mobilenet and weights, then I used the mobilenet and weights https://github.com/titu1994/neural-image-assessment share.I found there is a big difference between the two on the same data set. Can you compare your work to the results given in the paper?

Hi @GeniusLight
Thanks for the question!
Yes, there might be a huge difference, it depends on

model
I use mobile-net-v2 (https://arxiv.org/abs/1801.04381) in https://github.com/titu1994/neural-image-assessment implementation author use mobile-net-v1 (https://arxiv.org/abs/1704.04861) and some other models
optimization and hyperparameters tyning (learning rate, num epoch, augmentation, etc)
the randomness of the training algorithm
different train/validation dataset split

please, could you provide more information about differences?

I want to use this method to evaluate the effect of converting a grayscale image into a color image.I evaluate 120 images.
When use you model and weight, the meas score for grayscale(copy two channels) is 4.18831566, the means score for pesudo rgb color is 3.84607850. When use the mobile-net and weights https://github.com/titu1994/neural-image-assessment gave, the score is 4.18837916 and 4.76663283. The result is contradictory. I'm not quite sure if the degree of differentiation of this score is significant
On 4/9/2018 21:18，Kyryl<EMAIL_ADDRESS>wrote：
Hi @GeniusLight
Thanks for the question!
Yes, there might be a huge difference, it depends on
model
I use mobile-net-v2 (https://arxiv.org/abs/1801.04381) in https://github.com/titu1994/neural-image-assessment implementation author use mobile-net-v1 (https://arxiv.org/abs/1704.04861) and some other models
optimization and hyperparameters tyning (learning rate, num epoch, augmentation, etc)
the randomness of the training algorithm
different train/validation dataset split
please, could you provide more information about differences?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.


Is this project in need to assistance? It also seems abandoned

I am willing to help out with maintenance. There are two simple PRs that could be merged and released if someone is able to review?

Hey there,
I am so sorry. Somehow I didn't have notifications turned on, and I didn't expect people to actually contribute. I just stumbled upon this repo again by chance and was shocked to see PRs.
I know it doesn't look good for a "maintained" fork…
Notifications should work again now, and I am planning to put some work into this repo again.
If you're still interested, I would be happy to have you on board. Especially since I don't really have experience in open source, any help is welcome.

No need to apologise! It happens plus we're all busy.
Thanks for merging my other MR.
Do you have a roadmap or any other such list of plans?

Not really yet. The goal, of course, is to be fully compatible with the Notion API as it changes. But I don't have an overview right now of what needs to be fixed in particular. That would probably be a good first step.
I think a lot of work could also be done to improve the developer experience when updating or inserting in Notion.
Right now, I am making a PR to add page icons (with the newly added custom emojis), followed by one for the unique ID property.
I am actively using this crate in a project where all kinds of problems come up. So the plan was to fix them here instead of just for this project.
Right now, I am picking up this project after a long pause, so that's why I visited this repo again…

Just invited you as a maintainer; feel free to help out where you can.

Sounds sensible. I am also using it on a side project so that will suggest some new integrations/fixes that might be required. Will MR as appropriate. Thanks


Bug

Summary

One paragraph explanation of the bug, including why it is a problem (i.e. what does it prevent a user from doing or accomplishing). Screenshots are greatly helpful here too.

Steps to reproduce

Sequential steps (1., 2., 3., ...) that describe how to reproduce the bug. This will help a developer experience what the user experienced so that they can debug it.

Environment

What kind of device was the bug experienced with. This would include device, version of the operating system (i.e. iOS or Android), and any other environmental details that might be relevant.

Unresolved questions / Out of scope

Are there any related issues you consider out of scope for this issue that could be addressed in the future?

bc529e998e3ea8362bf1e393d2d698db3c75c589

``


Add logging to PegNet

Added a dirt simple logging to stdout.  Don't think we really need more.
This task should add logging through out mining and the PegNet daemon so we can validate everything is working correctly.

Replacing with a popular logger such as https://github.com/sirupsen/logrus should be fairly simple while still being light and flexible.


Request : Custom Delay on unlikes/likes

Hi
I was testing the bot unlike feature using media_id from text file.
Noticed the delay is a bit too long as where as manually I can do more in one minute.
So would like to have some custom delay option.
is it possible ?
Regards

Done on #95

Hi the unlike delay has begun approx 10 seconds between each unlikes.
Issue now is it unlikes 10 media_id and then pauses for a while and then starts again to unlike more 5-10 media_id and pause again.
So is there a way where the bot will not pause after unliking 10 media_id,
It should just wait 10 seconds for each unlike. so 6 unlike in 1 minute and 360 unlike in an hour we can get if we dont get temp banned,.
Regards

Fixed in <IP_ADDRESS>


Accumulation in Radar API Core

APT_GUI-like point clouds accumulation made available for Provizio radars customers to be used for their needs.

See https://github.com/provizio/provizio_radar_api_core/tree/feature/APT-236-Points-Accumulation#point-clouds-accumulation
See https://www.loom.com/share/d843d5f9d04e48398bea13bff2897def

On a separate note, if there a make target for generating doxygen documentation, e.g. in html / pdf / text?

On a separate note, is there a make target for generating doxygen documentation, e.g. in html / pdf / text?

@psilar Nope, I don't produce doxygen html/pdf/text in CI, customers are free to use something like doxywizard if they like and need.


DecoratingLogger throws Encoding::UndefinedConversionError on ASCII-8BIT encoding

Description
We're logging our requests with New Relic and had some issue with logging PayPal request/response logs. They're in ASCII-8BIT encoding.
When calling .to_json on a message in NewRelic::Agent::Logging::DecoratingFormatter#escape it raises Encoding::UndefinedConversionError: "\xC4" from ASCII-8BIT to UTF-8
message = "č"

message.encoding
=> #<Encoding:UTF-8>

message.to_json
=> "\"č\""

message.force_encoding(Encoding::ASCII-8BIT).to_json
Encoding::UndefinedConversionError: "\xC4" from ASCII-8BIT to UTF-8
from /Users/user/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/activesupport-<IP_ADDRESS>/lib/active_support/core_ext/object/json.rb:40:in `to_json'

This issue is similar to #842.
Expected Behavior
The behaviour should be as it's been solved in #844 by scrubbing these characters or by forcing the UTF-8 encoding.
message.force_encoding(Encoding::ASCII_8BIT).force_encoding(Encoding::UTF_8).to_json
=> "\"č\""

Steps to Reproduce
If a message that is passed to NewRelic::Agent::Logging::DecoratingFormatter#escape is in Encoding::ASCII_8BIT it will raise an error when calling .to_json on it.
Rails.logger.info "č"
č

Rails.logger.info "č".force_encoding(Encoding::ASCII_8BIT)
č
Encoding::UndefinedConversionError: "\xC4" from ASCII-8BIT to UTF-8
from /Users/nika/.rbenv/versions/2.6.1/lib/ruby/gems/2.6.0/gems/activesupport-<IP_ADDRESS>/lib/active_support/core_ext/object/json.rb:40:in `to_json'

Your Environment
Ruby 2.6.1
Rails <IP_ADDRESS>
New Relic - tried with 7.2.0 and current master commit (8.2.0-pre)

Hi @nikajukic! Thanks for bringing this to our attention. It's helpful to know the fix in #844 doesn't cover this case.
I have a branch that uses another strategy to encode non-UTF-8 strings. Would you be willing to update your Gemfile to run on this branch and let me know if it resolves the issue?
gem 'newrelic_rpm', git: 'https://github.com/newrelic/newrelic-ruby-agent.git', branch: 'bugfix/decorating-logger-throws-EncodingUndefinedConversionError-on-ASCII-8BIT-encoding'

Thank you!
Kayla

Hi @kaylareopelle, this solution won't work because ASCII-8BIT is still a valid encoding so .valid_encoding? returns true and message will never be encoded with Encoding::UTF_8 like you intended.
"č".force_encoding(Encoding::ASCII_8BIT).valid_encoding?
=> true

Try adding this test to test/new_relic/agent/logging_test.rb
def test_to_replace_ascii_8bit_chars
  message = 'message with an ASCII-8BIT character'
  input = "#{message} #{"č".force_encoding(Encoding::ASCII_8BIT)}"
  expectation = "#{message} #{DecoratingFormatter::REPLACEMENT_CHAR}#{DecoratingFormatter::REPLACEMENT_CHAR}"
  logger = DecoratingLogger.new @output
  logger.info input
  assert_equal expectation, last_message['message']
end

This is intended behavior. It will replace ASCII-8BIT č with two replacement charachters because č consists of "\xC4\x8D" and each character is invalid in UTF-8 and should therefore be replaced.

Hi @nikajukic, thank you for the clarification. I misunderstood your earlier message and appreciate the additional information and the test case. I'll continue working on a solution that includes this test case and will let you know when a new branch is available to test.

Hi @nikajukic, I updated the condition to message.encoding == Encoding::UTF_8 && message.valid_encoding? before running #encode on the String. This seems to work with all the provided test cases.
Here's a link to the diff: https://github.com/newrelic/newrelic-ruby-agent/pull/864/files#diff-e874717e708c43b82c4b577a280c3cc75f38d8aef7589a67d295b0bfa2453e62R92
Would you be willing to give the branch a try to see if this resolves the issue?
gem 'newrelic_rpm', git: 'https://github.com/newrelic/newrelic-ruby-agent.git', branch: 'bugfix/decorating-logger-throws-EncodingUndefinedConversionError-on-ASCII-8BIT-encoding'

Hi @nikajukic  - I wanted to let you know a change in response to your issue is included in the newly published version 8.3.0 of the agent. We'll be deleting the branch, bugfix/decorating-logger-throws-EncodingUndefinedConversionError-on-ASCII-8BIT-encoding shortly.
Thanks for your contribution!


asusd-user service fails to start - core dump

Describe the bug
Asus Daemon from the latest nixos-unstable core dumps. Can someone help me on how to debug this?
Steps To Reproduce
Steps to reproduce the behavior:

systemctl --user start asusd-user.service

Expected behavior
Service should start
Additional context
~ ➜ systemctl --user status asusd-user.service
× asusd-user.service - ASUS User Daemon
     Loaded: loaded (/etc/systemd/user/asusd-user.service; linked-runtime; preset: enabled)
    Drop-In: /nix/store/yz0mj4ddqzw4ynfqbkp9w5r2vz3ikfgs-user-units/asusd-user.service.d
             └─overrides.conf
     Active: failed (Result: core-dump) since Sun 2024-03-17 20:01:48 GMT; 6s ago
   Duration: 54ms
    Process: 3799 ExecStartPre=/nix/store/mb488rr560vq1xnl10hinnyfflcrd51n-coreutils-9.4/bin/sleep 2 (code=exited, status=0/SUCCESS)
    Process: 3801 ExecStart=/nix/store/nrkpkxh6g4j41rsb4ppcbqy3l0i1d5p6-asusctl-5.0.7/bin/asusd-user (code=dumped, signal=ABRT)
   Main PID: 3801 (code=dumped, signal=ABRT)
        CPU: 7ms

Mar 17 20:01:47 orca systemd[2175]: asusd-user.service: Failed with result 'core-dump'.
Mar 17 20:01:48 orca systemd[2175]: asusd-user.service: Scheduled restart job, restart counter is at 2.
Mar 17 20:01:48 orca systemd[2175]: asusd-user.service: Start request repeated too quickly.
Mar 17 20:01:48 orca systemd[2175]: asusd-user.service: Failed with result 'core-dump'.
Mar 17 20:01:48 orca systemd[2175]: Failed to start ASUS User Daemon.

Notify maintainers
@K900 @aacebedo

Metadata
Please run nix-shell -p nix-info --run "nix-info -m" and paste the result.
[user@system:~]$ nix-shell -p nix-info --run "nix-info -m"
 - system: `"x86_64-linux"`
 - host os: `Linux 6.8.0, NixOS, 24.05 (Uakari), 24.05.20240314.d691274`
 - multi-user?: `yes`
 - sandbox: `yes`
 - version: `nix-env (Nix) 2.21.0`
 - nixpkgs: `/nix/store/9mf8fkjw3vw1gm4s6j5fqlwrv5wf2knf-source`

Add a :+1: reaction to issues you find important.

Please post the backtrace.

Please post the backtrace.

Yes, that's what I planned to do from the start, but I'm not sure how to do that for a systemd service. Asusd refuses to run as a standard process, and systemd status has no backtrace.

coredumpctl debug can provide some info.

So it's a Rust panic. Then there should definitely be errors in the log.

How do I access those logs?

journalctl --user --unit=asusd-user

It says the asus daemon was not provided.
log.txt

How did you install asusd?

With this in my configuration.nix
  services = {
    asusd = {
      enable = true;
      enableUserService = true;
    };
  };

I am using the unstable channel:
  inputs = {
    nixpkgs.url = "nixpkgs/nixos-unstable";
    }

OK, that looks like upstream is doing something very wrong. I'll look into it more.

Thanks. I am using the unstable branch from just a couple days ago:
`Linux 6.8.0, NixOS, 24.05 (Uakari), 24.05.20240314.d691274`

That was the whole plan 😅. OpenRGB failed to detected ARGB headers on my motherboard, so I was hoping this would work for me instead of using a windows VM with armory crate

That is absolutely not going to work. asusd only works on laptops. The desktop motherboards are not in scope for it.

Thanks for letting me know. In that case, hope this issue helps someone else


Will KE support all old types of mappings?

Here's what I needed to do just to have the Apple keyboard behave like a standard one (for some unfathomable reason, the portuguese Apple layout is similar to, but not the same, as the 'standard' PC one, with a few keys exchanging places.
I managed to do the first block, which is the most offending one, using the json config, after a  lot of guessing and consulting diagrams of the US layout, but how to do the rest eludes me.
I thought it might be worth it to share this file, because it includes a lot of different things. If not, please forgive me.
<?xml version="1.0"?>
<root>
    <symbol_map type="KeyCode" name="TS_ARTICLE"        value="0x0a" />
    <symbol_map type="KeyCode" name="TS_PLUS"           value="0x18" />
    <symbol_map type="KeyCode" name="TS_SUPERSCRIPT_O"  value="0x21" />
    <symbol_map type="KeyCode" name="TS_TILDE"          value="0x27" />
    <symbol_map type="KeyCode" name="TS_BACKSLASH"      value="0x2a" />
    <symbol_map type="KeyCode" name="TS_STOP"           value="0x2f" />

    <symbol_map type="KeyCode" name="TS_7"              value="0x1a" />
    <symbol_map type="KeyCode" name="TS_8"              value="0x1c" />
    <symbol_map type="KeyCode" name="TS_9"              value="0x19" />
    <symbol_map type="KeyCode" name="TS_0"              value="0x1d" />

    <symbol_map type="KeyCode" name="TS_K_COMMA"        value="0x41" />
    <symbol_map type="KeyCode" name="TS_K_STAR"         value="0x43" />
    <symbol_map type="KeyCode" name="TS_K_PLUS"         value="0x45" />
    <symbol_map type="KeyCode" name="TS_K_SLASH"        value="0x4b" />
    <symbol_map type="KeyCode" name="TS_K_MINUS"        value="0x4e" />
    <symbol_map type="KeyCode" name="TS_K_EQUALS"       value="0x51" />

    <item>
        <name>Portuguese (Portugal) PC layout</name>
        <identifier>private.portuguese_portugal_pc_layout</identifier>

        <!-- control -->
        <autogen>--KeyToKey-- KeyCode::COMMAND_R,         KeyCode::OPTION_R</autogen>

        <!-- main -->
        <autogen>--KeyToKey-- KeyCode::TS_ARTICLE,        KeyCode::TS_BACKSLASH</autogen>
        <autogen>--KeyToKey-- KeyCode::TS_BACKSLASH,      KeyCode::TS_TILDE</autogen>
        <autogen>--KeyToKey-- KeyCode::TS_TILDE,          KeyCode::TS_SUPERSCRIPT_O</autogen>
        <autogen>--KeyToKey-- KeyCode::TS_SUPERSCRIPT_O,  KeyCode::TS_PLUS</autogen>
        <autogen>--KeyToKey-- KeyCode::TS_PLUS,           KeyCode::TS_ARTICLE</autogen>

        <!-- combined -->
        <autogen>
            --KeyToKey--
            KeyCode::TS_7, ModifierFlag::OPTION_R,
            KeyCode::TS_8, ModifierFlag::SHIFT_R | ModifierFlag::OPTION_R
        </autogen>
        <autogen>
            --KeyToKey--
            KeyCode::TS_0, ModifierFlag::OPTION_R,
            KeyCode::TS_9, ModifierFlag::SHIFT_R | ModifierFlag::OPTION_R
        </autogen>

        <!-- keypad -->
        <autogen>--KeyToKey-- KeyCode::TS_K_COMMA,        KeyCode::TS_STOP</autogen>
        <autogen>--KeyToKey-- KeyCode::TS_K_MINUS,        KeyCode::TS_K_PLUS</autogen>
        <autogen>--KeyToKey-- KeyCode::TS_K_STAR,         KeyCode::TS_K_MINUS</autogen>
        <autogen>--KeyToKey-- KeyCode::TS_K_SLASH,        KeyCode::TS_K_STAR</autogen>
        <autogen>--KeyToKey-- KeyCode::TS_K_EQUALS,       KeyCode::TS_K_SLASH</autogen>
    </item>
</root>

The equivalent of the 'main' block:
      "simple_modifications" : {
        "quote" : "open_bracket",
        "equal_sign" : "non_us_backslash",
        "non_us_backslash" : "grave_accent_and_tilde",
        "grave_accent_and_tilde" : "backslash",
        "open_bracket" : "equal_sign",
        "non_us_pound" : "quote"
      },

I should point out that the keys' names have nothing to do with what's printed on them in my keyboard, that's a matter for a separate issue.

#369


SAML based web application SSO with Azure AD (IDP) is going in infinite loop

We have configured SAML based SSO with Azure AD and once we sign in it if going in infinite loop and asking us to enter user name and password again and again.
Do you have any suggestion for this issue ?

Hi @AmitavaHazra - sorry for the issue you encountered. Would be challenging to troubleshoot without additional logs. Try adding the SSO web application url to your trusted sites. If that doesn't work, i recommend posting your question on our AD forum - Q&A or raise a service ticket with the Azure technical support channel.
Hope this helps.
Cheers.


Generate a random server name if no name was configured

It would be cool to generate a random server name using phrases and names from the Don't Starve universe, if on container-start, no server name was provided.
Some server name examples:

Mighty Chester
Clumsy Spiderqueen
Rattling Maxwell

It must be guaranteed that the server name doesn't change on subsequent boots.

We should define a list of adjectives and a list of names we want to use for name-generation. For the names it could make sense to use all names of characters, giants and special creatures from the Don't Starve universe, like Willow, Chester, Bearger etc. For the adjectives we need to define some fancy ones.

Pretty final list of names, including characters, giants and some monsters:
Wilson
Willow
Wolfgang
Wendy
WX-78
Wickerbottom
Woodie
Werebeaver
Wes
Wigfrid
Webber
Walani
Maxwell
Abigail
Lucy
Chester
Packim Baggims
Pig King
Glommer
Deerclops
Bearger
Moose
Goose
Dragonfly
Mosling
Mandrake
Beefalo
Gobbler
Hound
Koalefant
Krampus
Spider Queen
Treeguard
Ancient Guardian
Werepig
Bunnyman


Some small fixes

Title resize
Blue button
Put dropdown / filter below each other
No longer shows File table if no files found

Could you fix lint warning before merge? Thanks


Work in progress improved extension README

Work In Progress
This PR improves the README included in the extension bundle and what is seen on the VS Code marketplace, Open VSX Registry, and when looking at the extension in Positron or VS Code.
Looking for feedback on the work in progress, and thoughts on the below:
Some other features we can include in the document

The types of content we deploy (could be too long of a list)
Scanning of dependencies for requirements.txt and/or renv.lock

I'd also like to include a gif or img for the top of the README, and features where it makes sense. I included a link to an existing image of the logs we use for the docs, but plan to update that.
Intent
Resolves #2024
Type of Change

[ ] Bug Fix

[ ] New Feature

[ ] Breaking Change

[x] Documentation

[ ] Refactor

[ ] Tooling

I'm a little worried about the use of "project" being misunderstood as the ability to deploy "a whole bunch of content"

I'm a little worried about the use of "project" being misunderstood as the ability to deploy "a whole bunch of content"

I'll take a pass through it and see if we can replace some instances with "content" where the name collides too much (as we discussed)

I'm a little worried about the use of "project" being misunderstood as the ability to deploy "a whole bunch of content"

I re-worded a few lines to avoid using "content" and "project" in the same sections. "Content" is now used more frequently, and the only place "Project" is used is when talking about "all deployments". I think this is a more understandable usage, but let me know if your concern is addressed 👍

Marking this as ready to review, I'll be adding a follow-up PR with the images so those can be reviewed separately.


Installed but see nothing

I installed the plugin on the latest version of Obsidian on Windows. I enabled the plugin but don't see the navigation bar anywhere.  Closed and reopened Obsidian, still nothing.  I don't see any errors in the console that reference the plugin.  Am I missing a step?

Hi, thanks for the issue :)
I have tested it on my Windows machine, and I can see the bar:

The navbar should only be visible from within daily notes. If you are in daily notes, and still can't see it, then it might be one of these things:

What is the name of your daily notes? (the plugin might not recognize your daily note format)
Are you using a custom theme or css files? (the plugin inserts the bar if it can find a html element, based in a css selector)

My daily notes are named YYYY/YYYY-MM/YYYY-MM-DD_ddd.  I'm using the 'Minimal' theme. Only a few custom CSS based around showing icons on links.
I was wrong, there is a related error in the console:

Yeah that is what I thought. My function fails to get the date from the file name, because I check for another date format.
I think I can fix this by adding a field in settings that is the format of daily note files.

Okay tested it a bit, and I don't think that it is that.
When I use the Minimal theme I have to hover over the navbar at the top of the file to see it. I think the theme hides it.
I will still add a field to specify the date format of daily note files, as the warning you are seeing shouldn't be there.
If it is not the theme that hides it, then I probably need some more information.

If that is the problem then you can override it using this:
.view-header-title-container {
  opacity: 1;
}

I also tried the themes 'Atom' and 'Thinks' and it didn't show up in either of those. I tried adding your snippet but it didn't help.  I always work in "Preview" mode, I hope it's meant to work there.

I turned off all my snippets, made no difference.

Can you try opening the inspector using "Ctrl+Shift+I" (works for me) and use the element picker on where the navbar should be and send a screenshot of the html.

I'm also on 1.5.8

My HTML is like this. I have pointed at the div around the location where you can edit the filename.

It looks like your classes are different, so I think that is why the plugin doesn't work, but I don't know why that is.

I think what you have highlighted is a H1 maybe, and that might be why our classes aren't the same.
The plugin places the navbar where you usually rename files in the top center of the view.

Here's that part of the code expanded:

Okay, I have released a pre-release where you can define the date format of the filename of daily notes.
https://github.com/karstenpedersen/obsidian-daily-note-navbar/releases/tag/0.1.1
You can use https://github.com/TfTHacker/obsidian42-brat if you want to try it out.
I will not look at this more today, but feel free to try it out when you have time and see if it fixes your issue :)

I wasn't able to get BRAT to install it (says it doesn't have a manifest.json even though it does), so I manually copied the files. It WORKS! Even before I adjusted the "Daily note date format" setting that you added, it seems to do what it's supposed to (and if I change to YYYY-MM-DD, it still works despite my files being YYYY-MM-DD_ddd).  Thanks, I can remove the navigation from my journal footer now and use this more elegant solution!

That is great to hear, thanks for helping me test it :)


Searching for profiles, hastags, places and so on is not working for someone

Recently someone is reporting that the tabs have been disappeared when using the search function.
I will implement a more natural way of that part of code for avoiding this kind of problem.

first thank you for this work and then yes, the same thing is happening to me... :(


Expose recursive parameter for remove_<type> XML-RPC methods

Is your feature request related to a problem?
As a user of the client
I want to be able to recursively delete items
so that I can place fewer API calls to the server.
Provide a detailed description of the proposed feature
The parameter should be ignored if the API doesn't support it.
Alternatives you've considered
None
Additional information
None

To adhere to the versioning guarantees of Golang we need to add new methods and make the old one use the new one with the last argument being hardcoded to false.


test_on_tap.py results don't match expected results.

Hello,
When running test_on_tap.py, I get different results than reported in the testing section.
The mean d_avg of all 30 videos (output is added below) is 72.376, compared to d_avg 70.6; survival_16 89.3; median_l2 6.9 reported.
I download the reference mode using sh get_reference_model.sh, and I test on tapvid_davis.pkl which I downloaded and unzipped from https://storage.googleapis.com/dm-tapnet/tapvid_davis.zip.
I would really appreciate any assistance and clarifications on the matter!
Assaf

Attached below is the output:
model_name 1_128_i16_tap01_132907
loading TAPVID-DAVIS dataset...
found 30 videos in ./datasets/tapvid_davis
+--------------------------------------------------------+------------+
|                        Modules                         | Parameters |
+--------------------------------------------------------+------------+
|           module.fnet.layer3.0.conv1.weight            |   110592   |
|           module.fnet.layer3.0.conv2.weight            |   147456   |
|           module.fnet.layer3.1.conv1.weight            |   147456   |
|           module.fnet.layer3.1.conv2.weight            |   147456   |
|           module.fnet.layer4.0.conv1.weight            |   147456   |
|           module.fnet.layer4.0.conv2.weight            |   147456   |
|           module.fnet.layer4.1.conv1.weight            |   147456   |
|           module.fnet.layer4.1.conv2.weight            |   147456   |
|                module.fnet.conv2.weight                |   958464   |
|    module.delta_block.first_block_conv.conv.weight     |   275712   |
| module.delta_block.basicblock_list.2.conv2.conv.weight |   196608   |
| module.delta_block.basicblock_list.3.conv1.conv.weight |   196608   |
| module.delta_block.basicblock_list.3.conv2.conv.weight |   196608   |
| module.delta_block.basicblock_list.4.conv1.conv.weight |   393216   |
| module.delta_block.basicblock_list.4.conv2.conv.weight |   786432   |
| module.delta_block.basicblock_list.5.conv1.conv.weight |   786432   |
| module.delta_block.basicblock_list.5.conv2.conv.weight |   786432   |
| module.delta_block.basicblock_list.6.conv1.conv.weight |  1572864   |
| module.delta_block.basicblock_list.6.conv2.conv.weight |  3145728   |
| module.delta_block.basicblock_list.7.conv1.conv.weight |  3145728   |
| module.delta_block.basicblock_list.7.conv2.conv.weight |  3145728   |
+--------------------------------------------------------+------------+
total params: 17.57 M
reading ckpt from ./reference_model
...found checkpoint ./reference_model/model-000200000.pth
1_128_i16_tap01_132907; step 000001/30; rtime 0.01; itime 1.09; d_x 74.9; sur_x 100.0; med_x 1.8
1_128_i16_tap01_132907; step 000002/30; rtime 0.03; itime 0.91; d_x 71.1; sur_x 85.2; med_x 2.7
1_128_i16_tap01_132907; step 000003/30; rtime 0.04; itime 0.58; d_x 69.1; sur_x 87.8; med_x 2.9
1_128_i16_tap01_132907; step 000004/30; rtime 0.03; itime 0.97; d_x 72.6; sur_x 88.2; med_x 3.4
1_128_i16_tap01_132907; step 000005/30; rtime 0.03; itime 0.68; d_x 75.9; sur_x 90.1; med_x 2.8
1_128_i16_tap01_132907; step 000006/30; rtime 0.02; itime 0.71; d_x 77.7; sur_x 87.4; med_x 2.4
1_128_i16_tap01_132907; step 000007/30; rtime 0.02; itime 0.51; d_x 76.8; sur_x 88.6; med_x 3.7
1_128_i16_tap01_132907; step 000008/30; rtime 0.02; itime 1.16; d_x 75.5; sur_x 88.4; med_x 4.0
1_128_i16_tap01_132907; step 000009/30; rtime 0.04; itime 0.87; d_x 75.4; sur_x 88.4; med_x 4.0
1_128_i16_tap01_132907; step 000010/30; rtime 0.04; itime 1.15; d_x 70.9; sur_x 83.3; med_x 9.3
1_128_i16_tap01_132907; step 000011/30; rtime 0.04; itime 1.05; d_x 71.6; sur_x 84.4; med_x 8.7
1_128_i16_tap01_132907; step 000012/30; rtime 0.04; itime 0.93; d_x 71.3; sur_x 85.4; med_x 8.2
1_128_i16_tap01_132907; step 000013/30; rtime 0.03; itime 1.15; d_x 72.8; sur_x 86.5; med_x 7.6
1_128_i16_tap01_132907; step 000014/30; rtime 0.04; itime 0.97; d_x 72.4; sur_x 86.9; med_x 7.3
1_128_i16_tap01_132907; step 000015/30; rtime 0.03; itime 0.95; d_x 71.5; sur_x 86.8; med_x 8.1
1_128_i16_tap01_132907; step 000016/30; rtime 0.03; itime 1.00; d_x 71.7; sur_x 87.6; med_x 7.7
1_128_i16_tap01_132907; step 000017/30; rtime 0.04; itime 0.69; d_x 73.4; sur_x 88.3; med_x 7.3
1_128_i16_tap01_132907; step 000018/30; rtime 0.03; itime 0.75; d_x 73.1; sur_x 89.0; med_x 7.0
1_128_i16_tap01_132907; step 000019/30; rtime 0.03; itime 0.84; d_x 72.2; sur_x 89.0; med_x 6.9
1_128_i16_tap01_132907; step 000020/30; rtime 0.03; itime 0.60; d_x 71.6; sur_x 88.7; med_x 6.8
1_128_i16_tap01_132907; step 000021/30; rtime 0.03; itime 0.69; d_x 71.1; sur_x 88.8; med_x 6.6
1_128_i16_tap01_132907; step 000022/30; rtime 0.02; itime 0.73; d_x 72.0; sur_x 89.3; med_x 6.4
1_128_i16_tap01_132907; step 000023/30; rtime 0.03; itime 0.92; d_x 71.6; sur_x 89.3; med_x 6.2
1_128_i16_tap01_132907; step 000024/30; rtime 0.04; itime 1.07; d_x 71.1; sur_x 88.5; med_x 6.6
1_128_i16_tap01_132907; step 000025/30; rtime 0.04; itime 0.60; d_x 71.5; sur_x 88.6; med_x 6.8
1_128_i16_tap01_132907; step 000026/30; rtime 0.02; itime 0.65; d_x 70.8; sur_x 88.3; med_x 7.4
1_128_i16_tap01_132907; step 000027/30; rtime 0.02; itime 0.61; d_x 70.4; sur_x 88.5; med_x 7.4
1_128_i16_tap01_132907; step 000028/30; rtime 0.03; itime 0.95; d_x 70.4; sur_x 88.7; med_x 7.3
1_128_i16_tap01_132907; step 000029/30; rtime 0.05; itime 0.64; d_x 70.4; sur_x 89.0; med_x 7.1
1_128_i16_tap01_132907; step 000030/30; rtime 0.02; itime 0.60; d_x 70.5; sur_x 89.2; med_x 7.0

In addition, I wanted to ask about the following concerns regarding this testing of TAP-Vid DAVIS:

I notice that during data loading of this dataset on datasets.tapviddataset_fullseq.TapVidDavis that the "raw videos" are loaded from the pickle file, which are in 480x854 resolution, and not the 256x256 resolution videos, as described in the paper.
I see that right before model inference, the video and query points are resized to image_size (seen in test_on_tap.test_on_fullseq), which is set in test_on_tap.main to (512,896). Could you please elaborate further about this resizing? when going over the paper I couldn't find any mention of this.

Thanks for the messages.
For d_avg: How did you compute 72.376? It looks like it's showing 70.5 in the snippet you posted. The d_x shown in each row is the running average, so 70.5 is the average across the 30 videos.
For resolution: I think some papers use 256x256 at test time, but we find that higher-resolution input helps performance, if you can afford it. The stats are still computed at 256x256 though.

@aharley I'm getting similar results (~70 d_x). The PointOdyssey paper reported about ~63 on this metric. I'm also getting ~7 on the MTE metric, while the paper reported ~4. My results for survival are in line with the paper. I was curious if you had changed or otherwise improved the reference model from the paper, or if there is a bug somewhere?


Don't set username on Windows

Lookup up the username involves a slow AD query. Just skip setting it; the only effect is to create logfiles with the name unknownuser in the path.
cl/267237763 (google-internal)

I think https://github.com/golang/glog/pull/69 is the better fix (and we should use that internally as well), because it matches the implementation of user.Current() of Go's standard library except for the unnecessary, slow part that looks up the display name.
So it is a completely safe change for glog that will not result in any change of behavior for current users, except that it's faster.


sample request

Hey Diego,
found an old tweet of yours https://twitter.com/diegoveloper/status/1054400640795992064
and wanted to ask you kindly if you could post the code for linking the two bottom scroll views?
I'm working on something similar and can't get it to work smoothly.
I found your sample for scroll_sync, but f.e. I have no idea how to clamp a list to it's max extend when the other is longer...

Sorry the code is not available, but you can do easily with two ListViews with horizontal axis


helmfile does no use helmfile.lock when using ad-hoc kustimzation

Operating system

Helmfile Version
v0.159.0
Helm Version
v3.13.2
Bug description
when using a kustomization, helmfile does not respect the helmfile.lock
Example helmfile.yaml
repositories:
- name: passbolt
  url: https://download.passbolt.com/charts/passbolt

releases:
- name: passbolt
  chart: passbolt/passbolt
  strategicMergePatches:
  - apiVersion: v1
    kind: Secret
    metadata:
      name: passbolt-sec-tls
    data:
      ca.crt: null
      ca.key: null
      server-key.pem: null
      server.crt: null
      tls.crt: null
      tls.key: null

helmfile.lock
version: v0.159.0
dependencies:
- name: passbolt
  repository: https://referentiel-livraison.devops.prod.fdj.fr/repository/passbolt-helm-proxy
  version: 0.3.3
digest: sha256:61fc8e83addf9d8d3326a7ab52ddcaca0f409e8bf753e6529f972b6d34683299
generated: "2023-12-15T13:23:34.596704+01:00"

Error message you've seen (if any)
helmfile template => see that generated manifests use     helm.sh/chart: passbolt-0.4.4
remove the strategicMergePatches and it works again :     helm.sh/chart: passbolt-0.3.3
Steps to reproduce

Working Helmfile Version
tbd
Relevant discussion
No response

@jouve PR is welcome.

still investigating, I think the issue happend around this part of the code https://github.com/helmfile/helmfile/blob/main/pkg/state/state.go#L1126-L1161


worker_info dict has no key 'name'

On cluster.close(), this error is thrown on current master:
Traceback (most recent call last):
  File "/home/smmanoet/.local/lib/python3.6/site-packages/tornado/gen.py", line 326, in wrapper
    yielded = next(result)
  File "/home/smmanoet/.local/lib/python3.6/site-packages/dask_drmaa/core.py", line 285, in stop_workers
    v['name']: k for k, v in self.scheduler.worker_info.items()
  File "/home/smmanoet/.local/lib/python3.6/site-packages/dask_drmaa/core.py", line 285, in <dictcomp>
    v['name']: k for k, v in self.scheduler.worker_info.items()
KeyError: 'name'

I looked at the entries of worker_info, they only have the keys
cpu
memory
time
read_bytes
write_bytes
num_fds
executing
in_memory
ready
in_flight

I suspect that this is due to a change upstream in dask/distributed that
wasn't mirrored in this library.  Probably this should be looking at
self.scheduler.workers.items() and then maybe at the name attribute?
Perhaps something else though like host or address (I'm no longer very
familiar with this code).
Three solutions here:

Pin to an earlier version of distributed
Submit a PR to bring dask-drmaa up to date
Use dask-jobqueue instead, which seems to be under more active
maintenance today

On Thu, Oct 25, 2018 at 12:32 PM Maximilian Nöthe<EMAIL_ADDRESS>wrote:

On cluster.close(), this error is thrown on current master:
Traceback (most recent call last):
File "/home/smmanoet/.local/lib/python3.6/site-packages/tornado/gen.py", line 326, in wrapper
yielded = next(result)
File "/home/smmanoet/.local/lib/python3.6/site-packages/dask_drmaa/core.py", line 285, in stop_workers
v['name']: k for k, v in self.scheduler.worker_info.items()
File "/home/smmanoet/.local/lib/python3.6/site-packages/dask_drmaa/core.py", line 285, in
v['name']: k for k, v in self.scheduler.worker_info.items()
KeyError: 'name'
I looked at the entries of worker_info, they only have the keys
cpu
memory
time
read_bytes
write_bytes
num_fds
executing
in_memory
ready
in_flight
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/dask/dask-drmaa/issues/95, or mute the thread
https://github.com/notifications/unsubscribe-auth/AASszB9czARNVi7PeS_hiqR8NkNTsNn6ks5uoeeQgaJpZM4X6qgX
.


Identification impossible

Every Time I want to identify for the KulturPass App i get this error
Device: Google Pixel 7 Pro
Software: Android 14

Thank you for the feedback. The problem will be fixed with the app version 1.0.1. We expect the version to be released by Google in 2-3 days. We would ask you to try the identification again then.

Okay thanks, is there no way I could get it quicker beacause I'd like to use the KulturPass already ?

You can provide me the mail of your PlayStore Account via mail and you can pretest the new version.
<EMAIL_ADDRESS>

Thanks you it works now


Swagger2 annotations

Leaving it here for now 'cause I have no time for writing up unit tests ;(

Hi @activey. In this project we add annotations via 'annotators' e.g. Jackson2Annotator. This is important as it allows annotations to be customized/extended/activated in a consistent way.
I think what you want here is a new annotation style: JACKSON+SWAGGER. When the AnnotatorFactory sees this annotation style is requested, it will create a CompositeAnnotator that includes a Jackson2Annotator and a Swagger2Annotator, so something like:
        case JACKSON_SWAGGER:
            return getAnnotator(new Jackson2Annotator(), new Swagger2Annotator());

You would then simply implement the Swagger2Annotator to add the annotations you need.

I believe u can use swagger annotations also with gson, they can be even used exclusively without any others.

This swagger thing here is quite similar what u have implemented for jsr303 annotations.

@activey I wasn't aware that Swagger supported anything other than Jackson 2. You may be right that a separate property is fine for this.
Happy to resurrect this if someone wants to rebase and add some integration tests. Without tests I'm afraid this is not going anywhere.

This will be a great feature to support swagger since swagger is still alive.. any plan to get this forward ?