read not returning 0 to client

I am implementing a file system using fusepy. In my filesystem, the size of the file is not known at the time of getattr being called, so I return -1.
Later, in the read call, I return how much ever data is requested in each call as long as data is available, and then an empty bytes object to signify that there is no more data. However, fusepy seems to be returning something to the client every time. Here is a minimal example, with the rest of the logic removed, to show what I mean:
import os
import sys

from fuse import FUSE, Operations

class CurlFS(Operations):

    def __init__(self):
        self.fd = 0

    def getattr(self, path, fh=None):
        st = {
            'st_atime': 0,
            'st_ctime': 0,
            'st_gid': 0,         # Owned by root
            'st_mtime': 0,
            'st_nlink': 1,
            'st_size': -1,
            'st_uid': 0,         # Owned by root
        }

        if path == ('/'):
            st['st_mode'] = 0o040777 # directory, rwx permissions to all
        else:
            st['st_mode'] = 0o100777 # regular file, rwx permissions to all

        return st

    def open(self, path, flags):
        fd = self.fd
        self.fd += 1
        return fd

    def read(self, path, length, offset, fh):
        print('read:', path)
        return b''

if __name__ == '__main__':
    FUSE(CurlFS(), sys.argv[1], nothreads=True, foreground=True)

then, in another shell:
mkdir dragons
python example.py dragons/
cat dragons/fire

The console on the shell running fusepy keeps printing:
read: /fire
read: /fire
read: /fire
read: /fire
read: /fire
read: /fire
read: /fire
read: /fire
read: /fire
read: /fire
read: /fire
read: /fire
read: /fire

and the cat command never returns.
What is the correct way to tell the client that there is no data remaining in fusepy?
I've tried using both python2.7 and python3.6. Also, with the latest version of fusepy from github

I'm not quite sure this is possible. Double checking my initial thought I don't think returning -1 is well defined. It's quite possible something somewhere on your system (FUSE) is casting -1 to an unsigned value and that means it is actually very large.
The definition of read expects you to return a buffer of length length and if you don't it will 0 fill the data to the expected length. You can see how using the direct_io mount option may be able to achieve your desired result, but you are sailing into uncharted waters
See: https://libfuse.github.io/doxygen/structfuse__operations.html#a2a1c6b4ce1845de56863f8b7939501b5

Looking at Debian and Ubuntu's man pages for fuse.mount (see direct_io#2) this option is probably what you want

I looked at the docs for fuse_operations::read:

Read should return exactly the number of bytes requested except on EOF or error

So in the case of EOF, it would be valid to return less than the number of bytes asked, or even 0 bytes. What should I use as st_size in this case, however?
Here is the problematic part, when using strace on my python application: (i disabled the print functions uses in the sample code to keep the strace cleaner)
writev(3, [{iov_base="\20\0\0\0\0\0\0\0~\5\0\0\0\0\0\0", iov_len=16}, {iov_base="", iov_len=0}], 2) = 16
read(3, "P\0\0\0\17\0\0\0\177\5\0\0\0\0\0\0\2\0\0\0\0\0\0\0\350\3\0\0\350\3\0\0"..., 135168) = 80
writev(3, [{iov_base="\20\0\0\0\0\0\0\0\177\5\0\0\0\0\0\0", iov_len=16}, {iov_base="", iov_len=0}], 2) = 16
read(3, "P\0\0\0\17\0\0\0\200\5\0\0\0\0\0\0\2\0\0\0\0\0\0\0\350\3\0\0\350\3\0\0"..., 135168) = 80
writev(3, [{iov_base="\20\0\0\0\0\0\0\0\200\5\0\0\0\0\0\0", iov_len=16}, {iov_base="", iov_len=0}], 2) = 16
read(3, "P\0\0\0\17\0\0\0\201\5\0\0\0\0\0\0\2\0\0\0\0\0\0\0\350\3\0\0\350\3\0\0"..., 135168) = 80
writev(3, [{iov_base="\20\0\0\0\0\0\0\0\201\5\0\0\0\0\0\0", iov_len=16}, {iov_base="", iov_len=0}], 2) = 16
read(3, "P\0\0\0\17\0\0\0\202\5\0\0\0\0\0\0\2\0\0\0\0\0\0\0\350\3\0\0\350\3\0\0"..., 135168) = 80
writev(3, [{iov_base="\20\0\0\0\0\0\0\0\202\5\0\0\0\0\0\0", iov_len=16}, {iov_base="", iov_len=0}], 2) = 16
read(3, "P\0\0\0\17\0\0\0\203\5\0\0\0\0\0\0\2\0\0\0\0\0\0\0\350\3\0\0\350\3\0\0"..., 135168) = 80
writev(3, [{iov_base="\20\0\0\0\0\0\0\0\203\5\0\0\0\0\0\0", iov_len=16}, {iov_base="", iov_len=0}], 2) = 16
read(3, "P\0\0\0\17\0\0\0\204\5\0\0\0\0\0\0\2\0\0\0\0\0\0\0\350\3\0\0\350\3\0\0"..., 135168) = 80
writev(3, [{iov_base="\20\0\0\0\0\0\0\0\204\5\0\0\0\0\0\0", iov_len=16}, {iov_base="", iov_len=0}], 2) = 16
read(3, "P\0\0\0\17\0\0\0\205\5\0\0\0\0\0\0\2\0\0\0\0\0\0\0\350\3\0\0\350\3\0\0"..., 135168) = 80
writev(3, [{iov_base="\20\0\0\0\0\0\0\0\205\5\0\0\0\0\0\0", iov_len=16}, {iov_base="", iov_len=0}], 2) = 16
read(3, "P\0\0\0\17\0\0\0\206\5\0\0\0\0\0\0\2\0\0\0\0\0\0\0\350\3\0\0\350\3\0\0"..., 135168) = 80
writev(3, [{iov_base="\20\0\0\0\0\0\0\0\206\5\0\0\0\0\0\0", iov_len=16}, {iov_base="", iov_len=0}], 2) = 16
read(3, "P\0\0\0\17\0\0\0\207\5\0\0\0\0\0\0\2\0\0\0\0\0\0\0\350\3\0\0\350\3\0\0"..., 135168) = 80
writev(3, [{iov_base="\20\0\0\0\0\0\0\0\207\5\0\0\0\0\0\0", iov_len=16}, {iov_base="", iov_len=0}], 2) = 16
read(3, "P\0\0\0\17\0\0\0\210\5\0\0\0\0\0\0\2\0\0\0\0\0\0\0\350\3\0\0\350\3\0\0"..., 135168) = 80
writev(3, [{iov_base="\20\0\0\0\0\0\0\0\210\5\0\0\0\0\0\0", iov_len=16}, {iov_base="", iov_len=0}], 2) = 16
read(3, "P\0\0\0\17\0\0\0\211\5\0\0\0\0\0\0\2\0\0\0\0\0\0\0\350\3\0\0\350\3\0\0"..., 135168) = 80
writev(3, [{iov_base="\20\0\0\0\0\0\0\0\211\5\0\0\0\0\0\0", iov_len=16}, {iov_base="", iov_len=0}], 2) = 16
read(3, "P\0\0\0\17\0\0\0\212\5\0\0\0\0\0\0\2\0\0\0\0\0\0\0\350\3\0\0\350\3\0\0"..., 135168) = 80
writev(3, [{iov_base="\20\0\0\0\0\0\0\0\212\5\0\0\0\0\0\0", iov_len=16}, {iov_base="", iov_len=0}], 2) = 16
read(3, "P\0\0\0\17\0\0\0\213\5\0\0\0\0\0\0\2\0\0\0\0\0\0\0\350\3\0\0\350\3\0\0"..., 135168) = 80
writev(3, [{iov_base="\20\0\0\0\0\0\0\0\213\5\0\0\0\0\0\0", iov_len=16}, {iov_base="", iov_len=0}], 2) = 16

this goes on until I Ctrl-C the process.
As far as I can see, some data is always sent back, even though my application always returns empty bytes every time read is called.
In the meanwhile, I will look at direct_io.

I must have overlooked the EOF condition. However, you're definitely seeing an issue with the -1. I modified memory.py to do the same and it hung, if I were to return a constant 1, but have read return a full buffer it would be truncated to 1 character:
diff --git a/examples/memory.py b/examples/memory.py
index 419a343..6764536 100755
--- a/examples/memory.py
+++ b/examples/memory.py
@@ -54,7 +54,9 @@ class Memory(LoggingMixIn, Operations):
         if path not in self.files:
             raise FuseOSError(ENOENT)

-        return self.files[path]
+        data = dict(self.files[path])
+        data['st_size'] = 1
+        return data

     def getxattr(self, path, name, position=0):
         attrs = self.files[path].get('attrs', {})
@@ -84,6 +86,7 @@ class Memory(LoggingMixIn, Operations):
         return self.fd

     def read(self, path, size, offset, fh):
+        return '' if offset else 'b' * min(4096, size)
         return self.data[path][offset:offset + size]

     def readdir(self, path, fh):

If you enable direct_io then cat works as expected:
diff --git a/examples/memory.py b/examples/memory.py
index 419a343..6764536 100755
--- a/examples/memory.py
+++ b/examples/memory.py
@@ -54,7 +54,9 @@ class Memory(LoggingMixIn, Operations):
         if path not in self.files:
             raise FuseOSError(ENOENT)

-        return self.files[path]
+        data = dict(self.files[path])
+        data['st_size'] = -1
+        return data

     def getxattr(self, path, name, position=0):
         attrs = self.files[path].get('attrs', {})
@@ -84,6 +86,7 @@ class Memory(LoggingMixIn, Operations):
         return self.fd

     def read(self, path, size, offset, fh):
+        return '' if offset else 'b' * min(4096, size)
         return self.data[path][offset:offset + size]

     def readdir(self, path, fh):
@@ -159,4 +174,4 @@ if __name__ == '__main__':
     args = parser.parse_args()

     logging.basicConfig(level=logging.DEBUG)
-    fuse = FUSE(Memory(), args.mount, foreground=True, allow_other=True)
+    fuse = FUSE(Memory(), args.mount, foreground=True, allow_other=True, direct_io=True)

oh, and I should mention this is what I am getting via ls
fusepy/examples> ls -la test/t
-rw-r--r-- 1 root root<PHONE_NUMBER>3709551615 Apr 17 00:38 test/t


dshape is not a type

When using a datashape.dshape in typing.Tuple I get an error saying that the dshape is not a type:
In [10]: typing.Tuple[datashape.dshape("3 * float64")]
...
TypeError: Tuple[t0, t1, ...]: each t must be a type. Got dshape("3 * float64").

I'm actually struggling to figure out what datashape is for.... As its own library it seems like it doesn't serve any purpose if it can't be used for type hinting. The documentation talks about the grammar and what types can be modeled but what is the utility of that? What can one do with that information once it has been defined?


Support mousewheel in List and ScrollArea

List::scrollBy() method is added, implementation is only done for vertical list so far. Still need to do it for horizontal list.

magically, it appeared that no code modifications are needed for horizontal list.


⚠ Bofrost.be has degraded performance

In ced55ae, Bofrost.be (https://www.bofrost.be) experienced degraded performance:

HTTP code: 200
Response time: 1956 ms

Resolved: Bofrost.be performance has improved in 41d61c0 after 44 minutes.


Add WebAPI Scenarios

Summary

Added a new section to the eShop porting chapter
Added HttpResponseMessage guidance
Added Content Negotiation guidance
Added WebAPI/MVC -> ASP.NET MVC guidance
Added link to IIS sample repo used in previous chapter

@IEvangelist @scottaddie please review. Adding additional porting scenarios.
I have about 10 more small scenarios to add. I'd like to add them all to the new .md file introduced in this PR. I'd like to get it merged quickly so the file exists for me to apply follow-on PRs to, if possible. Each scenario should only be a few paragraphs of additional content for review. Thanks!

:shipit: ?


Make native returns consistent

Its currently very hard to finish test coverage, especially around native code which would be handy for new platforms like browser-serialport and for recent talk of a large refactor.
Flush for instance:
In unix we return the result of tcflush
https://github.com/voodootikigod/node-serialport/blob/master/src/serialport_unix.cpp#L695
which is " Upon successful completion, 0 is returned. Otherwise, -1 is returned and errno is set to indicate the error."
In windows nothing is currently returned
https://github.com/voodootikigod/node-serialport/blob/master/src/serialport_win.cpp#L482
but if you did you have access to "If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero. To get extended error information, call GetLastError.

Researching this some more. TLDR want to make unix flush/drain/set deal with their error codes locally like windows does and just fill errorstring. Anyone have a problem with generalizing our hyper specific native error messages?

UNIX
open loads data->result with file handle and data->errorString with message
"Invalid data bits setting %d", data->dataBits
"Cannot open %s", data->path
"Invalid parity setting %d", data->parity
"Invalid stop bits setting %d", data->stopBits
"Error %s calling ioctl( ..., IOSSIOSPEED, %ld )", strerror(errno), speed )
write loads data->result with bytes written and data->errorString with message
"Error %s calling write(...)", strerror(errno)
close loads data->errorString with message
"Unable to close fd %d, errno: %d", data->fd, errno
list loads data->results with the list, doesnt currently use data->errorString
flush loads data->result with result of tcflush, doesnt currently use data->errorString
drain loads data->result with result of tcdrain, doesnt currently use data->errorString
set loads data->result with result of ioctl, doesnt currently use data->errorString
WINDOWS -ignoring polling
all errors are prefixes to the error code translated to text
%s: File not found, prefix
%s: Invalid handle, prefix
%s: Access denied, prefix
%s: operation aborted, prefix
%s: Unknown error code %d", prefix, errorCode
open loads data->result with file handle and data->errorString with message
"BuildCommDCB"
"SetCommState"
"SetCommTimeouts"
"Opening %s", data->path
write loads data->result with bytes written and data->errorString with message
"Writing to COM port (WriteFile)"
"Writing to COM port (GetOverlappedResult)"
close loads data->errorString with message
"closing connection"
list loads data->results with the list, doesnt currently use data->errorString
flush loads data->errorString with message
"flushing connection"
drain loads data->errorString with message
"draining connection"
set loads data->result with result of SetCommMask, doesnt currently use data->errorString


Added better error message for a nonstring marker

Dahlia(marker=[1]) currently raises TypeError: can only concatenate list (not "str") to list.
changed to TypeError: the marker has to be a string
added test to test nonstring values

Hi, please format your code with Ruff :+1: (I think it's just a matter of spacing between functions)


PANIC: called Option::unwrap() on a None value in query-engine/core/src/response_ir/internal.rs:334:86

Hi Prisma Team! My Prisma Client just crashed. This is the report:
Versions

Name
Version

Node
v16.3.0

OS
linux-musl

Prisma Client
3.0.1

Query Engine
0.1.0

Database
postgresql

Logs
 sending request, this.libraryStarted: true
prisma:client:libraryEngine sending request, this.libraryStarted: true
prisma:client:libraryEngine sending request, this.libraryStarted: true
prisma:client:libraryEngine sending request, this.libraryStarted: true
prisma:client:libraryEngine sending request, this.libraryStarted: true
prisma:client:libraryEngine sending request, this.libraryStarted: true
prisma:client:libraryEngine sending request, this.libraryStarted: true
prisma:client:libraryEngine sending request, this.libraryStarted: true
prisma:client:libraryEngine sending request, this.libraryStarted: true
prisma:client:libraryEngine sending request, this.libraryStarted: true
prisma:client:libraryEngine sending request, this.libraryStarted: true
prisma:client:libraryEngine sending request, this.libraryStarted: true
prisma:client:libraryEngine sending request, this.libraryStarted: true
prisma:client:libraryEngine sending request, this.libraryStarted: true
prisma:client:libraryEngine sending request, this.libraryStarted: true
prisma:client:libraryEngine sending request, this.libraryStarted: true
prisma:client:libraryEngine sending request, this.libraryStarted: true
prisma:client:libraryEngine sending request, this.libraryStarted: true
prisma:client:libraryEngine sending request, this.libraryStarted: true
prisma:client:libraryEngine sending request, this.libraryStarted: true
prisma:client:libraryEngine sending request, this.libraryStarted: true
prisma:client:libraryEngine graphQLToJSError
prisma:client:request_handler Error: called `Option::unwrap()` on a `None` value
    at LibraryEngine.prismaGraphQLToJSError (/node_modules/@prisma/client/runtime/index.js:25128:14)
    at LibraryEngine.request (/node_modules/@prisma/client/runtime/index.js:25143:24)
    at async RequestHandler.request (/node_modules/@prisma/client/runtime/index.js:37288:24)
    at async ChatService.getAllRooms (/dist/src/chat/chat.service.js:69:20)
prisma:client:libraryEngine sending request, this.libraryStarted: true
prisma:client:libraryEngine sending request, this.libraryStarted: true
prisma:client:libraryEngine sending request, this.libraryStarted: true
prisma:client:libraryEngine sending request, this.libraryStarted: true
prisma:client:libraryEngine sending request, this.libraryStarted: true
prisma:client:libraryEngine sending request, this.libraryStarted: true
prisma:client:libraryEngine sending request, this.libraryStarted: true
prisma:client:libraryEngine sending request, this.libraryStarted: true
prisma:client:libraryEngine sending request, this.libraryStarted: true
prisma:client:libraryEngine sending request, this.libraryStarted: true
prisma:client:libraryEngine sending request, this.libraryStarted: true
prisma:client:libraryEngine sending request, this.libraryStarted: true
prisma:client:libraryEngine sending request, this.libraryStarted: true
prisma:client:libraryEngine sending request, this.libraryStarted: true
prisma:client:libraryEngine sending request, this.libraryStarted: true
prisma:client:libraryEngine sending request, this.libraryStarted: true
prisma:client:libraryEngine sending request, this.libraryStarted: true
prisma:client:libraryEngine sending request, this.libraryStarted: true
prisma:client:libraryEngine sending request, this.libraryStarted: true
prisma:client:libraryEngine sending request, this.libraryStarted: true

Client Snippet
    try {
      return await this.prismaService.room.findMany({
        where: { members: { some: { id: { equals: user.id } } } },
        orderBy: { createdAt: 'desc' },
        take: 3,
        include: {
          proposal: true,
          members: {
            select: {
              avatar: true,
              firstName: true,
              lastName: true,
            }
          },
          messages: {
            orderBy: { createdAt: 'desc' },
            take: 1,
            include: { user: { select: myUserSelect } },
          },
        },
      });
    } catch (error) {
      this.logger.error(error);
      throw new InternalServerErrorException(
        "Oups! quelque chose s'est mal pass√© essaie encore",
      );
    }

Error from try catch
Invalid `prisma.room.findFirst()` invocation:

  PANIC: called `Option::unwrap()` on a `None` value in query-engine/core/src/response_ir/internal.rs:334:86

This is a non-recoverable error which probably happens when the Prisma Query Engine has a panic.

happens with room.findFirst() and room.findMany()
I can't post the whole schema, but here is a snippet of models that have direct contact with rooms,
This error happens only with the rooms models and doesn't always happen.
The bigger issue is when this happens the whole app crashes down, even though I'm try-catching the error.
Schema
generator client {
  provider        = "prisma-client-js"
  previewFeatures = ["interactiveTransactions"]
}

datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
}

generator nestjsDto {
  provider = "prisma-generator-nestjs-dto"
  output   = "../src/generated"
}

model User {
  id                   String                 @id @default(cuid())
  rooms                Room[]
  roomId               String?
  /// @DtoReadOnly
  createdAt            DateTime               @default(now())
  /// @DtoReadOnly
  updatedAt            DateTime               @updatedAt
}

model Room {
  id        String    @id @default(cuid())
  /// @DtoRelationRequired
  /// @DtoRelationCanConnectOnCreate
  members   User[]
  /// @DtoRelationRequired
  /// @DtoRelationCanConnectOnCreate
  proposal  Proposal?
  /// @DtoRelationRequired
  /// @DtoRelationCanConnectOnCreate
  offer     Offer?
  messages  Message[]
  /// @DtoReadOnly
  createdAt DateTime  @default(now())
  /// @DtoReadOnly
  updatedAt DateTime  @updatedAt
}
model Message {
  id                    String   @id @default(cuid())
  /// @DtoRelationRequired
  content               String
  emailNotificationSent Boolean? @default(false)
  user                  User     @relation(fields: [userId], references: [id])
  userId                String
  /// @DtoRelationRequired
  /// @DtoRelationCanConnectOnCreate
  room                  Room?    @relation(fields: [roomId], references: [id])
  roomId                String?
  /// @DtoReadOnly
  createdAt             DateTime @default(now())
  /// @DtoReadOnly
  updatedAt             DateTime @updatedAt
}

model Offer {
  id           String         @id @default(cuid())
  room               Room?      @relation(fields: [roomId], references: [id])
  roomId             String?
  isDeleted              Boolean                 @default(false)
  /// @DtoReadOnly
  createdAt              DateTime                @default(now())
  /// @DtoReadOnly
  updatedAt              DateTime                @updatedAt
  teacherAssignedOffers  TeacherAssignedOffers[]
}
model Proposal {
  id             String         @id @default(cuid())
  room           Room?          @relation(fields: [roomId], references: [id])
  roomId         String?
  createdAt      DateTime       @default(now())
  /// @DtoReadOnly
  updatedAt      DateTime       @updatedAt

}

Prisma Engine Query
{"X":{}}

I get the same error. Did you find a cause or solution?

Nope, I just made a workaround to fetch rooms from the user entity 🙃

Not sure it's related, but we get Rust panic after a few minutes of making a lot of upserts:
https://github.com/prisma/prisma/issues/10049

Not sure if a query is too complex or has a lot of nested inclusion does this. It happened today for me with this query:
  async getMyOffers(
    resUser: User,
    filterPaginationDto: OfferFilterPaginationDto,
  ) {
    try {
      const user = await this.prismaService.user.findUnique({
        where: { id: resUser.id },
      });
      if (!user) {
        throw new NotFoundException("Cet utilisateur n'existe pas");
      }

      const { page = 1, limit = 10 } = filterPaginationDto;

      const skip = (+page - 1) * +limit;
      const take = +limit;

      const totalCount = await this.prismaService.offer.count({
        where: {
          isDeleted: false,
          student:
            user.role === 'student' ? { user: { id: resUser.id } } : undefined,
        },
      });
      const offers = await this.prismaService.offer.findMany({
        where: {
          isDeleted: false,
          student:
            user.role === 'student' ? { user: { id: resUser.id } } : undefined,
        },
        take,
        skip,
        orderBy: {
          createdAt: 'desc',
        },
        include: {
          acceptedProposal: {
            include: {
              teacher: {
                include: {
                  user: {
                    select: {
                      id: true,
                      email: true,
                      avatar: true,
                      firstName: true,
                      lastName: true,
                      createdAt: true,
                    },
                  },
                },
              },
            },
          },
          potentialProposals: {
            include: {
              teacher: {
                include: {
                  user: {
                    select: {
                      id: true,
                      email: true,
                      avatar: true,
                      firstName: true,
                      lastName: true,
                      createdAt: true,
                    },
                  },
                },
              },
            },
          },
          student: {
            include: {
              user: {
                select: {
                  id: true,
                  email: true,
                  avatar: true,
                  firstName: true,
                  lastName: true,
                  createdAt: true,
                },
              },
            },
          },
          subject: true,
          level: true,
          files: true,
        },
      });

      return {
        page: +page,
        limit: +limit,
        totalCount,
        results: offers,
      };
    } catch (error) {
      this.logger.error(error);
      throw new InternalServerErrorException(
        "Oups! quelque chose s'est mal pass√© essaie encore",
      );
    }
  }

I get same error!

Please everyone posting share everything that could influence the occurrence of this crash.
What is your Prisma version (prisma -v)?
What OS? What Node version? What database and version?
What is similar in the Prisma Client queries you are running?
And most important: Does anyone have a (kinda) reliable reproduction of what is happening?

I ran into this error this morning when using mongodb and trying to connect records and forgetting to add the relations and object.ids array etc.
https://www.prisma.io/docs/concepts/components/prisma-schema/relations/many-to-many-relations#mongodb
Adding the explicit relations to the schema with the array of ObjectId's and working great now.
model Category {
  id      String   @id @default(dbgenerated()) @map("_id") @db.ObjectId
  postIDs String[] @db.Array(ObjectId) // had forgotten to add this value with string[] of ObjectId
  posts   Post[]   @relation(fields: [postIDs]) // and this "@relation"
}

Interesting @NickFoden - Can you maybe split that off into its own issue and describe all the things you did so we can reproduce this in context of Prisma MongoDB? That would be neat. Thanks

Hey @baba43 @elie222 @yassinebridi @kissmystic Are you still experiencing this problem? If so, can you please provide some additional information that will help us reproduce this so we can actually fix it? Otherwise we will have to close this issue. Thanks.

We ended up solving it by removing nested inserts/updates and doing it in multiple steps within a transaction. A little annoying. I don't know if it's still an issue.
It's difficult to reproduce. I tried with a simple repo at the time but wasn't able to although the problem would happen consistently.

Can you maybe still come up with a before (when it was failing) and after (your simplified version) of the Prisma Client queries? That might give some pointers what is going on and might also help the others in this thread see if they are doing similar things.

Ping @baba43 @elie222 @yassinebridi @kissmystic again - can you maybe help us out here? Otherwise, we will need to close this issue although it seems to be a real problem. Thanks.

Closing then until someone provides more information. Please comment or open a new issue. Thanks!


Collections: Support event-log write operation where existing file is renamed and history is kept

To be completed

@zone117x will work with @yknl to update this issue with the latest thinking

@zone117x @yknl Is one of you actually working on this at the moment or should we move it to the backlog for now? It's been "in progress" for a month now.

This is currently in progress


dice loss

In which folder is dice loss located?

Hi @huzkun
Thank you for your interest in SeaBird. The dice loss is implemented here:
https://github.com/abhi1kumar/SeaBird/blob/0fd45183128f7d8615263e330484e2545004607c/HoP/mmdet3d_plugin/models/dense_heads/loss_utils.py#L22-L38
PS: It would be great if you could support our repo by starring it.

Thanks for your answer, seabird is a great job.


Bus Factor

Your project is fork of libusb-sys crate, which was abandoned, may be some time later you lose motivation or some other reasons (Bus Factor) for abandon support this crate
Many peoples interested in rust usb support, to avoid busfactor i propose two choises:

please join to rustbus initiative
or join to my hal-rs initiative as member to track and keep up to date hardware related crates, i annoce my initiative on reddit litle bit later to involve developers

Done


💡 RFC:  Pass target option tgo esbuild transform call

Motivation
Simplification of the build pipeline by not requiring esbuild optimization after esbuild transformation in order to target something other than esnext
Proposed solution
Possible solutions
esbuild transform already takes target so passing it is easy enough. It's currently only surfaced in optimize section of config but it seems like it would fit well into buildOptions as well.
Risks, downsides, and/or tradeoffs
Having target in two places might be confusing since it doens't make too much sense to have them differ.
Detailed design
No response
Open questions
No response
Help make it happen!

[ ] I am willing to submit a PR to implement this change.
[X] I am willing to submit a PR to implement this change, but would need some guidance.
[ ] I am not willing to submit a PR to implement this change.

We are already considering this! This will be a part of our planned Snowpack v4 work, hinted at by the “multi-platform targeting.” This is a major (breaking) change, so we can’t ship something easily in 3.x with one PR.
I’m going to close this issue as it’s already planned/captured elsewhere, but TL;DR we agree 🙂


docs: fix spelling/usage of "sufficient"

📝 Description
Fixes a misspelling and small grammar issue in the docs for the "SkipNav" components.
⛳ Current behavior (updates)
The word "sufficient" is spelled wrong. It's also paired with "enough," while the word "sufficient" by itself is... well... sufficient 😄
🚀 New behavior
I corrected the typo and removed the unneeded word.
💣 Is this a breaking change (Yes/No):
No
📝 Additional Information

Good catch! Thanks @jrgermain 🙌


Better Scientific Software Fellowship info

Please update the following:
https://github.com/betterscientificsoftware/betterscientificsoftware.github.io/blob/master/Site/BSSwFellowshipProgram.md

Done.


[spike]DCOS_OSS-5217: improve Storybook documentation

I made some improvements to component and color documentation:

improved how we show the source of stories
cleaned up colors table and made all color names fully visible with a Tooltip
made form component stories more consistent

One of the improvements to showing story source is to use Storybook's storysource addon. This addon moves the story source into the addons panel at the bottom of Storybook. If any reviewers don't like using this addon, I can put the story source inline with the component demo where it used to live.
Screenshots
Improved story source
Before (useful code example is obscured by a helper component)

After (useful code examples are visible, and the full story source can be browsed)

Cleaned up color grid
Before

After

@mperrotti
awesome stuff!!!
I was going to file a jira actually from some needs here!

Is it possible to see the colors values from such in some manner ? (right on the tile, sidebar if click, on hover, etc..)
find out easily what hex value is and be able to copy and paste. hsla nice too especially if capture transparencies in future but that may be in future.

@DanielMSchmidt - definitely possible. File a ticket and I'll tackle that in the next spike day.
It would also be cool to include color contrast accessibility info :)


Apply fixes from CodeFactor

This pull request applies style fixes from code review by CodeFactor.

For more information, click here.

it was a test


Script based harvesting

Looking at Supplejack's features, noticed a blurb about scripting the ingest of materials.  Would be interesting to see how this might be possible with Combine.
Ingest (== harvesting) is currently only OAI and static files, but what if it supported raw python code, where it must just return the string of the Record metadata and, optionally, a record_id?
It would probably be difficult, if not outright a bad idea, to have this work with Spark.  But it could run as a background task.

Thinking more on this, can see where harvesting from SQL or Mongo might be a helpful feature, and would be relativively painful to provide parameters and handle this in Spark.
Script-based harvesting is still tricky.  It would be nice to provide a place where users could script unusual or unique harvests (e.g. from an API), but it would be hard to run this efficiently in spark.
An obvious approach would be to have users write pyspark code.  These could be saved as files, and uploaded, then called by some boilerplate harvesting code like other Jobs:
from user_generated_file import custom_harvest_class
results = custom_harvest(job_id, etc, etc).harvest()

where custom_harvest_class is based on a known structure for custom harvesting.


Touch up the detailed schedule

Using markdown tables for the actual schedule will make it easier to edit in the future.

Thank you! 'Was going to tackle this today - just wanted to get the
schedule up ASAP.
-Lauren
Lauren Michael - Research Computing Facilitator, Center for High Throughput
Computing http://chtc.cs.wisc.edu/, University of Wisconsin - Madison
Other Affiliations: Advanced Computing Initiative
http://aci.wisc.edu/; Wisconsin
Institute for Discovery http://wid.wisc.edu/profile/lauren-michael/;
ACI-REF http://aci-ref.org/
<EMAIL_ADDRESS>www.tinyurl.com/LMichaelCalendar, Discovery 2262,
(608)316-4430
On Mon, Jun 25, 2018 at 9:45 AM, Brian Lin<EMAIL_ADDRESS>wrote:

@brianhlin https://github.com/brianhlin requested your review on:
opensciencegrid/user-school-2018#25
https://github.com/opensciencegrid/user-school-2018/pull/25 Touch up
the detailed schedule.
—
You are receiving this because your review was requested.
Reply to this email directly, view it on GitHub
https://github.com/opensciencegrid/user-school-2018/pull/25#event-1699120032,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ADmlRDs3qOYvV2J7pY4bkLiQxRw7Zibcks5uAPd4gaJpZM4U2Sfb
.

I am not happy with this change at all. It loses all ability to format individual rows with CSS classes, which the old (TWiki) version had.

What different classes of rows do you want to differentiate between? I'm sure we can handle it without needing to have raw HTML in the contents

Please look at the original HTML. I understand that the MD-converted version does not show the colors when rendered, because the CSS got stripped out. But the classes are all there in the HTML.

Yea, I see that. I was suggesting that we find another way to differentiate between the different types of "Events" that is better supported in the MkDocs ecosystem instead of having to maintain HTML/CSS.

And what is your proposal? Markdown is so underpowered that nothing came to mind immediately.  That’s just inventing yet another language, effectively.

That goes back to my original question: what different classes of rows do you want to differentiate between? The classes I see are meal, time, break, and "inst". And also, why? We can highlight meals/breaks with a simple solution like bolding them; I'm not sure what an "inst" is; and what's the point of having a class for times?
I'd gladly give up the fine-grained control of making single cells in a table look a certain way so that instructors can easily edit the detailed schedule. A mess of HTML and CSS for a very minor feature strikes me as the antithesis to "don't make me think".

I am done with this thread. I believe the original table was more user-friendly than the Markdown one. I do not care whether the source code is DMMT — we are technology professionals and my expectation is that anyone in the group should be able to handle something as easy as HTML and some very lightweight CSS. But I don’t have the time to convince you of the usefulness of clear formatting for users.


Proposed model of event processes in HED

The HED Working Group has proposed the following working model of event processes:
Temporal marker:  A point identified with a time.
Event process (i.e. event):   (need a definition). A process with an onset and an offset.
HED currently supports two models of event processes:

Point events Event process of zero duration, modelled by a single temporal marker that is both the onset and offset.
Events of temporal extent:    Events that are modelled by two temporal markers (onset and offset).

Proposal: Augment HED with three additional models of event processes:
3.  Events with intermediate temporal markers
4.  Events that represent a partition of subevent processes
5.  Events that contain one or more possibly overlapping subevent processes
Model 1:    Single line in the BIDS events file.
Use case:  Simple stimulus or response in a classical experiment.

1.5   Sensory-event, ...

Model 2:    Process must be defined and be associated with separate lines in the BIDS events file represent the onset and offset, respectively.
Use case:   A image is shown for a long period.  The Event-context derived from the Onset and Offset allow annotations for intermediate events to contain the information that the image was being displayed.

1.5    (Def/Process/1, Onset)
. . .
3.5   (Def/Process/1, Offset)

Model 3:  Process must be defined.  Intermediate points may be defined. Use Ref tag to identify.
Use case:  Clinician marks the start and end of a seizure and then wishes to attach a clinical note or feature annotation to an intermediate point.

1.5    (Def/Process/1, Onset)
. . .
3.2   (Ref/Process/1, (Temporal-marker, ((Acceleration, Hand), Data-maximum))))
3.5   (Def/Process/1, Offset)

Model 4: Process with sub-process partition -- the onset of the next element of the partition marks offset of previous.
Use case:  A movie consists of scenes...scenes consist of shots....

1.5    (Def/Movie/1, Onset)
1.5    (Def/Scene/1, (Partition-of, Def/Movie/1))
. . .
3.2   (Def/Scene/2, (Partition-of, Def/Movie/1))
3.5   (Def/Movie/1, Offset)

Model 5: Multiple possibly overlapping subevent processes.
Use case: A subject's motion consists of the movement of individual limbs, each of which can be considered an event process with its own onsets and offsets, which may not be related to each other.

1.5    (Def/Subject-movement/1, Onset)
2.5    (Def/Hand-movement/3, (Subprocess-of, Subject-movement/1), Onset)
. . .
3.2   (Def/Foot-movement/4, (Subprocess-of, Subject-movement/1), Onset)
3.34 (Def/Hand-movement/3, Offset)
. . .
3.4 (Def/Foot-movement/4, Offset)
3.5   (Def/Subject-movement/1, Offset)

Request comments and suggestions for tag names for Partition-of  and Subprocess-of
@arnodelorme, @sappelhoff @dorahermes @happy5214 @dungscout96 @IanCa @monique2208 @smakeig @tpatpa @neuromechanist

On second thought, my initial suggestion to make 'Ref/EVENT_INSTANCE' refer only to an 'ongoing' event may be too restrictive, as we might could use the 'Ref/' construct to annotate relationships between non-overlapping events ...

Use Case 3 should read: Analyst marks time point of maximum accelerate of hand motion in a hand movement event.

Model 3b:  Use Ref tag to identify a defined event using a defined marker.
Use case: Analyst marks time point of maximum acceleration of hand motion in a hand movement event, including some individual marker parameter(s) ( ... ).
1.5 (Def/Process/1, Onset)
. . .
3.2 (Ref/Process/1, (Def/Max-accel, ( ... ))
3.5 (Def/Process/1, Offset)

?Could Case 4 also use additional parameters as in:
1.5 (Def/Scene/1, (Partition-of, Def/Movie/1, ( ... )))

Possibly,
event tagged as Partition-of --> (Phase-of, Event) marker tagged as Temporal-marker --> (Marker-of, Event)
using this model: [--------------EventProcess---------------------] % an event ...
                                    [ EvPhase  |  EvPhase          |    EvPhase                   ]  % with 3 phases ...
                                                      ^                         ^
                         ELSE                     |                          |
                                                EvMarker            EvMarker                                % or, with 2 intermediate markers

That is, either record the Event/1 phases (sub-events), OR record its phase boundary markers (event phase markers) ...

Sorry, I don't follow this example.

Question:   Do event markers have context, or events ? ... Yes, both events and event markers should have context (as, in a movie, "He began to speak just as they began hurtling over the falls." Here, both the Onset and (sudden!) Offset of his utterance have distinct meanings as regards brain dynamics within context!  Whereas in, "He told her he loved her during a quiet scene in the movie they were watching," the entire utterance (as event) occurs within the context of a longer (movie) event.   Aided by tachistoscopic (sudden) presentation practice, measures of event-related brain dynamics (ERPs, ERSPs, etc.) have focused on event-marker-related (e.g., onset-related) dynamics. Methods for event-related dynamics per se (e.g., perturbations in brain dynamics occurring during an event not related to its (sudden or un-sudden) onset) have not been specifically developed.  Though I suppose the methods Julie and I developed for the emotion imagination study are an example of such a method (e.g., source-resolved spectral changes during/through an long-duration event). One might add to this, changes in source network dynamics, etc...

Every point in time has a context, which is defined as what is unfolding at that instant in time.
HED can calculate the "context" at ANY point in time, not just at the event markers.
At a given time marker, HED distinguishes between what is actually happening at that marker (HED tags out side of the Event-context tag group which are the tags associated directly with the marker) from the context derived from the ongoing event processes.
Only event processes contribute information to the Event-context tag group.
To clarify:  event processes contribute to the Event-context at other points in time than their onset.
In:

"He began to speak just as they began hurtling over the falls."

The word "began" implies a process with temporal extent.

If only events (and not markers) contribute to context, then for a (e.g.,
movie) event subdivided by scene-change markers, each scene must be treated
by HED as an event.  How is this to be done?
Scott
On Tue, Dec 6, 2022 at 11:14 AM VisLab @.***> wrote:

Every point in time has a context, which is defined as what is unfolding
at that instant in time.
HED can calculate the "context" at ANY point in time, not just at the
event markers.
At a given time marker, HED distinguishes between what is actually
happening at that marker (HED tags out side of the Event-context tag
group which are the tags associated directly with the marker) from the
context derived from the ongoing event processes.
Only event processes contribute information to the Event-context tag
group.
To clarify: event processes contribute to the Event-context at other
points in time than their onset.
In:
"He began to speak just as they began hurtling over the falls."
The word "began" implies a process with temporal extent.
—
Reply to this email directly, view it on GitHub
https://urldefense.com/v3/__https://github.com/hed-standard/hed-schemas/issues/42*issuecomment-1339617218__;Iw!!Mih3wA!FT0JVCShhruO4Xlaik3jciy0yDMOPHQQjCcdgaTAW0t76H2IH6GHd7WEGetngSKmZcJ_9e3_j89rJ4cf5mqaGpFI$,
or unsubscribe
https://urldefense.com/v3/__https://github.com/notifications/unsubscribe-auth/AKN2SFQQOOHAJCXJG6FV2MTWL5Q3VANCNFSM6AAAAAASUWXQ54__;!!Mih3wA!FT0JVCShhruO4Xlaik3jciy0yDMOPHQQjCcdgaTAW0t76H2IH6GHd7WEGetngSKmZcJ_9e3_j89rJ4cf5mKDUEUD$
.
You are receiving this because you were mentioned.Message ID:
@.***>

--
Scott Makeig, Research Scientist and Director, Swartz Center for
Computational Neuroscience, Institute for Neural Computation, University of
California San Diego, La Jolla CA 92093-0559, http://sccn.ucsd.edu/~scott

Monique -
Yes, BIDS only records event onset markers - not events themselves (or
their nature, other than as e.g. trigger codes). HED annotates the more
detailed nature of the events to which the onset markers (lines in the
events.tsv files) represent. HED has no direct representation of events
either -
Although -- Kay, is there a stack buffer in the HED context code to say
which events are current? If so (or else), how are events represented in
the context code?
Monique - HED does not consider events as ever having 0 duration, though
putting an actual or implied 0 in the Duration column of an events/tsv file
entry will in effect say that -- good example: button press responses,
which have always been (erroneously) treated by the field as zero-duration
events.
Scott
On Wed, Dec 7, 2022 at 4:15 AM monique2208 @.***> wrote:

I have a question related to the current models of event processes.
The way I read it suggest that HED views processes that do not have onset
and offset marked as zero-duration. But this is not how it currently is in
BIDS, where there is also information in the duration column. This duration
is already used by fitlins to model events, not as a single point.
Are model 1 and 2 truly model different event-processes, or are they two
representations of the same thing. Onset and duration can be translated
into onset and offset.
I am concerned because using duration is the current BIDS standard. When
we extent event processes, they need to work together properly so we can
calculate context appropriatly, and to associate the right events with each
other. If we model events that are not associated with an onset and offset
as single points, can we partition them? Can we associate temporal markers
to them?
Or do we want people to not use model 1 anymore?
—
Reply to this email directly, view it on GitHub
https://urldefense.com/v3/__https://github.com/hed-standard/hed-schemas/issues/42*issuecomment-1340629904__;Iw!!Mih3wA!AIRJ9UaIGJaMDSQSrYQjzGb_PeGgXGwhQBwyiqOEgKcQWvSX8Fg1FglAtqDXlI6vUaoIPMceflCFWDTubM69WQy7$,
or unsubscribe
https://urldefense.com/v3/__https://github.com/notifications/unsubscribe-auth/AKN2SFUFT4J737AZ5X5LX53WMBITDANCNFSM6AAAAAASUWXQ54__;!!Mih3wA!AIRJ9UaIGJaMDSQSrYQjzGb_PeGgXGwhQBwyiqOEgKcQWvSX8Fg1FglAtqDXlI6vUaoIPMceflCFWDTubK39HpIZ$
.
You are receiving this because you were mentioned.Message ID:
@.***>

--
Scott Makeig, Research Scientist and Director, Swartz Center for
Computational Neuroscience, Institute for Neural Computation, University of
California San Diego, La Jolla CA 92093-0559, http://sccn.ucsd.edu/~scott

The way I read it suggest that HED views processes that do not have onset and offset marked as zero-duration. But this is not how it currently is in BIDS, where there is also information in the duration column. This duration is already used by fitlins to model events, not as a single point.

It depends on how you tag this.  We haven't completely fleshed out the specification, but the section in the specification on Temporal scope explains how if you tag assign HED tags to the BIDS duration column, tools should expand this information in the Event-context of intermediate events.
(We will need the [ ] in the sidecars as is under discussion so that the Duration tag can be correctly applied to the correct tags when the HED tags are assembled for the event.)

Are model 1 and 2 truly model different event-processes, or are they two representations of the same thing. Onset and duration can be translated into onset and offset.

They are the same if every line in the event file represents exactly one event process.  However.....
In reality, in most real experiments a temporal marker can represent many things happening.  For example, in the Wakeman-Hanson Face data, The following HED tags are associated with the showing of the stimulus face:

Sensory-event, Experimental-stimulus, (Def/Face-image, Onset),(Def/Blink-inhibition-task, Onset), (Def/Cross-only, Offset)

These tags indicate that the experimental stimulus (display of the face image occurs), but also that the fixation cross turns off and that the participant is supposed to stop blinking when the face appears.  The BIDS duration if used, would probably be associated with how long the face image is displayed, but in more complicated situations --- the data on openNeuro is often ambiguous.
The HED solution (assuming we've got Square brackets) is:

Sensory-event, Experimental-stimulus, (Def/Face-image, [duration]),(Def/Blink-inhibition-task, Onset), (Def/Cross-only, Offset)

and the duration column would have the associated HED tags Duration/#.

The way I read it suggest that HED views processes that do not have onset and offset marked as zero-duration. But this is not how it currently is in BIDS, ...

Thanks, @VisLab, for the clarification on the duration.
Looking at your paper, Robbins et al. NeuroImage 2021, I also got the impression that it is more preferred to have the Onset-Offset markers than the duration, precisely as it gives the possibility to have multiple tags tied to the same key.
However, this might raise the question that this scenario (i.e., multiple tags triggered at the same latency) usually is the case that happens. The only model with the Duration tag, would be model 4, with the sub-process partition.
Having all models that imply a duration defined as an Onset-Offset pair and model 4 as duration would result in a BIDS events table with n/a for the duration column for all rows except the sub-process partitions. I think this might be unnecessarily inconsistent, not optimal for the human reader, and confuses them why some intervals are provided as Onset-Offset while some have duration.

HED does not consider events as ever having 0 duration, though putting an actual or implied 0 in the Duration column of an events/tsv file entry will in effect say that -- good example: button press responses, which have always been (erroneously) treated by the field as zero-duration events.

I'll have to disagree with this statement.  Model 1 is for "point" events. Point events are relevant and useful. All of our representations of events are "models" of reality. Different models are useful in different situations.

Kay - I feel quite against combining events into a single HED string.
Rather, for your example:
xx.xxx  Sensory-event, Experimental-stimulus, (Def/Face-image, Onset)
% one event per entry (row) in the events.tsv table
*
% [BY THE WAY:  searching for
'sensory-event' on the schema page returns an incorrect response]*
xx.xxx  Experiment-structure, Def/Blink-inhibition-task, Onset)
% Yes, here someone would have to write a script to add these
task-condition events to the events.tsv files.
*
%    But HED could provide
that tool ...*
*xx.xxx Sensory-event, Experimental-stimulus, (*Def/Cross-only,
Offset)       % And here, there should be a possible referent to the
particular 'cross-only' event *
*
%    (to also be able to
handle the overlapping events problem)

...*
xy.yyy Experiment-structure*, Def/Blink-inhibition-task, Offset)        *

On Wed, Dec 7, 2022 at 11:13 AM VisLab @.***> wrote:

Are model 1 and 2 truly model different event-processes, or are they two
representations of the same thing. Onset and duration can be translated
into onset and offset.
They are the same if every line in the event file represents exactly one
event process. However.....
In reality, in most real experiments a temporal marker can represent many
things happening. For example, in the Wakeman-Hanson Face data, The
following HED tags are associated with the showing of the stimulus face:
Sensory-event, Experimental-stimulus, (Def/Face-image,
Onset),(Def/Blink-inhibition-task, Onset), (Def/Cross-only, Offset)
These tags indicate that the experimental stimulus (display of the face
image occurs), but also that the fixation cross turns off and that the
participant is supposed to stop blinking when the face appears. The BIDS
duration if used, would probably be associated with how long the face
image is displayed, but in more complicated situations --- the data on
openNeuro is often ambiguous.
The HED solution (assuming we've got Square brackets) is:
Sensory-event, Experimental-stimulus, (Def/Face-image,
[duration]),(Def/Blink-inhibition-task, Onset), (Def/Cross-only, Offset)
and the duration column would have the associated HED tags Duration/#.
—
Reply to this email directly, view it on GitHub
https://urldefense.com/v3/__https://github.com/hed-standard/hed-schemas/issues/42*issuecomment-1341212533__;Iw!!Mih3wA!Gzypzgwkw1UAKvzt-bRZzzfeQdiyjn-y-Bqsn07dazr__ydFq5dH9Y9X2R029ldwXhIRNIdAbZTqK8dM7hB4E61U$,
or unsubscribe
https://urldefense.com/v3/__https://github.com/notifications/unsubscribe-auth/AKN2SFU5WNZWUBKSVKGMDQLWMCZRPANCNFSM6AAAAAASUWXQ54__;!!Mih3wA!Gzypzgwkw1UAKvzt-bRZzzfeQdiyjn-y-Bqsn07dazr__ydFq5dH9Y9X2R029ldwXhIRNIdAbZTqK8dM7oUTeSoh$
.
You are receiving this because you were mentioned.Message ID:
@.***>

--
Scott Makeig, Research Scientist and Director, Swartz Center for
Computational Neuroscience, Institute for Neural Computation, University of
California San Diego, La Jolla CA 92093-0559, http://sccn.ucsd.edu/~scott

...is there a stack buffer in the HED context code to say which events
are current? If so (or else), how are events represented in the context
code?

When the HED tags are assembled for an event (by analysis tools), an
(Event-context ..) tag group is created. It has the information about
ongoing "events" in the sense of what tags are active.

How is a tag 'active'?  For example  '../Green' is a tag (saying something
green is or was shown, or imagined...). Is it 'green-ness' that is active,
or the event (e.g., sensory presentation) associated with the 'Green' tag
that is active (e..g, the display of a green house)??
On Wed, Dec 7, 2022 at 12:28 PM VisLab @.***> wrote:

...is there a stack buffer in the HED context code to say which events are
current? If so (or else), how are events represented in the context code?
When the HED tags are assembled for an event (by analysis tools), an
(Event-context ..) tag group is created. It has the information about
ongoing "events" in the sense of what tags are active.
The HED validator just checks for correctly matching onsets-offsets
(Python). The onset-offset checking is not yet in the HED-javascript
validator as we decided putting in the library handling was more important.
It is on the todo list.
—
Reply to this email directly, view it on GitHub
https://urldefense.com/v3/__https://github.com/hed-standard/hed-schemas/issues/42*issuecomment-1341319075__;Iw!!Mih3wA!HttsOEnB-hHBch2vSZvEnWRyqmKPPf8w98oGA1fEJZ8VFDx62dovuNypWs_9gqtLXzksfJkgF0p5LR7G0E_eLF5g$,
or unsubscribe
https://urldefense.com/v3/__https://github.com/notifications/unsubscribe-auth/AKN2SFQLI7RN4Y3CG7WW2N3WMDCL7ANCNFSM6AAAAAASUWXQ54__;!!Mih3wA!HttsOEnB-hHBch2vSZvEnWRyqmKPPf8w98oGA1fEJZ8VFDx62dovuNypWs_9gqtLXzksfJkgF0p5LR7G0MpXWcN7$
.
You are receiving this because you were mentioned.Message ID:
@.***>

--
Scott Makeig, Research Scientist and Director, Swartz Center for
Computational Neuroscience, Institute for Neural Computation, University of
California San Diego, La Jolla CA 92093-0559, http://sccn.ucsd.edu/~scott

Point events are relevant and useful. All of our representations of
events are "models" of reality. Different models are useful in different
situations.

If HED is to elevate single time-point events to primary status, along with
enduring Events, and timepoint-marking Markers, then a new marker category
should be created for use instead of 'Onset'.   ('Bang'? 'Justnow'?
'Mar'?  or just  '!'? - I'd prefer the last one).
This would handle (unfortunate) cases (such as button presses) in which no
duration is given, either explicitly (Offset) or implicitly (duration).
On Wed, Dec 7, 2022 at 12:33 PM VisLab @.***> wrote:

HED does not consider events as ever having 0 duration, though putting an
actual or implied 0 in the Duration column of an events/tsv file entry will
in effect say that -- good example: button press responses, which have
always been (erroneously) treated by the field as zero-duration events.
I'll have to disagree with this statement. Model 1 is for "point" events.
Point events are relevant and useful. All of our representations of events
are "models" of reality. Different models are useful in different
situations.
—
Reply to this email directly, view it on GitHub
https://urldefense.com/v3/__https://github.com/hed-standard/hed-schemas/issues/42*issuecomment-1341324704__;Iw!!Mih3wA!D5U2hqlAcxCJYH96hcF0KfCWDAQwuDdC7NCwYswyRfi-Y2oRh9f-tfK7wpv66Lwx-sZgN466015fuHHwnPQPHG_Q$,
or unsubscribe
https://urldefense.com/v3/__https://github.com/notifications/unsubscribe-auth/AKN2SFQXMDOBF3RH7ZXEQ5DWMDC5DANCNFSM6AAAAAASUWXQ54__;!!Mih3wA!D5U2hqlAcxCJYH96hcF0KfCWDAQwuDdC7NCwYswyRfi-Y2oRh9f-tfK7wpv66Lwx-sZgN466015fuHHwnBVdWZd_$
.
You are receiving this because you were mentioned.Message ID:
@.***>

--
Scott Makeig, Research Scientist and Director, Swartz Center for
Computational Neuroscience, Institute for Neural Computation, University of
California San Diego, La Jolla CA 92093-0559, http://sccn.ucsd.edu/~scott

@neuromechanist

Having all models that imply a duration defined as an Onset-Offset pair and model 4 as duration would result in a BIDS events table with n/a for the duration column for all rows except the sub-process partitions. I think this might be unnecessarily inconsistent, not optimal for the human reader, and confuses them why some intervals are provided as Onset-Offset while some have duration.

Model 4 is strictly for a point annotation with an implied 0 duration. Using a Duration with it would be an error.
I guess we also need another model for a strict point event with no parent relationship to other events.
We may need to make another pass at disentangling these relations.

@VisLab

Model 4: Process with sub-process partition -- the onset of the next element of the partition marks offset of previous.
Use case: A movie consists of scenes...scenes consist of shots....

I wonder how a sub-process can be a point annotation with an implied 0 duration. Also, if the "onset of the next element is the offset of the previous," would not make sense for a point annotation with 0 duration, as there is no onset or offset.
In the case of the provided example, single frames of a movie can be called 0 duration. But if the sequences/scenes of the movie can also be called sub-processes that fit model 4.
Words in a sentence also fit model 4, and I believe that every sub-process of a sentence is not 0 duration.
Anyways, my main point was not about which model has a duration or not. It was about the need to use the duration column consistently, either for all models with duration or for none.

The BIDS 'Duration' column comes (blindly) from a long history of ERP
experiments in which the stimuli were tones or visual presentations with
constant duration - about 1981, I actually used Galambos' Grass? analogue
stimulator with a Duration dial... I convinced Galambos to get a lab
computer not long after ...
Scott
On Thu, Dec 8, 2022 at 9:52 AM VisLab @.***> wrote:

@smakeig
https://urldefense.com/v3/__https://github.com/smakeig__;!!Mih3wA!CoTlazFBlBijov-Ljw2rgF11OPHU9hSeZDvq7EnYtHhZI4zod0DWCSgX3Ikmvd3VYDz0AQo-hfJN3rMUvFtf_LHq$
I feel quite against combining events into a single HED string.
Rather, for your example:
xx.xxx Sensory-event, Experimental-stimulus, (Def/Face-image, Onset) %
one event per entry (row) in the events.tsv table
HED is a system of assigning annotations to stuff. This stuff could
be lines in .tsv files such as the events.tsv or participants.tsv. The
stuff can be other things --- depending on what analysis tools are
developed.
HED has tags that allow tools to infer various event models when HED tags
are applied to event files.
The issue of what information is contained in each line of a events.tsv
file is a different problem.
One of the reasons that we are developing the remodeling tools is that
we recognized that the form of the events.tsv file needed for a
particular analysis varies substantially across applications. People who
share data cannot anticipate the optimal form of the event file needed for
every application.
I absolutely agree with the importance of actually recording the
information. How it is represented is less important as long as it is
transformable.
The key is to assure that all of the needed information is recorded in
some form. The remodeling tools can unfold these compound events as needed.
—
Reply to this email directly, view it on GitHub
https://urldefense.com/v3/__https://github.com/hed-standard/hed-schemas/issues/42*issuecomment-1342852966__;Iw!!Mih3wA!CoTlazFBlBijov-Ljw2rgF11OPHU9hSeZDvq7EnYtHhZI4zod0DWCSgX3Ikmvd3VYDz0AQo-hfJN3rMUvNqf3zO5$,
or unsubscribe
https://urldefense.com/v3/__https://github.com/notifications/unsubscribe-auth/AKN2SFSXXKF3GD54IYZHINLWMHYZHANCNFSM6AAAAAASUWXQ54__;!!Mih3wA!CoTlazFBlBijov-Ljw2rgF11OPHU9hSeZDvq7EnYtHhZI4zod0DWCSgX3Ikmvd3VYDz0AQo-hfJN3rMUvGGsm7qU$
.
You are receiving this because you were mentioned.Message ID:
@.***>

--
Scott Makeig, Research Scientist and Director, Swartz Center for
Computational Neuroscience, Institute for Neural Computation, University of
California San Diego, La Jolla CA 92093-0559, http://sccn.ucsd.edu/~scott

The current version of the HED specification has a description of how the Duration tag models events of temporal extent.
HED specification for Duration
Validators don't need to do anything special with Duration.  Tools should add the tags grouped with it to the Event-context group during analysis.  The Duration doesn't require a definition.
Please comment.


[TACHYON-572, TACHYON-573, TACHYON-575] style fixes

https://tachyon.atlassian.net/browse/TACHYON-572
https://tachyon.atlassian.net/browse/TACHYON-573
https://tachyon.atlassian.net/browse/TACHYON-575

@miasantreble
Thanks for the patch! In the future please try to open one PR per JIRA ticket unless absolutely necessary. Also, these tickets are new contributor tasks that are to help new developers familiarize themselves with the pull request process. Please limit yourself to beginner tasks and above after you have done two or more PRs.

@calvinjia sounds good, I was searching for unassigned open tickets and didn't pay attention to the labels. I will be looking for beginner & intermediate tickets in the future, thanks for the reminder

+1 LGTM

+1 LGTM.  Please close these issues once your PRs are merged.

We can’t automatically merge this pull request.


Zap remove ember af maximum aps payload length

Problem
Ember has a limit on the actual message payload. Currently this limit is 82 and it starts to be
too small for reading List attributes.
Futhermore, there is a method named emberAfMaximumApsPayloadLength use to calculate the size
of the payload depending on some routing parameters as far as I can tell. It is unclear to me
that CHIP will ever use those.
Summary of changes

Remove emberAfMaximumApsPayloadLength and some dependencies
Upgrade the maximum payload size from 82 to 1024

is the 1K bss size increase expected?

I see in message.cpp:
// these variables are for storing responses that are created by zcl-utils
// in functions called from emberIncomingMsgHandler. The response is sent
// from emberAfTick (meant to be called immediately after emberTick).
// There is only space for one response as each call to emberTick will
// only result in a single call to emberIncomingMsgHandler. If the device
// receives multiple ZCL messages, the stack will queue these and hand
// these to the application via emberIncomingMsgHandler one at a time.
EmberApsFrame emberAfResponseApsFrame;
NodeId emberAfResponseDestination;
uint8_t appResponseData[EMBER_AF_RESPONSE_BUFFER_LEN];
uint16_t appResponseLength;

I wonder if instead we could make the app use packetbuffers for data  storage rater than relying on globals.


Compilation errors in VS 2017

I got some compilation errors on Windows with VS 2017 and<EMAIL_ADDRESS>The problem appears to be that some enum values used by mfem are #defined in windows files but I had trouble tracking down the exact location.
Specifically:

in general/mem_manager.hpp, VS had a problem with REGISTERED
in fem/data_collection.hpp, VS had a problem with NO_ERROR

In both case, I was able to resolve the problems locally by #undef-ing the problematic values before they were used by mfem.
E.g.
// At top of general/mem_manager.hpp
#if defined(_WIN32) && defined(REGISTERED)
  // REGISTERED is defined in a Windows header, undefine it to use in Memory class
  #undef REGISTERED
#endif

// At top of fem/datacollection.hpp
#if defined(_WIN32) && defined(NO_ERROR)
  // NO_ERROR is defined in a Windows header, undefine it to use in DataCollection
  #undef NO_ERROR
#endif

I see two ways of resolving this:

Changing the names of these enum values in mfem
#undef-ing them in mfem, either at the top of the appropriate headers (as above), or in a central mfem location, like config.hpp.

Hmm, I'll have to take a closer look but our Appveyor CI (which uses VS 2017 as well) seems to compile and run fine. See for example the recent checks in PR #917.

@kennyweiss and @v-dobrev -- were you able to resolve this?

I have not looked more into this.
@kennyweiss, just to clarify: did you see the issue during the compilation of MFEM or when using it in code that uses MFEM? I think the conflicts may be due to header(s) which are not included by MFEM (but by your code) since the appveyor tests work fine. Is that the case?

ping: @kennyweiss

I haven't built MFEM on windows since I created the ticket.
@v-dobrev -- your suggestion makes sense.
Since this does not seem to be affecting anyone else, I'll close the ticket, and reopen in the future, if necessary.


Bug: odd behavior when select filters

Describe the bug
If you go to highlight page, and select filters, you can see a resize of the feed there:
https://github.com/open-sauced/insights/assets/18273833/8b2f8adf-7814-48d3-b53c-c9ceb4f2edb7
Steps to reproduce

go to : https://insights.opensauced.pizza/feed
open debugger mode and set screen to nest hub max (I faced it on normal screen as well)
choose filters and change them.

Browsers
No response
Additional context (Is this in dev or production?)
No response
Code of Conduct

[X] I agree to follow this project's Code of Conduct

Contributing Docs

[ ] I agree to follow this project's Contribution Docs

Hello @a0m0rajab and @brandonroberts,
I wanted to bring to your attention PR https://github.com/open-sauced/insights/pull/1553. This PR has successfully addressed the mentioned issue.

@a0m0rajab and @brandonroberts, IMHO I think this PR https://github.com/open-sauced/insights/pull/1553 has fixed this Issue. What do you think?

Hi! @a0m0rajab
I looked into this issue. I know why this happens but not sure about what the right solution is.
This happens because of the text inside the posts. If the text contains a large word, it tries to take up more space. When you changed filters, some of the posts in those filtered data must have long words or links.
highlights-posts-issue.webm
Possible solutions

Giving a maximum length to the display name of the link. An ellipse at the end.
Giving a fixed width to the post. Don't know about this one.

Hello @a0m0rajab,
Could you verify if the reported issue persists, as indicated in the provided link: https://insights.opensauced.pizza/feed?
I'm unable to replicate the issue on my end. Thank you.

This has been fixed but I couldn't find the pr though :sweat_smile:


[EKS] Return path for NodePort traffic is broken for EKS clusters running Antrea

Describe the bug
@Dyanngg reported to me that the Jenkins CI job for Antrea on EKS (policy only mode) was sometimes failing because of the following conformances tests:
Failed tests:
[sig-network] Services should be able to create a functioning NodePort service [Conformance]
[sig-network] Services should be able to change the type from ExternalName to NodePort [Conformance]

We investigated the issue and were able to track it down.
To Reproduce
Create an EKS cluster with 2 nodes using t3.medium instances. Apply the following yaml manifest:
apiVersion: v1
kind: Service
metadata:
  name: test-service
spec:
  type: NodePort
  selector:
    app: MyApp
  ports:
    - port: 80
      targetPort: 9376
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: test-deployment
spec:
  selector:
    matchLabels:
      app: MyApp
  replicas: 18
  template:
    metadata:
      labels:
        app: MyApp
    spec:
      containers:
      - image: e2eteam/agnhost:2.12
        name: agnhost
        command: ["/agnhost", "serve-hostname"]

SSH into one of the Nodes and curl the Service using the other Node's IP: curl <other Node IP>:<servicePort>. Repeat several times until it fails.
It will fail as soon as the Pod backend to which the request is load-balanced to is a local Pod (local to the "other Node") which is assigned to a secondary ENI. This is why we use so many replicas: t3.medium instances can have up to 6 IPv4 addresses per ENI (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html), and we need to make sure that a good fraction of Pods are assigned to a secondary ENI.
This was a well-known issue early on with the Amazon K8s VPC CNI: https://github.com/aws/amazon-vpc-cni-k8s/issues/75, which was addressed by this PR: https://github.com/aws/amazon-vpc-cni-k8s/pull/130. The fix was to add the following iptables rules in the mangle table:
-A PREROUTING -i eth0 -m comment --comment "AWS, primary ENI" -m addrtype --dst-type LOCAL --limit-iface-in -j CONNMARK --set-xmark 0x80/0x80
-A PREROUTING -i eni+ -m comment --comment "AWS, primary ENI" -j CONNMARK --restore-mark --nfmask 0x80 --ctmask 0x80

which combined with the first ip rule below:
1024:	from all fwmark 0x80/0x80 lookup main
1536:	from <IP_ADDRESS> to <IP_ADDRESS>/16 lookup 2
1536:	from <IP_ADDRESS> to <IP_ADDRESS>/16 lookup 2

ensure that NodePort reverse traffic uses the main routing table and goes out of the correct interface (eth0), instead of using the "default" routing table for traffic sent by Pods assigned to a secondary ENI (table 2 or 3), which would mean traffic goes out of the secondary ENI (eth1 or eth2) - such traffic is dropped.
However, in the case of the Antrea "policyOnly" mode, this rule never applies:
-A PREROUTING -i eni+ -m comment --comment "AWS, primary ENI" -j CONNMARK --restore-mark --nfmask 0x80 --ctmask 0x80

since reverse traffic enters the host network namespace through gw0 and not the eniX Pod interface created by the AWS CNI.
I believe that a possible fix would be to change the second rule to select inout packets from gw0. The rule would become:
-A PREROUTING -i gw0 -m comment --comment "AWS, primary ENI" -j CONNMARK --restore-mark --nfmask 0x80 --ctmask 0x80

I have tested this possible fix and it seems to resolve that specific issue. However, before we submit a patch, I'd like to get an opinion from @suwang48404 since he implemented the "policyOnly" mode and he is the most familiar with this issue.
Versions:
Antrea version:
===> Version information <===
VERSION: v0.7.0-dev
GIT_SHA: ee4a32f
GIT_TREE_STATE: clean
RELEASE_STATUS: unreleased
DOCKER_IMG_VERSION: v0.7.0-dev-ee4a32f

** Additional Context **
To test the fix, you just need to run the following on the EKS worker nodes:
sudo iptables -t mangle -D PREROUTING -i eni+ -m comment --comment "AWS, primary ENI" -j CONNMARK --restore-mark --nfmask 0x80 --ctmask 0x80
sudo iptables -t mangle -A PREROUTING -i gw0 -m comment --comment "AWS, primary ENI" -j CONNMARK --restore-mark --nfmask 0x80 --ctmask 0x80

@McCodeman FYI

Thinking about this a bit more, it probably makes sense to add the new iptables rule without deleting the one installed by the AWS CNI, just in case they monitor & reconcile rules periodically like kube-proxy does (or if they don't do it now, in case they start doing it in the future).

Note that after the fix, the conformance tests are still failing, because they also check that a NodePort service can be accessed using the Node's externalIP. The failure is expected. See #690


Help?  Multiple has many associations

I have a database setup with a students table. The students table has a one to many relationship with a few other tables. ie a student can have multiple subjects. but also a student can have multiple awards.
Here is the code:
class student extends Model {
	static $table_name = 'students';
	static $primary_key = 'username';
	static $datetime_format = 'Y-m-d H:i:s'; // https://stackoverflow.com/questions/17222180/phpactiverecord-incorrect-datetimeformat
	static $has_many = [
		[
			#'subjects', 'foreign_key' => 'studentUsername',
			['subjects', 'foreign_key' => 'studentUsername'],
			['academicAwards', 'foreign_key' => 'studentUsername'],
			['nonAcademicAwards', 'foreign_key' => 'studentUsername'],
			['sportParticipation', 'foreign_key' => 'studentUsername', 'class_name' => 'sportParticipation'],
			['leadershipPositions', 'foreign_key' => 'studentUsername'],
			['houseParticipation', 'foreign_key' => 'studentUsername', 'class_name' => 'houseParticipation']
		]
	];
}

class subject extends Model {
	static $table_name = 'studentSubjects';
	static $datetime_format = 'Y-m-d H:i:s'; // https://stackoverflow.com/questions/17222180/phpactiverecord-incorrect-datetimeformat
	static $belongs_to = [
		['student']
	];
}

class academicAward extends Model {
	static $table_name = 'academicAwards';
	static $datetime_format = 'Y-m-d H:i:s'; // https://stackoverflow.com/questions/17222180/phpactiverecord-incorrect-datetimeformat
	static $belongs_to = [
		['student']
	];
}

class nonAcademicAward extends Model {
	static $table_name = 'nonAcademicAwards';
	static $datetime_format = 'Y-m-d H:i:s'; // https://stackoverflow.com/questions/17222180/phpactiverecord-incorrect-datetimeformat
	static $belongs_to = [
		['student']
	];
}

class sportParticipation extends Model {
	static $table_name = 'sportParticipation';
	static $datetime_format = 'Y-m-d H:i:s'; // https://stackoverflow.com/questions/17222180/phpactiverecord-incorrect-datetimeformat
	static $belongs_to = [
		['student']
	];
}

class leadershipPosition extends Model {
	static $table_name = 'leadershipPositions';
	static $datetime_format = 'Y-m-d H:i:s'; // https://stackoverflow.com/questions/17222180/phpactiverecord-incorrect-datetimeformat
	static $belongs_to = [
		['student']
	];
}

class houseParticipation extends Model {
	static $table_name = 'houseParticipation';
	static $datetime_format = 'Y-m-d H:i:s'; // https://stackoverflow.com/questions/17222180/phpactiverecord-incorrect-datetimeformat
	static $belongs_to = [
		['student']
	];

When I run the code as above,  I get the following error:
Warning: trim() expects parameter 1 to be string, array given in vendor\php-activerecord\php-activerecord\lib\Inflector.php on line 116

Notice: Uninitialized string offset: 0 in vendor\composer\ClassLoader.php on line 317

Notice: Uninitialized string offset: 0 in vendor\composer\ClassLoader.php on line 349

If I have :
class student extends Model {
		static $table_name = 'students';
		static $primary_key = 'username';
		static $datetime_format = 'Y-m-d H:i:s'; // https://stackoverflow.com/questions/17222180/phpactiverecord-incorrect-datetimeformat
		static $has_many = [
			[
				'subjects', 'foreign_key' => 'studentUsername',
			]
		];
	}

It works fine, except it only works for the single relationship; one student to many subjects.

most likely you will need to specify the name of the class
['subjects', 'foreign_key' => 'studentUsername', 'class_name' => 'YourClass']
and that there were no such problems must be properly called a table and model

Thanks for your quick reply?
did you mean like this?
static $has_many = [
			[
				['subjects', 'foreign_key' => 'studentUsername', 'class_name' => 'subject'],
				['academicAwards', 'foreign_key' => 'studentUsername','class_name' => 'academicAward'],
				['nonAcademicAwards', 'foreign_key' => 'studentUsername','class_name' => 'nonAcademicAward'],
				['sportParticipation', 'foreign_key' => 'studentUsername', 'class_name' => 'sportParticipation'],
				['leadershipPositions', 'foreign_key' => 'studentUsername','class_name' => 'leadershipPosition'],
				['houseParticipation', 'foreign_key' => 'studentUsername', 'class_name' => 'houseParticipation']
			]
		];

Unfortunately that gives the same error

Sorry I should also add the fatal error in both cases is: Class \ does not exist

Thanks I have figured it out, I accidentally added an extra array


Update syn to 2.x

sort_by_derive still depends on syn 1.0.99, but it was updated to 2.x and has breaking changes.
Unfortunately https://astexplorer.net/ isn't updated yet - such tool helps to understand how statements are decomposed into structs. There are probably other tools - or maybe even some custom debug printing could be helpful enough.

fixed in #16


Add Logger

ToDo[Tasklist]/Statement/Question

[x] Implement a practical logger

Description
Just for precaution if there are behaviours that are better understandable when you see the whole history of events/data/function flow.
Remark
Don't overuse! Compromises performance by a lot!

already done


Repo sync for protected CLA branch

The pull request is created from main637860728039775681 to main to fix git push error for protected CLA branch

@opbld17 : Thanks for your contribution! The author(s) have been notified to review your proposed change.


Reverse functionality

Was wondering about doing the opposite of this and having a tableview nested inside a collection view cell. would it just be replacing the tableview delegates with the collection view and making the tableView delegates the extension of the class ?

Hey there! Interesting idea – I honestly have never thought about putting a table view in anything other than a view controller. But yeah, I think your approach should work. Let me know if you run into trouble.

Hi Ash, I seem to have completed this idea (visually) however it seems as though the nested tableView's delegate methods are not being called. Unfortunately I'm not able to post code (privacy issues) and obviously this would make it difficult for you to assist, however I was wondering if you have any thoughts on the matter ?

I would set breakpoints/print to make sure that the delegate/datasource properties of the table view are indeed set (and not nil). Then I would make sure that they're set to what I expect them to be set to, which should get you there. Good luck :+1:

my thoughts exactly - I placed 'print' inside the cellForRowAtIndexPath however this line is never executed hence making me think that the delegate method never gets called.

Definitely, so next you should set a breakpoint where you're setting the delegate/datasource of the table view.

So it seems my collection view delegate method "willDisplayCell" that is executing the "setTableViewDataSourceDelegate" method is never executed (as found by break point). The only thought as to why is the warning's I receive:

the behavior of the UICollectionViewFlowLayout is not defined because:
the item width must be less than the width of the UICollectionView minus the section insets left and right values, minus the content insets left and right values.
-The relevant UICollectionViewFlowLayout instance is <UICollectionViewFlowLayout: 0x1390a0500>, and it is attached to <UICollectionView: 0x138140a00; frame = (-12 8; 407 494); clipsToBounds = YES; autoresize = RM+BM; gestureRecognizers = <NSArray: 0x13909fc10>; layer = <CALayer: 0x13909df10>; contentOffset: {0, 0}; contentSize: {600, 20}> collection view layout: <UICollectionViewFlowLayout: 0x1390a0500>.
Make a symbolic breakpoint at UICollectionViewFlowLayoutBreakForInvalidSizes to catch this in the debugger.

Hmm. Your collection view delegate should implement the following method:
- (void)collectionView:(UICollectionView *)collectionView willDisplayCell:(UICollectionViewCell *)cell forItemAtIndexPath:(NSIndexPath *)indexPath

And in there, you can set the delegate/datasource of the table view. Does that make sense?

Makes perfect sense - I'm already doing that. Within the delegate method i perform this method (similar to your tutorial)

collectionViewCell.setTableViewDataSourceDelegate(self, forSection: indexPath.section)`

Is the delegate method itself getting called? Keep testing your assumptions: somewhere in there, something is not behaving as you expect. With enough trial and error, you'll find it 😸
--
Ash Furrow
iOS Developer, Author
http://ashfurrow.com

On Jan 13, 2016, at 11:01 PM, vTrip<EMAIL_ADDRESS>wrote:
Makes perfect sense - I'm already doing that. Within the delegate method i perform this method (similar to your tutorial)
collectionViewCell.setTableViewDataSourceDelegate(self, forSection: indexPath.section)`
—
Reply to this email directly or view it on GitHub.

- (void)collectionView:(UICollectionView *)collectionView willDisplayCell:(UICollectionViewCell *)cell forItemAtIndexPath:(NSIndexPath *)indexPath
Never gets called no, which is what i was trying to get through. I have no clue why it doesn't get call, haha so weird.

Double check that the collection view's delegate is getting set somewhere, either in a storyboard or in a view controller?

Solved !!!
Turns out - after the guidance of you last comment - even though i had the delegate and datasource set in the Storyboard and the datasource set in code, I still had to set the delegate in code on the collection view.
Thank you for the assist, one last thing would be an explanation for all that. Is it common practice to have to set the delegate in code as you do with the data source ? For example.
collectionView.datasource = self
collectionView.delegate = self
When it comes to implementing a table view I'm only executing the datasource setting line. Thought this would be similar with collectionViews.

Hmm, no it's typical to have to set both. I'm curious why it was working with the table view – maybe they were already set, and setting only the datasource again didn't have any effect? Not sure.
Anyway, glad you got it figured out! :tada:

Not sure if i should open a new issue. But i have another issue.
The table view cell's are acting normally when implementing the  func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) however the delete button does not get displayed and instead is just seen as a blank white space.

Hmm, honestly I'm not sure. Like I said, I've not used table views outside of the context of "this table view fills the entire screen"-style. I would double-check that the code works inside a table view project by itself first, to eliminate the possibility of an error there. If it works on its own, but not in a collection view cell, then something spooky is likely going on.

Hi ash, just wanted to update you since you've been so helpful and I appreciate the time you have put into helping out.
Turns out everything was working fine and the reason I couldn't click the 'delete' button even though the cell would slide right to left like normal was because the collection view bounds weren't correct and caused the table view cell to be displayed off the screen.
Therefore when I would slide right to left the cell was acting accordingly however the delete button was displaying off the screen.
Again, thanks again for the assist, it's looking to be a successful integration functionality wise of a collectionView with a nested tableView in the collectionView cell's.
Best,
Vince

Awesome, glad everything worked out! I'm going to close this issue – feel free to re-open it or open a new one :bow:


Check coordinator status from 10101 wallet (backend)

Introduce a mechanism for communicating service status to the frontend.

Communicate about the orderbook status (websocket stream connection) and
coordinator status (responsive on HTTP API).

Verify in e2e test that the status is updated correctly.

Note: The frontend part is well underway, it will come in a separate PR.

bors r+


test if biosmaple_set from gold_nmdc_pipeline.py passes 7.1.6 validation

See https://github.com/microbiomedata/sample-annotator/blob/main/sample_annotator/clients/gold_nmdc_pipeline.py

Latest JSON output that can be generated after running the updated transformation script here: https://github.com/microbiomedata/sample-annotator/pull/113 does in fact pass v7.1.6 validation.

does in fact pass v7.1.6 validation

Unfortunately, the validation isn't catching cases in which the nmdc prefix has been used with GOLD local ids.

@sujaypatil96  can this be closed?


Only highlights the "first letter" instead of the whole words

VS Code version
1.62.2
Extension version
v2021.11.1422169775
OS type
Windows
OS version
Win10
Python distribution
python.org
Python version
3.9.5
Language server
Pylance
Expected behaviour
highlights the whole words and provides the python.linting message in the popover.

Actual behaviour
Only highlights the "first letter" instead of the whole words and does not provide the python.linting message in the popover.

Steps to reproduce
Using 1.62.2 version of the VSCode.
Logs
No response
Code of Conduct

[X] I agree to follow this project's Code of Conduct

@gonghenghai There is a limitation from the linters themselves here, we don't get the full range from the linters. So, we have no way to know should we cover the entire line or just the character.

The pop-over linter message issue is due to a VS Code UI bug. the hit box size apparently go changed in a recent release, and it does not show that correctly in some scenarios. see here https://github.com/microsoft/vscode/issues/136711
Note that with #17235 we are plaining on making it easier for python community to contribute to linting in the extension.


There is no clear way to find documentation on the likes of ON_HSCROLL, ON_MOUSE_WHEEL and other message map macros

I need to find documentation for how to link the mouse wheel into an MFC message map. I know that ON_HSCROLL macro has a corresponding OnHScroll() function that must be defined. But I can't find specifications on this, or any similar macro I search for. I expect there is an ON_MOUSEWHEEL() macro, and that it links to an OnMouseWheel() function, but I cannot find it.

Document Details
⚠ Do not edit this section. It is required for learn.microsoft.com ➟ GitHub issue linking.

ID: 3e88821a-c5be-d1b2-c21b-8b3b96b75305
Version Independent ID: b29b0e3c-0e33-7d56-8dfa-1f6aa099eac7
Content: Message Maps (MFC)
Content Source: docs/mfc/reference/message-maps-mfc.md
Product: visual-cpp
Technology: cpp-mfc
GitHub Login: @TylerMSFT
Microsoft Alias: twhitney

Hi @omatai, I see this request and have triaged it. Unfortunately, this issue is lower than the many others on my plate and it may be rather a long time before I get to this.

As I look at the work for the next year, it's clear I won't ever be able to get to this. So closing.