AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / user-3357352

OrenIshShalom's questions

Martin Hope
OrenIshShalom
Asked: 2024-11-12 21:08:26 +0800 CST

Chamando seletivamente funções de teste com capsys

  • 5

Posso executar seletivamente test_function_1, substituindo a instrumentação dos meus conftest.pyacessórios 1

def test_function_1(instrumentation: dict[str, float]) -> None:
    assert instrumentation['a'] > instrumentation['b']

def test_function_2(capsys) -> None:
    print("Hello, pytest!")
    captured = capsys.readouterr()
    assert captured.out == "Hello, pytest!\n"

quando tento chamar test_function_2, não sei como passar capsyspara ele 2 :

import tests
import pytest # <--- doesn't help ...

def test_callee_with_instrumentation():
    tests.test_function_1({'a': 110, 'b': 55, 'g': 6000})

def test_callee_with_capsys():
    # tests.test_function_2()              # <--- TypeError: test_function_2() missing 1 required positional argument: 'capsys'
    # tests.test_function_2(capsys)        # <--- NameError: name 'capsys' is not defined 
    # tests.test_function_2(pytest.capsys) # <--- AttributeError: module 'pytest' has no attribute 'capsys'
    pass

test_callee_with_instrumentation()
test_callee_with_capsys()

Tenho quase certeza de que os conftest.pyjogos são irrelevantes, mas para completar:

import pytest

@pytest.fixture(scope='function')
def instrumentation():
    return { 'a': 800, 'b': 620, 'c': 44 }

1 No meu código real, o capsysé um dos muitos parâmetros.

2 Uma pergunta semelhante existe aqui . Não é uma duplicata IMHO, porque estou perguntando sobre testes de execução programática , e não sobre o significado apropriado de capsys.

python
  • 2 respostas
  • 40 Views
Martin Hope
OrenIshShalom
Asked: 2024-10-26 13:58:25 +0800 CST

Por que a tira de elfos não é multiplataforma?

  • 7

Tenho um executável aarch64 elf compilado no meu raspberry pi:

$ file kbgen.elf.aarch64
kbgen.elf.aarch64: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.7.0, BuildID[sha1]=4cf36e84c30ea8e53073bb64cf99df1d82084702, with debug_info, not stripped

Quando tento remover seus símbolos na minha máquina x64 ( wsl ), ele falha:

$ strip kbgen.elf.aarch64
strip: Unable to recognise the format of the input file `kbgen.elf.aarch64'

Isso é estranho, né? Quero dizer, as seções de elfos são "multiplataforma", não são?

# get inside raspberry pi to make sure stripping is ok there
$ ls -l kbgen.elf.aarch64
-rwxr-xr-x 1 oren oren 73257408 Oct 26 08:40 kbgen.elf.aarch64
$ sudo strip kbgen.elf.aarch64
$ ls -l kbgen.elf.aarch64 # <----- size reduced by a half, good !
-rwxr-xr-x 1 root root 36358680 Oct 26 08:42 kbgen.elf.aarch64

# make sure elf was stripped with file utility
$ file kbgen.elf.aarch64
kbgen.elf.aarch64: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.7.0, BuildID[sha1]=4cf36e84c30ea8e53073bb64cf99df1d82084702, stripped
x86-64
  • 1 respostas
  • 46 Views
Martin Hope
OrenIshShalom
Asked: 2024-10-23 17:54:30 +0800 CST

Controlando mensagens do registrador Wai

  • 6

Tenho um yesodservidor web Haskell que funciona bem 1,2 e registra bem 3 :

{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE QuasiQuotes       #-}
{-# LANGUAGE TemplateHaskell   #-}
{-# LANGUAGE TypeFamilies      #-}
{-# LANGUAGE DeriveGeneric     #-}
{-# LANGUAGE DeriveAnyClass    #-}
{-# LANGUAGE OverloadedStrings #-}

import Yesod
import Prelude
import Data.Aeson()
import GHC.Generics
import Data.Text
import Data.Time
import Yesod.Core.Types
import System.Log.FastLogger
import Network.Wai.Handler.Warp

-- Wai stuff
import qualified Network.Wai
import qualified Network.Wai.Logger
import qualified Network.HTTP.Types.Status
import qualified Network.Wai.Middleware.RequestLogger as Wai

data Healthy = Healthy Bool deriving ( Generic )

-- | This is just for the health check ...
instance ToJSON Healthy where toJSON (Healthy status) = object [ "healthy" .= status ]

data App = App

mkYesod "App" [parseRoutes|
/healthcheck HealthcheckR GET
|]

instance Yesod App where
    makeLogger = \_app -> myLogger

getHealthcheckR :: Handler Value
getHealthcheckR = do
    $logInfoS "(HealthCheck)" "Good !"
    returnJson $ Healthy True

myLogger :: IO Logger
myLogger = do
    _loggerSet <- newStdoutLoggerSet defaultBufSize
    formatter <- newTimeCache "[%d/%m/%Y ( %H:%M:%S )]"
    return $ Logger _loggerSet formatter

dateFormatter :: String -> String
dateFormatter date = let
    date' = parseTimeOrError True defaultTimeLocale "%d/%b/%Y:%T %Z" date :: UTCTime
    in formatTime defaultTimeLocale "[%Y/%m/%d ( %H:%M:%S )]" date'

formatter :: Network.Wai.Logger.ZonedDate -> Network.Wai.Request -> Network.HTTP.Types.Status.Status -> Maybe Integer -> LogStr
formatter zonedDate req status responseSize = "[ 17/17/2017 ]\n"

main :: IO ()
main = do
    waiApp <- toWaiApp App
    middleware <- Wai.mkRequestLogger (Wai.defaultRequestLoggerSettings { Wai.outputFormat = Wai.CustomOutputFormat formatter })
    run 3000 $ middleware waiApp

Quando inspeciono os logs, vejo três mensagens, duas delas são minhas

[23/10/2024 ( 15:07:06 )] [Info#(HealthCheck)] Good ! @(main:Main src/Main.hs:41:6)
172.17.0.1 - - [23/Oct/2024:15:07:06 +0000] "GET /healthcheck HTTP/1.1" 200 16 "" "curl/8.9.1"
[ 17/17/2017 ]

De onde vem a 172.17.0.1 - - ...mensagem?! Parece que deve vir da camada Wai (certo?) Mas, novamente, pensei que tinha configurado os logs Wai


1,2 código fonte completo aqui , editado para minimalismo de acordo com os comentários

3 bem, quase!

haskell
  • 1 respostas
  • 28 Views
Martin Hope
OrenIshShalom
Asked: 2024-09-22 17:59:00 +0800 CST

determinar quais módulos do sistema foram carregados

  • 5

Estou tentando determinar quais módulos do sistema Python estão carregados:

In [1]: import sys
In [2]: l = sorted(list(sys.modules.keys()))
In [3]: 'json' in l
Out[3]: True

De acordo com os documentos :

Este é um dicionário que mapeia nomes de módulos para módulos que já foram carregados.

Então pensei que talvez sys imports json, mas isso está errado:

In [4]: json.dumps({'oren': 12})
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
Cell In[4], line 1
----> 1 json.dumps({'oren': 12})

NameError: name 'json' is not defined

O que estou perdendo?

python
  • 1 respostas
  • 43 Views
Martin Hope
OrenIshShalom
Asked: 2023-08-25 20:45:35 +0800 CST

Genéricos T estende U, mas Readonly<T> não

  • 5

IMHO, esta não é uma duplicata desta questão . Aqui está um exemplo mínimo:

class Indexer {
  private readonly someIndex = 200;
  public getIndex() { return this.someIndex; }
}

class Person extends Indexer {}
class Something<T extends Indexer> {
  s = new Map<number, T>();
  insert(t: T){ /* ... */ }
}

const c1 = new Something<         Person >();
const c2 = new Something<Readonly<Person>>();
  • Por um lado, minha classe precisa ser uma subclasseIndexer
  • Por outro lado precisa serReadonly

Não consigo alcançar as duas propriedades juntas:

$ npx tsc --target es2020 main.ts
main.ts:13:26 - error TS2344: Type 'Readonly<Person>' does not satisfy the constraint 'Indexer'.
  Property 'someIndex' is missing in type 'Readonly<Person>' but required in type 'Indexer'.

13 const c2 = new Something<Readonly<Person>>();
                            ~~~~~~~~~~~~~~~~

  main.ts:2:20
    2   private readonly someIndex = 200;
                         ~~~~~~~~~
    'someIndex' is declared here.
typescript
  • 1 respostas
  • 21 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Reformatar números, inserindo separadores em posições fixas

    • 6 respostas
  • Marko Smith

    Por que os conceitos do C++20 causam erros de restrição cíclica, enquanto o SFINAE antigo não?

    • 2 respostas
  • Marko Smith

    Problema com extensão desinstalada automaticamente do VScode (tema Material)

    • 2 respostas
  • Marko Smith

    Vue 3: Erro na criação "Identificador esperado, mas encontrado 'import'" [duplicado]

    • 1 respostas
  • Marko Smith

    Qual é o propósito de `enum class` com um tipo subjacente especificado, mas sem enumeradores?

    • 1 respostas
  • Marko Smith

    Como faço para corrigir um erro MODULE_NOT_FOUND para um módulo que não importei manualmente?

    • 6 respostas
  • Marko Smith

    `(expression, lvalue) = rvalue` é uma atribuição válida em C ou C++? Por que alguns compiladores aceitam/rejeitam isso?

    • 3 respostas
  • Marko Smith

    Um programa vazio que não faz nada em C++ precisa de um heap de 204 KB, mas não em C

    • 1 respostas
  • Marko Smith

    PowerBI atualmente quebrado com BigQuery: problema de driver Simba com atualização do Windows

    • 2 respostas
  • Marko Smith

    AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos

    • 1 respostas
  • Martin Hope
    Fantastic Mr Fox Somente o tipo copiável não é aceito na implementação std::vector do MSVC 2025-04-23 06:40:49 +0800 CST
  • Martin Hope
    Howard Hinnant Encontre o próximo dia da semana usando o cronógrafo 2025-04-21 08:30:25 +0800 CST
  • Martin Hope
    Fedor O inicializador de membro do construtor pode incluir a inicialização de outro membro? 2025-04-15 01:01:44 +0800 CST
  • Martin Hope
    Petr Filipský Por que os conceitos do C++20 causam erros de restrição cíclica, enquanto o SFINAE antigo não? 2025-03-23 21:39:40 +0800 CST
  • Martin Hope
    Catskul O C++20 mudou para permitir a conversão de `type(&)[N]` de matriz de limites conhecidos para `type(&)[]` de matriz de limites desconhecidos? 2025-03-04 06:57:53 +0800 CST
  • Martin Hope
    Stefan Pochmann Como/por que {2,3,10} e {x,3,10} com x=2 são ordenados de forma diferente? 2025-01-13 23:24:07 +0800 CST
  • Martin Hope
    Chad Feller O ponto e vírgula agora é opcional em condicionais bash com [[ .. ]] na versão 5.2? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench Por que um traço duplo (--) faz com que esta cláusula MariaDB seja avaliada como verdadeira? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng Por que `dict(id=1, **{'id': 2})` às vezes gera `KeyError: 'id'` em vez de um TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos 2024-03-20 03:12:31 +0800 CST

Hot tag

python javascript c++ c# java typescript sql reactjs html

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve