我知道可以在 setup.py 中使用extra-require. 现在我问自己是否有可能以一种您可以选择要安装的子包的方式将包标记为可选?有没有办法将可选依赖项映射到可选包。
例如,如果我有一个名为项目 A 的项目和这个包结构:
Project
--subPackage 1
--subPackage 2
--subPackage 3
Run Code Online (Sandbox Code Playgroud)
我想将子包 2 和 3 标记为可选,以便默认情况下不安装这些包。但是如果一个子包是通过 pip 或项目 B 的要求指定的,它应该与依赖项一起安装。
因此,项目 B 的预期行为应如下所示:
项目 B 的 setup.py:
setup(
name='Project B',
version='0.0.0',
install_requires=["ProjectA"])
Run Code Online (Sandbox Code Playgroud)
结果只安装了带有子包 1 的项目 1。但是,如果我将install_requires行更改为install_requires=["ProjectA[Subpackage2]"]. 项目 A 与子包 1 和 2 一起安装,并具有子包 1 和 2 的给定要求。
这是否可以为项目 A 创建一个 setup.py 来存档此行为?
目前我尝试在 JPA 的帮助下从 web api 存储一些新闻。我需要存储 3 个实体:网页、新闻帖子和返回新闻帖子的查询。我为三人各准备了一张桌子。我的简化 JPA 实体如下所示:
@Entity
@Data
@Table(name = "NewsPosts", schema = "data")
@EqualsAndHashCode
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class NewsPost {
@Id
@Column(name = "id")
private long id;
@Basic
@Column(name = "subject")
private String subject;
@Basic
@Column(name = "post_text")
private String postText;
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.MERGE)
@JoinColumn(name = "newsSite")
private NewsSite site;
@ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.MERGE)
@JoinTable(name = "query_news_post", joinColumns = @JoinColumn(name = "newsid"), inverseJoinColumns = @JoinColumn(name = "queryid"))
private Set<QueryEntity> …Run Code Online (Sandbox Code Playgroud) 我目前尝试将一个类测试为通常在构造函数中初始化数据库连接的间谍对象。该类的简化版本如下所示。
class classToTest(){
val connection:Connection
init {
connection = DatabaseConnection(url="127.0.0.1")
}
fun methodA():Int{
return 3
}
}
Run Code Online (Sandbox Code Playgroud)
现在我尝试以下列方式(简化)测试我的 classToTest 的方法。
class TestClass(){
var connection = mockk<DatabaseConnection>()
var dbh = spyk(ClassToTest())
@Test
fun testMethodA(){
assertEquals(dbh.methodA,3)
}
}
Run Code Online (Sandbox Code Playgroud)
现在的问题是我的测试无法启动,因为我不知道如何覆盖可能使用连接模拟而不是初始化连接对象的 init 函数。感谢帮助。
嘿伙计们我在谷歌上搜索了一下,并在这里阅读了一些关于堆栈溢出的主题,但没有一个云真的帮助我,所以我希望你能帮助我.我有一个UIWebView显示本地保存的PDF,它工作得很好,但我也想在加载PDF时设置缩放级别.我这样解决了.
override func viewDidAppear(animated: Bool) {
WebView.scalesPageToFit = true
if(defaults.objectForKey("positionY") != nil){
WebView.scrollView.setZoomScale(defaults.objectForKey("zoomlevel") as! CGFloat, animated: false)
let offest = CGPoint(x: defaults.objectForKey("positionX") as! CGFloat, y: defaults.objectForKey("positionY") as! CGFloat)
WebView.scrollView.setContentOffset(offest, animated: false)
print(defaults.objectForKey("zoomlevel") as! CGFloat)
}
Run Code Online (Sandbox Code Playgroud)
但这并不是很好,因为它对用户来说看起来很糟糕,所以我试图将我的代码移动到ViewWillAppear,但是它不再起作用了,并且pdf没有缩放.感谢任何解决方案的想法:)
编辑,因为我在下面写了一条评论,我在打印后打印了Zoomscale的值.
WebView.scrollView.setContentOffset(offest, animated:false)
println(defaults.objectForKey("zoomlevel") as! CGFloat)
println(WebView.scrollView.zoomScale)
Run Code Online (Sandbox Code Playgroud)
如果我在ViewWillAppear或ViewDidLoad中执行此操作,则第一个值是保存的值,如1.82366,第二个值仍为1.0.如果我在ViewDidAppear中调用它,则第一个和第二个值相等,除了View的第一个外观(app start).因此,如果它启动App,它就像上面描述的ViewWillAppear一样,但如果我通过segue从另一个ViewController返回,它适用于ViewDidAppear.
ios ×1
java ×1
jpa ×1
kotlin ×1
mocking ×1
mockk ×1
pip ×1
python ×1
python-3.x ×1
setup.py ×1
swift ×1
uiscrollview ×1
unit-testing ×1